unity中的渲染优化技术——(影响性能的因素、unity中的渲染分析工具)
demi 在 周五, 07/03/2020 - 17:07 提交
游戏优化不仅是程序员的工作,更需要美工人员在游戏的美术上进行一定的权衡,例如避免使用全屏的屏幕特效,避免使用计算复杂的shader,减少透明混合造成的overdraw等。这是由程序和美工人员等各部分人员共同参与的工作。
渲染是计算机图形学中的一个过程,它指的是将3D场景或模型转化为2D图像的过程。这是在计算机图形学、计算机辅助设计(CAD)、虚拟现实、视频游戏等领域中非常重要的步骤。
游戏优化不仅是程序员的工作,更需要美工人员在游戏的美术上进行一定的权衡,例如避免使用全屏的屏幕特效,避免使用计算复杂的shader,减少透明混合造成的overdraw等。这是由程序和美工人员等各部分人员共同参与的工作。
传统的渲染方式下所做的光照计算流程称为前向渲染。这是一种十分直接的方式,在顶点着色器中对所有待渲染对象的顶点进行一系列的变换,这些变换通常是将顶点的法线和位置变换到裁剪空间。
在vertex函数中进行的计算就叫逐顶点计算,该计算量只和模型的顶点数量或面的数量有关,而和其他因素(如模型在屏幕上的大小)无关。在unity的表面着色器中,逐像素的计算发生在vertex:vertexfunction所确定的函数中。
渲染中常常要对一张图像进行采样,也就是在众多像素中选一些代表性的点。随机的均匀采样是最简单的,像下面左图那样。但是很多时候我们希望进行一些非均匀的采样,比如在环境光图像里集中采样亮度大的地方,如右图。这种采样叫做重要性采样(Importance Sampling)。
最近仔细研究了Unity3D中的灯光以及渲染,有了全新的认识,在这里整理记录下来。博主所使用的是Unity3D 2017.3.1f1这个版本。
Unity中的渲染顺序自上而下大致分为三层。 最高层为Camera层,可以在Camera的depth那里设置,设置之后,图形的渲染顺序就是先绘制depth低的相机下的物体,再绘制depth高的相机下的物体,也就是说,depth高的相机会覆盖depth低的相机(具体的覆盖关系有don't clear, solid color等等几种)
在几乎所有现代化汽车上,数字仪表盘从某种形式上来说属于标准功能,它们第一次出现是在20世纪80年代,最近几年它们又重新流行起来,这在很大程度上要归功于现代GPU更加强大的图形功能。虽然低配的汽车可能只有里程计算的数字显示,但是高端车型则设计了完全数字化的仪表盘,包括表盘。
bump maps的一种,实现物体立体感,减少光照计算的方案。Normal Mapping 法线映射多用在CG动画的渲染以及游戏画面的制作上,将具有高细节的模型通过映射烘焙出法线贴图(Normal Map),贴在低端模型的法线贴图通道上,使之拥有更高细节的渲染效果。
Source Link
Forward Rendering & Deferred Rendering
https://gamedevelopment.tutsplus.com/articles/forward-rendering-vs-defer...
Deferred Rendering && Forward Rendering
什么是前向渲染(Forward Rendering)?
Shader渲染流程是CPU和GPU合作渲染一帧的过程,绘制过程分为三个阶段:应用程序阶段(CPU控制)、几何阶段(GPU控制)、光栅化阶段(GPU控制)