UPL9-5——减少曲面细分
UPL9-5——减少曲面细分
曲面细分
在图形渲染中,曲面细分是把一个较粗的网格(低多边形)自动拆分成更多的小三角形,形成更平滑的几何表面
比如:
一张四边形面,可以被细分成 4、16、64 个小面片
这样视觉上更圆润,但会大幅增加顶点数量和三角形数量

一般通过曲面细分着色器来实现这样的功能,在对美术表现要求高的游戏中才会使用的技术
当你有以下这些需求时,才会考虑使用曲面细分着色器
- 高端画质、近景特写
- 需要真实几何表现而不是靠法线带来的视觉假象
- 大规模环境
曲面细分对 GPU 的性能影响
在GPU渲染管线中,曲面细分会增加多种负担
-
顶点处理压力增加
每细分一次,顶点数成倍增长
GPU 顶点着色器、几何阶段需要处理更多数据 -
片元(像素)处理间接增加
更多的三角形,意味着更密集的覆盖像素,意味着片元着色器嗲用次数会上升
-
内存带宽开销上升
顶点数据(坐标、法线、UV、权重等)需要传输,细分越多,显存到 GPU 核心的数据带宽消耗越大
-
缓存效率下降
GPU 有顶点缓存、索引缓存,如果三角形过小,缓存命中率降低,导致效率下滑
因此减少曲面细分着色器的使用可以优化性能,可以减少顶点数、三角形数
可以缓解带宽压力、提高缓存命中率 等
所以在没有特殊需求时,特别是针对低端设备时,应该尽量避免使用曲面细分着色器
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 文KRIFE齐的博客!
