欢迎光临散文网 会员登陆 & 注册

URP | Reflection Probes 反射探针

2022-07-01 19:33 作者:那个人真狗  | 我要投稿


增加天空盒

场景增加天空盒,

  • 准备好天空盒的素材,创建Cube

  • 设置

现在我们创建好天空盒了,我们接下来在Shader里反射天空盒的效果。


反射Shader

  • 创建反射变量控制反射强度

  • 顶点结构体

输入法线 ,位置,UV信息

  • 片元结构体输出

  • 顶点着色器阶段计算位置信息

  • 片元着色器阶段

计算出反射向量,

使用反射向量夺取Cube

  • 效果

目前我们是可以看到反射效果,但是这样的方法只能反射天空盒。 那我们下面使用反射探针反射场景中的物体。


反射探针

反射探针就是当前场景烘焙好一张环境贴图,用来模拟反射周围物体的光照信息。

创建反射探针

  • 创建反射探针 GameObject

  • 就可以创建一个反射探针

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

  • 反射探针的属性

  • Bake 类似刷新

设置光照

  • 开启灯光烘焙

反射物体设置

  • 被烘焙的物体为静态物体

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

注意:反射探针只反射静态物体,如果不勾选静态物体,不会反射。

这里的代码是一样的。

  • 效果

目前这里的方式,这是获取场景的反射,我们也可以放到Shader里,指定固定Cube

CubeMap

  • 定义一个Cube变量,定义一个旋转的角度变量

定义 CUBE 类型

  • 贴图

  • 效果

这样只是把效果直接反射到物体上,没有粗糙度控制。

  • 目前我们想使用角度控制CubeMap的旋转。

这里定义一个函数

使用这个函数改变反射向量

  • 效果

代码

MatCap反射

MatCap是一种低成本的反射效果,

核心就是顶点法线从世界空间转换成摄像机空间,在读取一张图。

扩展

  • 用一张MatCap贴图作为渲染好的漫反射贴图

  • 用物体表面的法线对该贴图进行采样

  • Shader Graph

  • 准备俩张MatCap贴图

  • 定义1个贴图变量。

  • 目前是普通效果,我们需要把法线信息输出到UV上

这样会导致UV贴图乱了,我们需要修改一下显示位置信息。

定义一个函数,计算UV显示

  • 在片元着色器阶段,调用函数计算出法线的UV信息

  • 输出效果


URP | Reflection Probes 反射探针的评论 (共 条)

分享到微博请遵守国家法律