unity urp管线 手把手教你实现可交互沙漠【刻俄柏表示已经学会了】(3)
本篇文章主要会去实现曲面细分与顶点便宜部分。
在litshader中声明HullShader 和DomainShader。

并给一个参数用来表示细分数
然后在litinput中声明一下
然后回到LitForawardPasss实现我们的主要功能,首先我们要确定如何细分三角面,GPU使用了四个细分因子,三角面的每个边缘都是一个因数。
然后我们需要定义hull输出的结构体,这部分参考litshader的顶点结构体即可
接下来是Hull函数
对于顶点便宜部分我们需要在DomainShader中进行。
我们回到LitInput.hlsl文件。我们需要一张RenderTexture去记录我们角色的脚印,先声明一张贴图(这里不要在Properties去声明属性,否则我们拿不到脚本传入的RT)

角色在移动时我们会用粒子系统发射一个粒子

我们会用红色代表凹陷,绿色代表突起
然后我们还需要另外一个相机去渲染足迹的RT,我们再声明两个变量,一个记录当前渲染足迹的相机的位置,一个为相机的尺寸
那么现在我们就回到LitForwardPass.hlsl中去
先声明Domain的结构体
然后是Domain函数
然后我们往上看
找到

这个函数

它的输入结构体为我们Domain输出的结构体
然后完善一下我们的片元着色器
这里用到了高度转法线的方法,为了简单我们直接抄ShaderGraph的就好