UPL9-5——减少曲面细分

曲面细分

在图形渲染中,曲面细分是把一个较粗的网格(低多边形)自动拆分成更多的小三角形,形成更平滑的几何表面

比如:
一张四边形面,可以被细分成 4、16、64 个小面片
这样视觉上更圆润,但会大幅增加顶点数量和三角形数量

image

一般通过曲面细分着色器来实现这样的功能,在对美术表现要求高的游戏中才会使用的技术
当你有以下这些需求时,才会考虑使用曲面细分着色器

  1. 高端画质、近景特写
  2. 需要真实几何表现而不是靠法线带来的视觉假象
  3. 大规模环境

曲面细分对 GPU 的性能影响

在GPU渲染管线中,曲面细分会增加多种负担

  1. 顶点处理压力增加

    每细分一次,顶点数成倍增长
    GPU 顶点着色器、几何阶段需要处理更多数据

  2. 片元(像素)处理间接增加

    更多的三角形,意味着更密集的覆盖像素,意味着片元着色器嗲用次数会上升

  3. 内存带宽开销上升

    顶点数据(坐标、法线、UV、权重等)需要传输,细分越多,显存到 GPU 核心的数据带宽消耗越大

  4. 缓存效率下降

    GPU 有顶点缓存、索引缓存,如果三角形过小,缓存命中率降低,导致效率下滑

因此减少曲面细分着色器的使用可以优化性能,可以减少顶点数、三角形数
可以缓解带宽压力、提高缓存命中率 等
所以在没有特殊需求时,特别是针对低端设备时,应该尽量避免使用曲面细分着色器