URP | Reflection Probes 反射探针

增加天空盒
场景增加天空盒,
准备好天空盒的素材,创建Cube

设置


现在我们创建好天空盒了,我们接下来在Shader里反射天空盒的效果。
反射Shader
创建反射变量控制反射强度
顶点结构体
输入法线 ,位置,UV信息
片元结构体输出
顶点着色器阶段计算位置信息
片元着色器阶段
计算出反射向量,
使用反射向量夺取Cube
效果

目前我们是可以看到反射效果,但是这样的方法只能反射天空盒。 那我们下面使用反射探针反射场景中的物体。
反射探针
反射探针就是当前场景烘焙好一张环境贴图,用来模拟反射周围物体的光照信息。
创建反射探针
创建反射探针 GameObject

就可以创建一个反射探针

这个黄色区域是反射区域,在这个区域内的物体才会反射

反射探针的属性


Bake 类似刷新

设置光照
开启灯光烘焙

反射物体设置
被烘焙的物体为静态物体

设置物体是否接受反射,默认是混合反射

注意:反射探针只反射静态物体,如果不勾选静态物体,不会反射。
这里的代码是一样的。
效果



目前这里的方式,这是获取场景的反射,我们也可以放到Shader里,指定固定Cube
CubeMap
定义一个Cube变量,定义一个旋转的角度变量
定义 CUBE 类型
贴图
效果

这样只是把效果直接反射到物体上,没有粗糙度控制。
目前我们想使用角度控制CubeMap的旋转。
这里定义一个函数
使用这个函数改变反射向量
效果

代码
MatCap反射
MatCap是一种低成本的反射效果,
核心就是顶点法线从世界空间转换成摄像机空间,在读取一张图。
扩展
用一张MatCap贴图作为渲染好的漫反射贴图
用物体表面的法线对该贴图进行采样
Shader Graph

准备俩张MatCap贴图

定义1个贴图变量。
目前是普通效果,我们需要把法线信息输出到UV上
这样会导致UV贴图乱了,我们需要修改一下显示位置信息。
定义一个函数,计算UV显示
在片元着色器阶段,调用函数计算出法线的UV信息
输出效果
