网格体模型的优化方面(几何体渲染):
从技术上来说最好减少模型数量增大模型尺寸,大的模型虽然会减少绘制次数,但是对于绘制的可能性反而增加了,
同时对于光照贴图(光照贴图一般最大4096*4096)
以及碰撞检测(比如说一个球碰撞到柱子上了他得到的是整个房间的碰撞信息)
内存也会产生影响。
模块化网格体
折中方法:使用少量大型模型或者大量小型模型(倾向于后者)
用单独的模型构建场景之后合并模型,一般只合并损耗最大的模型(合并后最好用同一种材质),不会合并所有。
1、网格体经常使用,并且面数越低最好。
2、只合并同一区域的网格体
3、只合并同一材质的网格体
4、网格体没有碰撞或者碰撞很简单的
5、非常小的网格体或者只接受动态光照的网格体
6、远距离的几何体可以把一些模型合并
确保每个LOD的面数是前面一个LOD的大约50%或者更少。
利用HLOD减少绘制调用次数。
着色器和材质:
顶点着色器的位移一般用于视觉效果,CPU不会知道模型已经发生了位移(物理碰撞之类的还是保持不变)。
远距离观察物体时可以禁用动画、特效,偏移来减少开销。
为了实现纹理流送以及多级渐进纹理,将纹理的边长设置为2的指数幂
1、材质或者着色器能查看的纹理采样器拥有最大数量上限通常最大值为16并且只有13个可以使用。但你可以使用共享采样器,让你使用多达128张不同的纹理(只限于DX11或DX12)
2、纹理大小相关问题主要是延迟和卡帧
3、像素着色器对于性能有很大的影响,因为像素着色器有大量的工作要做(光照