Unity渲染流程(渲染管线)(渲染流水线)


在这里插入图片描述
计算机图形库的渲染命令由显卡驱动(GPU Driver)翻译成GPU(图形处理器)能识别的语言,然后GPU读取显存中由渲染命令指定的数据(draw call则是把要求GPU根据顶点数据进行绘制, SetPass call时,会向显存中传递大量的资源信息,包括纹理资源也是在这时候加载到缓存中)

一 渲染的任务

渲染流水线的工作任务在于==由一个三维场景出发、生成(或者说渲染)一张二维图像。==换句话说,计算机需要从一系列的顶点数据、纹理等信息出发,把这些信息最终转换成一张人眼可以看到的图像。而这个工作通常是由CPU和 GPU共同完成的。

二 三个概念阶段

在这里插入图片描述

三 应用阶段

CPU负责实现,这一阶段最重要的输出是渲染所需的几何信息,即渲染图元(rendering primitives)。通俗来讲,渲染图元可以是点、线、三角面等。这些渲染图元将会被传递给下一个阶段——几何阶段。

1 准备好需要被渲染的场景数据,做粗粒度剔除

摄像机的位置,视锥体,场景中的模型,场景中的光源,粗粒度剔除也就是视锥体剔除在这个阶段做,以包围盒为单位

准备好数据后加载到显存

所有渲染所需的数据都需要从硬盘(Hard Disk Drive,HDD)中加载到系统内存(RandomAccess Memory,RAM)中。然后,网格,位置信息,法线方向,顶点颜色,纹理坐标等数据又被加载到显卡上的存储空间——显存( VideoRandom Access Memory,VRAM)中。这是因为,显卡对于显存的访问速度更快,而且大多数显卡对于RAM没有直接的访问权利。图2.3所示给出了这样一个例子。
在这里插入图片描述

2 设置每个对象的渲染状态。

渲染状态包括所使用的着色器shader、纹理、材质(漫反射颜色,高光反射颜色)等。

什么是渲染状态呢?一个通俗的解释就是,这些状态定义了场景中的网格是怎样被渲染的。例如,使用哪个顶点着色器(Vertex Shader)/片元着色器(Fragment Shader)、光源属性、材质等。如果我们没有更改渲染状态,那么所有的网格都将使用同一种渲染状态。图2.4显示了当使用同一种渲染状态时,渲染3个不同网格的结果。
在这里插入图片描述

3 发送DrawCall。

当给定一个DrawCall

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

珞珈大胖强TURBO

谢谢兄弟们,我会一直努力出货的

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值