渲染

游戏引擎架构——渲染

延迟渲染:将光照计算从观察空间延迟到屏幕空间。先迅速生成不含光照的场景,并将所有用于光照计算的信息存储在几何缓冲(G buffer)中,如深度、表面法向量、颜色、PRT系数等。完成场景渲染后用几何缓冲的信息计算光照和着色。这样更高效。

按需渲染如何改善移动端性能?

大多数时候,项目并不需要一直保持最高帧率渲染,尤其是在移动平台上。过去,Unity开发者们常使用Application targetFrameRate或Vsync(垂直同步)来限制引擎的渲染速度。这种方法在影响渲染的同时,还会对其他部分的运行速率造成一些影响。而新的按需渲染API允许开发者将渲染频率从整体中独立出来调整。

浅谈 CPU 与 GPU 如何分工?

针对渲染导致的性能问题,这个世界上是没有一套万能的解决方案的。渲染的性能问题涉及到许多因素,不仅仅是游戏本身,它也很大程度上取决于运行游戏的硬件和操作系统。最重要的是我们要通过不断的研究和实验来解决这些性能问题。

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

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

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

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

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

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

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

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