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

概念

图形数据在GPU上经过运算处理,最后输出到屏幕的过程
在这里插入图片描述
cpu会根据摄像机判断物体要不要显示,然后准备相应的数据,发送给gpu。
gpu接受数据,进行运算,比如坐标系转换,因为屏幕是2d的,空间3d坐标需要转换成2d坐标。

图元装配:连接相邻的顶点,绘制为三角面,把点结合成线,线结合成三角面,因为若干个三角形拼接成任意3d图形。
在这里插入图片描述

光栅化:计算三角面上的像素,并为后面着色阶段提供合理的插值参数。因为三角面投射到屏幕上,还需要转换
在这里插入图片描述
像素处理:物体是有颜色的,在光栅化的时候,同时也会对每个像素区域进行着色。

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

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

个人理解

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

Instantoc

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值