曲面细分与几何着色器

  • Preview
    • 着色器(执行顺序)
    • TESS
    • GS

3.3 曲面细分 Tessellation Shader (TESS) 与几何着色器 Geometry Shader(GS)

  • 曲面细分着色器的应用
    • 海浪、雪地(创造交互)
    • 与置换贴图结合截屏2023-07-31 00.10.55
  • 几何着色器的应用
    • 几何动画,爆破效果
    • 草地,可调节密度

着色器执行顺序

  • 截屏2023-07-31 00.12.17
  • Hull:细分
  • Domain:位移(需要空间转换)

TESS

截屏2023-07-30 15.07.16

  • 功能:将图元细分(可以是三角形,矩形等)

  • 输入输出

    • 输入:Patch, 可以看成是多个顶点的集合,包含每个顶点的属性,可以指定一个Patch包含的顶点数以及自己的属性
    • 输出:细分后的顶点

Hull shader

  • 决定细分的数量(设定Tessellation factor以及Inside Tessellation factor)

  • 对输入的Patch参数进行改变(如果需要)

  • HULL Shader各参数解析
    • Tessellation Factor决定将一条边分成几部分;后两个更平滑:
      • equal_Spacing07ab6195-8ca2-4082-a16f-b7078b76b800
      • fractional_even_spacingf1bac071-5ad8-4a21-a70e-74253f7b9fba
      • fractional_odd_spacing9062d404-6325-451c-a717-a67eae3afda1
    • Inner Tessellation Factor
      • 截屏2023-07-31 00.28.02

Tessellation Primitive Generation

  • 进行细分操作,无法控制

Domain Shader

  • 对细分后的点进行处理,从重心空间(Barycentric coordinate system)转换到屏幕空间

GS

  • 输入:图元(三角形,矩形,线等) 。根据图元的不同,shader中会出现对应不同数量的顶点

  • 输出:同样为图元,一个或多个,需要自己从顶点构建,顺序很重要同时需要定义最大输出的顶点数