unity版本:2019.4.12f
urp版本:.7.5.1
前言
曲面细分是渲染管线的可选阶段,作用是可以将三角形分的更精细。如上图所示,曲面细分包含Hull Program、Tessellation和Domain Program这三步,处于顶点着色器之后,几何着色器之前,其中的Hull Program和Domain Program可编程。
Hull Program
Hull Program负责决定如何细分
[domain("tri")] // 表示适用于三角形,还有quad(四边形)
[outputcontrolpoints(3)] // 输出的控制点数量
[outputtopology("triangle_cw")] // 输出拓扑结构为顺时针三角形,还有triangle_ccw(逆时针三角形)、line(线段)
[partitioning("fractional_odd")] // 分数分割模式,还有integer(整数模式)
[patchconstantfunc("PatchConstantFunction")] // 划分方法
TessellationControlPoint Hull(
InputPatch<TessellationControlPoint, 3> input, // 输入的顶点数据格式和数量
uint id : SV_OutputControlPointID // 索引id
) {
return input[id];
}