曲面细分与几何着色器
- Preview
- 着色器(执行顺序)
- TESS
- GS
3.3 曲面细分 Tessellation Shader (TESS) 与几何着色器 Geometry Shader(GS)
- 曲面细分着色器的应用
- 海浪、雪地(创造交互)
- 与置换贴图结合
- 几何着色器的应用
- 几何动画,爆破效果
- 草地,可调节密度
着色器执行顺序
- Hull:细分
- Domain:位移(需要空间转换)
TESS
功能:将图元细分(可以是三角形,矩形等)
输入输出
- 输入:Patch, 可以看成是多个顶点的集合,包含每个顶点的属性,可以指定一个Patch包含的顶点数以及自己的属性
- 输出:细分后的顶点
Hull shader
决定细分的数量(设定Tessellation factor以及Inside Tessellation factor)
对输入的Patch参数进行改变(如果需要)
- HULL Shader各参数解析
- Tessellation Factor决定将一条边分成几部分;后两个更平滑:
- equal_Spacing
- fractional_even_spacing
- fractional_odd_spacing
- Inner Tessellation Factor
- Tessellation Factor决定将一条边分成几部分;后两个更平滑:
Tessellation Primitive Generation
- 进行细分操作,无法控制
Domain Shader
- 对细分后的点进行处理,从重心空间(Barycentric coordinate system)转换到屏幕空间
GS
输入:图元(三角形,矩形,线等) 。根据图元的不同,shader中会出现对应不同数量的顶点
输出:同样为图元,一个或多个,需要自己从顶点构建,顺序很重要同时需要定义最大输出的顶点数