美术用简单性能讲解 Explanation of performance for Artists

贴图对性能的影响

  • CPU:所有载入的物体,CPU都要管理,并且告诉GPU哪些要绘制,给GPU准备好相应的资源
  • 内存:所有场景内载入的资源都要进内存
  • GPU:画东西的
  • 显存带宽:去往显存的路。当显存装不下当前绘制所需的所有资源时,就会每帧都可能发生需要去显存的东西太多,这时候就会堵,可能导致帧率大幅下降(比如70->20)
  • 显存:GPU储存绘制相关资源的地方,比如贴图,Mesh,Shader
  • Tex Cache:GPU画每个Drawcall时拿在手头的资源,画东西的时候用手上的材料最快,如果手上没有,就得去显存找,这样就慢了。
  • Shader:怎么画

为什么要合理设置LOD

辛苦的GPU

GPU就像一个画家,每一帧,他都要画满一屏的画。

为了绘制一个物体,他要先把箱子的网格、贴图等等拿在手上,就像准备颜料盘和画笔一样。(如果需要拿的东西太多,一次拿不下了,那就只能先拿一部分画一画,再拿起另一部分画一画,极大降低绘制速度)

每一个物体,他都要这样做。

-

所以,如果场景里有成百上千个实际上不需要绘制的物体,我们应该把它们从需要绘制的物体列表中去掉,否则GPU就要每帧每帧都付出成百上千次不必要的辛苦。

如果一个离得很远的物体,我们应该把它的精度降低到适合屏幕的程度,否则GPU就要每帧付出不必要的辛苦。

不止在绘制这个物体的色彩时,在绘制阴影、ZPrePass阶段也要一个一个全部来一遍

想一想

要维持单位面积的三角面密度(相同屏幕面积内的三角面数一致),如果LOD1的面数是LOD0的50%,LOD0的切换高度是100%,问:LOD1的切换高度是多少?


答案:70%

辛苦的CPU

每一帧,CPU都要把需要GPU画出来的东西整理好,一个一个交给GPU。

如果有很多东西是实际上并不需要画出来的,CPU就要每帧都付出不必要的辛苦。

分享