unity--07 渲染管线工作流程与Instantoc

概念

图形数据在GPU上经过运算处理,最后输出到屏幕的过程
unity--07 渲染管线工作流程与Instantoc_第1张图片
cpu会根据摄像机判断物体要不要显示,然后准备相应的数据,发送给gpu。
gpu接受数据,进行运算,比如坐标系转换,因为屏幕是2d的,空间3d坐标需要转换成2d坐标。

图元装配:连接相邻的顶点,绘制为三角面,把点结合成线,线结合成三角面,因为若干个三角形拼接成任意3d图形。
unity--07 渲染管线工作流程与Instantoc_第2张图片

光栅化:计算三角面上的像素,并为后面着色阶段提供合理的插值参数。因为三角面投射到屏幕上,还需要转换
unity--07 渲染管线工作流程与Instantoc_第3张图片
像素处理:物体是有颜色的,在光栅化的时候,同时也会对每个像素区域进行着色。

缓存:一个存储像素数据的内存块,最重要的缓存是帧缓存与深度缓存。

帧缓存:即渲染后的图像。帧缓存 常常在显存中,显卡不断读取并输出到屏幕中。
深度缓存z-buffer:存储像素的深度信息,即物体到摄像 机的距离。光栅化时便计算各像素的深度值,如果新的深 度值比现有值更近,则像素颜色被写到帧缓存,并替换深 度缓存。深度缓存是为了解决前后遮挡的物体,到底显示哪一个部分?

个人理解

如果一帧需要渲染5个物体,每一个物体都会走一次以上流程,一个draw call就是一次整体流程,总共会有5次draw call,cpu与gpu都需要参与工作。
像素信息除了传统的rgba之外,还有深度值。
最后的帧缓存会保存这5个物体的综合像素数据,显卡不断读取该数据并输出到屏幕中。
光照效果会增大draw call,光线越复杂,开销越大。

Instantoc

全称Instant Occlusion Culling,即时遮挡剔除,是个插件,目的是为了优化draw call,减少cpu与gpu的开销。
假设有多个物体互相遮挡,那么理论上来说,就不需要每一个都去渲染,只需要渲染“可视”的那部分。
即将摄像机视角内看不到的物体进行剔除,从而减少了每帧渲染数据量, 提高渲染性能。

你可能感兴趣的:(游戏引擎)