Unity3D灯光与渲染学习之(三):探针使用、后处理与批处理

时间:2024-03-15 16:11:02
本篇博客作为收尾,介绍探针(重点是反射探针)以及一些后期处理与优化方式。
传送门:
Unity3D灯光与渲染学习之(三):探针使用、后处理与批处理

7.探针的使用

7.1 灯光探针(适用于运动物体),覆盖整个场景,运动物体在覆盖的场景进行移动时,能实时改变运动物体的颜色信息。这方面由于暂时不需要使用,并未过多学习,可以参照PassionY的博文https://blog.csdn.net/yupu56/article/details/76176338
7.2 反射探针(适用于室内场景,相当于一个全景摄像机),将对当前物体有影响的信息保存并体现在物体上。
导入Reflection Probe资源包,找到Scene1场景文件,打开如下图所示。(下载地址(包括第8节的后处理资源):https://download.csdn.net/download/s1314_jhc/10466588
Unity3D灯光与渲染学习之(三):探针使用、后处理与批处理
创建新材质赋给小球,并设置为全反射。
Unity3D灯光与渲染学习之(三):探针使用、后处理与批处理
为小球添加反射探针(Light > Reflection Probe),可以看到反射探针有一个区域,只有区域内的物体能影响反射探针
Unity3D灯光与渲染学习之(三):探针使用、后处理与批处理
现在只反射的是天空盒,原因是Inspector面板中设定了它的type为Baked,即只反射游戏中的静态物体。因此将两个Cube设置为Static即可。再稍微移动下反射探针,即可看到效果。如上右图所示。

对于动态物体而言,首先将灯光探针的type修改为RealTime(比较费效率),并将Refresh Mode设置为每帧。并将反射探针设置为小球的子物体,即可在小球移动时正确显示效果。

8.后处理(Post-Processing)

导入Post Processing Stack资源包,该资源包包括各种对环境的后处理功能,下载资源中也在探针处一并包括(这块内容比较繁琐,之后整理补充)。

9.批处理

在屏幕上渲染物体,引擎需要发出一个绘制调用来访问图形API。每个绘制调用需要进行大量的工作来访问图形API,从而导致了CPU方面显著的性能开销。因此Unity在运行时可以将一些物体进行合并,从而用一个绘制调用来渲染他们。这一操作,我们称之为“批处理”。一般来说,Unity批处理的物体越多,就会得到越好的渲染性能,下图中的Batches就是批处理的数目。
Unity3D灯光与渲染学习之(三):探针使用、后处理与批处理
可以批处理的物体:
只有拥有相同材质的物体才可以进行批处理。因此,如果你想要得到良好的批处理效果,你需要在程序中尽可能地复用材质和物体。如果你的两个材质仅仅是纹理不同,那么你可以通过纹理拼合操作来将这两张纹理拼合成一张大的纹理。一旦纹理拼合在一起,你就可以使用这个单一材质来替代之前的两个材质了。比如下图展台的玻璃盖部分,这么做可以提升场景的流畅度(即上图中的FPS)。
Unity3D灯光与渲染学习之(三):探针使用、后处理与批处理
批处理分为动态和静态两种。

9.1动态批处理

如果动态物体共用着相同的材质,那么Unity会自动对这些物体进行批处理。动态批处理操作是自动完成的,并不需要你进行额外的操作。批处理动态物体需要在每个顶点上进行一定的开销,所以动态批处理仅支持小于900顶点的网格物体。

9.2 静态批处理

相对而言,静态批处理操作允许引擎对任意大小的几何物体进行批处理操作来降低绘制调用(只要这些物体不移动,并且拥有相同的材质)。因此,静态批处理比动态批处理更加有效,你应该尽量使用它,因为它需要更少的CPU开销。为了更好地使用静态批处理,你需要明确指出哪些物体是静止的,并且在游戏中永远不会移动、旋转和缩放。想完成这一步,你只需要在检测器(Inspector)中将Static复选框打勾即可