渲染

Unity3D中的渲染优化-减少需要处理的顶点数目

3D游戏制作通常都是由模型制作开始的。我们应该尽可能减少模型中三角面片的数目,一些对于模型没有影响,或者是肉眼很难察觉到区别的顶点都要尽可能去掉。为了尽可能减少模型中的顶点数目,美工人员往往需要优化网格结构。在很多三维建模软件忠,都有相应的优化选项,可以自动优化网格结构

Unity3D中的渲染优化-减少需要处理的片元数目

overdraw 指的是同一像素被绘制了多次。为了最大限度地避免overdraw,一个重要的优化策略就是控制渲染的顺序。由于Z-深度测试的存在,如果我们可以保证物体都是从前往后渲染的,那么就可以很大程度上减少overdraw。

Unity3D中的渲染优化——优化贴图纹理

使用纹理图集可以帮助我们减少draw call的数目,而这些纹理的大小同样是一个需要考虑的问题。需要注意的是,所有纹理的长宽比最好是正方形,而且长款值最好是2的整数幂。这是因为有很多优化策略只有在这种时候才可以发挥最大效用。

Unity3D中的渲染优化——批处理技术

在Unity3D中,常用的减少Draw call的优化技术就是批处理技术。批处理的原理是减少每一帧需要的Draw call数目。为了把一个对象渲染到屏幕上,CPU需要检查哪些光源影响了该物体,绑定shader并设置它的参数,再把渲染命令发送给GPU。当场景中包含了大量的对象时,这些操作就会非常耗时。

基于物理的渲染 – 实现篇(二)

上一篇:基于物理的渲染 – 实现篇(一)

完整的PBR光照着色器

现在唯一剩下的就是将最终的色调映射和伽玛校正的颜色传递给片段着色器的输出通道,我们就拥有了一个PBR直接光照着色器。基于完整性考虑,下面列出完整的main函数: