渲染

unity中的渲染优化技术——(游戏物体、UI、模型的优化,以及移动平台的一些优化)

和渲染优化相关的东西很多,大致可分为网格、着色器材质、光照和阴影。相关的优化技术有相机视椎体剔除、遮挡剔除、基于层的分类剔除与合并绘制调用。LOD降级分为着色器的LOD降级和LodGroup降级。

unity中的渲染优化技术——(减少需要处理的顶点和片元数目)

建模时尽可能减少模型中三角面片的数目,一些对于模型没有影响、或是肉眼非常难察觉到区别的顶点都要尽可能去掉。美术人员往往需要优化网格结构。很多三维软件都有相应的优化选项,可以自动优化网格结构。

unity中的渲染优化技术——(减少draw call数目方法二:静态批处理、共享材质、批处理的选择)

相比于动态批处理来说,静态批处理适用于任何大小的几何模型。它的实现原理是,只在运行开始阶段,把需要进行静态批处理的模型合并到一个新的网格结构中,这意味着这些模型不可以在运行时刻被移动。但由于它只需要进行一次合并操作,因此比动态批处理更加高效。

unity中的渲染优化技术——(减少draw call数目 方法一:动态批处理)

批处理的实现原理就是为了减少每一帧需要的draw call数目。为了把一个对象渲染到屏幕上,CPU需要检查哪些光源影响了该物体,绑定shader并设置它的参数,再把渲染命令发送给GPU。

unity中的渲染优化技术——(影响性能的因素、unity中的渲染分析工具)

游戏优化不仅是程序员的工作,更需要美工人员在游戏的美术上进行一定的权衡,例如避免使用全屏的屏幕特效,避免使用计算复杂的shader,减少透明混合造成的overdraw等。这是由程序和美工人员等各部分人员共同参与的工作。

unity自带的着色器源码剖析之——前向渲染和延迟渲染

传统的渲染方式下所做的光照计算流程称为前向渲染。这是一种十分直接的方式,在顶点着色器中对所有待渲染对象的顶点进行一系列的变换,这些变换通常是将顶点的法线和位置变换到裁剪空间。

简单图像空间重要性采样的GPU实现

渲染中常常要对一张图像进行采样,也就是在众多像素中选一些代表性的点。随机的均匀采样是最简单的,像下面左图那样。但是很多时候我们希望进行一些非均匀的采样,比如在环境光图像里集中采样亮度大的地方,如右图。这种采样叫做重要性采样(Importance Sampling)。

unity渲染层级关系小结

Unity中的渲染顺序自上而下大致分为三层。 最高层为Camera层,可以在Camera的depth那里设置,设置之后,图形的渲染顺序就是先绘制depth低的相机下的物体,再绘制depth高的相机下的物体,也就是说,depth高的相机会覆盖depth低的相机(具体的覆盖关系有don't clear, solid color等等几种)