欢迎光临散文网 会员登陆 & 注册

shader 优化小随笔

2023-07-12 20:31 作者:B1ueMicr0  | 我要投稿

2023 / 7 /12

·今天的直播集中在着色器的具体优化上,这里按记忆写出一些东西。

·首先我们需要认识到的是,shader 代码行数越少,执行速度越快。

例:

int func(int argc,char**argv){

     int x = 1;

     int y = x;

     return y;

}

省去不必要的常量步骤,于是改写成:

int func(int argc,char**argv){

     int x = 1;

     return x;

}

这是编译层面的优化。当然,我们写 shader 也必须了解到步骤的问题。

并且也要记住,使用常量代替计算。否则代码长了之后,效率很低。


当然,方法是很多的。我们可以减少一些复杂运算指令比如开平方,正余弦等等;

它们需要在 Special Unit 上完成,然而这些复杂 OP 组成的每个 Warp 需要花费 8 个 cycle 才能执行完,会拖慢渲染管线。


说到 GPU 层面上了,我们还可以转移计算负载。例如原本由 Pixel Shader (现在的 GPU 一般都是在 SIMD 上) 执行的 Phong Shading 可以改为 Gouraud Shading,这是一种 Per-vertex 的方案,于是它的负载转移到了 VS 上。

这篇文章是一个小作品,纯属没事干瞎写。仅供参考。

·GAMES106 - 现代图形绘制流水线原理与实践


shader 优化小随笔的评论 (共 条)

分享到微博请遵守国家法律