75.减少曲面细分

75.性能优化-GPU-增强渲染性能-减少曲面细分


75.1 知识点

什么是曲面细分

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

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

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

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

曲面细分对 GPU 的性能影响

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

  1. 顶点处理压力增加:每细分一次,顶点数成倍增长,GPU 顶点着色器、几何阶段需要处理更多数据。
  2. 片元(像素)处理间接增加:更多的三角形意味着更密集的像素覆盖,片元着色器调用次数会上升。
  3. 内存带宽开销上升:顶点数据(坐标、法线、UV、权重等)需要传输,细分越多,显存到 GPU 核心的数据带宽消耗越大。
  4. 缓存效率下降:GPU 有顶点缓存、索引缓存,如果三角形过小,缓存命中率降低,导致效率下滑。

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


75.2 知识点代码

Lesson75_性能优化_GPU_增强渲染性能_减少曲面细分.cs

public class Lesson75_性能优化_GPU_增强渲染性能_减少曲面细分
{
    #region 知识点一 什么是曲面细分

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

    //一般通过曲面细分着色器来实现这样的功能
    //在对美术表现要求高的游戏中才会使用的技术
    //当你有以下这些需求时,才会考虑使用曲面细分着色器
    //1.高端画质、近景特写
    //2.需要真实几何表现而不是靠法线带来的视觉假象
    //3.大规模环境

    #endregion

    #region 知识点二 曲面细分对GPU的性能影响

    //在GPU渲染管线中,曲面细分会增加多种负担
    //1.顶点处理压力增加
    //  每细分一次,顶点数成倍增长
    //  GPU 顶点着色器、几何阶段需要处理更多数据
    //2.片元(像素)处理间接增加
    //  更多的三角形,意味着更密集的覆盖像素,意味着片元着色器调用次数会上升
    //3.内存带宽开销上升
    //  顶点数据(坐标、法线、UV、权重等)需要传输,细分越多,显存到 GPU 核心的数据带宽消耗越大
    //4.缓存效率下降
    //  GPU 有顶点缓存、索引缓存,如果三角形过小,缓存命中率降低,导致效率下滑

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

    #endregion
}


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏