Unity使用Shader Graph实现遮挡剔除
Posted Akuyi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity使用Shader Graph实现遮挡剔除相关的知识,希望对你有一定的参考价值。
遮挡剔除
生成材质:
Shader Graph
Project里面右键-->Create-->Shader-->Universal Render Pipeline-->Unlit Shader Graph
选中创建出来的Shader Graph右键新建一个材质Material,双击Shader Graph打开
背景板上右键-->Create Node-->搜索Fresnel Effect
在左侧的blackboard里新建一个Color,命名color
(旧版本可以在blackboard中直接调整参数,新版本要选中变量后在右侧的graph inspector的note settings中去调整参数)
在node settings中调整到你想要显示的轮廓的颜色
将color拖拽出来,从Fresnel Effect右侧的Out拖拽出一个Multiply,然后把color给到B值,color则有一个可视化的效果。
将输出的值(Out)连接到Base Color上,这个时候可以在预览窗口中看到它的样子。
如果想添加一点噪点让现实更真实,可以添加一个Dither,修改X值可以调整它的填充效果。
创建一个Float值,拖拽出来连上X,可以在note settings中给它一个初始值,将这个值输出到Alpha上。
用一个阈值来控制Alpha:创建一个Float变量,拖出来给到Alpha Clip Threshold。
选择右上角的Save Asset可以保存并生成,在右侧的Inspector中可以调整它的各项参数。
让角色移动到遮挡物后面时应用该材质:
选择URP_Renderer-->Add Renderer Feature-->Render Objects
把做好的材质赋给Overrides的Material
勾选Depth,选择Depth Test中的Greater,即表示当人物在物体后面时显示出来
添加Layer:给人物添加一个图层,然后在Layer Mask中选择人物的图层,这样只有选中的人物会被遮挡后显示出来
如果给人物添加类的时候选择了“Yes,change children”,由于人物之间的各个部件可能也会发生互相遮挡,再添加一个Render Objects:
图层也添加上即可
以上是关于Unity使用Shader Graph实现遮挡剔除的主要内容,如果未能解决你的问题,请参考以下文章