菜鸡shader2:L2基于BlinnPhong假环境反射,生锈材质

news/2025/3/15 3:48:01/

目录

  • 假环境反射材质(不锈钢材质)
  • 生锈材质

假环境反射材质(不锈钢材质)

先放上最终图:
在这里插入图片描述

处理高光部分:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 这里是phong模型不是blinnphong。
  • 应用观察方向的反射方向和光方向点乘算出高光,然后重映射取值范围为[0,1],为后面采样纹理做准备,纹理坐标的范围就是[0,1],再乘一个系数,控制整个纹理采样后的结果,应该成为强度。

然后是正式的phong模型:
在这里插入图片描述
在这里插入图片描述

将上面两个部分加起来,就能得到最后的效果:
在这里插入图片描述

生锈材质

先放最终效果:
在这里插入图片描述

  • 原理其实是使用噪声图作为蒙版,分底色和生锈色,蒙版的部分就是生锈色。要用蒙版就是使用lerp函数。
  • 然后还加上了菲涅尔的效果,效果不是很明显,应该还是能看出来,材质球周围一圈明显亮一点。

首先是菲涅尔项:
在这里插入图片描述

  • 加上了菲涅尔项的控制系数和颜色,就不细说了。

然后是blinnphong项了:
在这里插入图片描述

  • BlinnPhong项使用的是半程向量(光方向和观察方向的中间向量,也就是两个相加后归一化的向量)和法向量点乘的结果。
  • BlinnPhong项计算的是高光项,也就是镜面反射光,和观察方向是有关的。

然后是兰伯特项:
在这里插入图片描述

  • 法向量和光方向点乘,兰伯特项是用来计算漫反射光照的,也就是环境光,和观察方向无关。

然后是蒙版项:
在这里插入图片描述
在这里插入图片描述

  • 控制uv坐标去采样噪声纹理,添加一个阈值,来对采样后的结果进行分层,高于阈值的返回0,低于阈值的返回1,让黑白对比更明显。
  • Desaturate:输出一个 [Col] 的不饱和版本。[Des]决定怎样去饱和度。值 1 表示完全去饱和,0.5 表示半去饱和,0 表示无去饱和。

最后运算:
在这里插入图片描述

  • add是高光项,兰伯特项和菲涅尔项三者相加的结果,作为lerp函数的a层,也就是底色层。
  • add的结果乘上一个高光颜色,作为lerp函数的b层,也就是生锈层。
  • 蒙版项作为lerp的t层,也就是遮罩。

完整的连连看:
在这里插入图片描述


http://www.ppmy.cn/news/61674.html

相关文章

UDS入门

UDS(Unified Diagnostic Services,统一诊断服务)是一种国际标准的汽车诊断通信协议。它定义了汽车电子控制单元(Electronic Control Unit,简称ECU)与诊断设备之间进行故障诊断、编程和测试的通信过程。UDS协…

k8s笔记25--k8s 跨主机网络flannel

k8s笔记25-- k8s 跨主机网络flannel 简介不同机器上网络设备区别flannel 网络常见三大后端模式UDPVXLANhost-gw 如何查看集群用哪种网络模式阿里云flannel容器网络 alloc参考文档 简介 在单机环境下,容器间可以通过 docker0 网桥来通信,但其无法实现不同…

jdk8和jdk17同时存在时的【环境配置】

一、先进行环境下载: jdk8:https://www.oracle.com/cn/java/technologies/javase/javase8u211-later-archive-downloads.html jdk17:https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html PS:jdk8在下载结束,安装…

Python | 人脸识别系统 — 人脸比对 代码部分

本博客为人脸识别系统的人脸比对代码解释 人脸识别系统博客汇总:人脸识别系统-博客索引 项目GitHub地址:Su-Face-Recognition: A face recognition for user logining 注意:阅读本博客前请先参考以下博客 工具安装、环境配置:人脸…

【genius_platform软件平台开发】第九十七讲:常见Visual Studio版本号对应表VisualStudioVersion

1. sln文件格式 使用记事本打开.sln文件, 从一个外行角度看,VC/VS有3种版本号,具备一定的迷惑性:(xx表示具体的数字) MSVC xx(VC版本 eg. VC6.0) _MSC_VER VisualStudio xx(VS版本 eg. VS2012&#xf…

跨语言RPC框架Thrift入门

文章目录 一、Thrift介绍二、IDL语法详解基本数据类型特殊数据类型集合容器枚举类型常量、类型别名struct类型异常servicenamespaceinclude 参考 一、Thrift介绍 Thrift:一个轻量级、跨语言(不同语言之间可以进行调用)的RPC框架,…

Yunzai-Bot插件编写指南

Yunzai-Bot插件编写教学 前言 需要node.js基础,需要会使用redis数据库,推荐使用VScode编写☞下载 单个的js格式插件(example) oicq文档先新建一个文件,命名为Helloworld.js命名可以改的,最好别用中文,改命名时要记得把下面的类名改了(大小…

python 开发 1 之 拷贝文件

目录 一、需求: 二、python拷贝分析 1、需要的库,及源路径、目标路径定义 2、定义的拷贝数组 3、自定义拷贝函数 1) 如果目标路径不存在时,先创建目标路径 2)遍历元组数组中的文件 3)如果源文件或目…