Shader入门学习记录①——渲染流程

此系列仅为学习Shader入门学习进行的笔记记录。

专业知识内容大多引用与《Unity Shader入门精要》.

一、 什么是渲染流水线?

渲染流水线的工作任务在于有一个三维场景出发、生成(或者说渲染)一张二维图像。换句话说,计算机需要从一系列的顶点数据、纹理等信息出发,吧这些数据转换成一张人眼可见的图像。而这个工作通常是CPU和GPU共同完成的。在这里我们将这个流程分为3个阶段:应用阶段(Aplication Stage)几何阶段(Geometry Stage)光栅化阶段(Rasterizer Strage)。这里仅仅是概念性阶段,通常一个阶段下面都包含着一个流水线系统,及包含子流水阶段。

1.应用阶段

这个阶段是完全在我们的CPU上进行执行的,也就是说对于我们程序而言是完全可控的。在这个阶段我们需要传入场景信息,比如摄像机的位置、视椎体、场景中包括哪些模型及它们的材质纹理等。在这之后还需要进行一个粗粒度的剔除工作,主要是为了剔除一些场景外的物体及一些不可见的物体。最后我们需要设置模型的渲染状态、模型的材质和shader等。这个阶段最重要的是输出渲染所需要的几何信息,即渲染片元(rendering primitives)。这些渲染片元一般都是一些渲染的点、线或者三角面等。这些信息将会传递给下一个阶段——几何阶段

2.几何阶段

几何阶段用于处理所有和我们要绘制的几何相关的事情。例如,决定需要绘制的图元是什么,怎么样绘制它们,在哪里绘制它们。这一阶段通常在GPU执行。
几何阶段负责和每个渲染图元打交道,进行逐顶点、逐多边形的操作。这个阶段近一步分成更下的流水线阶段。几何阶段的重要任务就是把顶点坐标转换到屏幕空间中,再交给光栅器进行处理。通过对输入的渲染图元进行多步处理后,这一阶段会输出屏幕空间的二维顶点坐标、每个顶点对应的深度值、着色等相关信息,并传递给下一阶段。

3.光栅化阶段

这一阶段将会使用上一个阶段传递的数据来产生屏幕上的像素,并渲染出最终的图像。这一阶段也是在GPU上运行。光栅化的任务主要是决定每个渲染图元中的那些像素应该被绘制在屏幕上。它需要对上一个阶段得到的逐顶点数据(例如纹理坐标、顶点颜色等)进行插值,然后再进行逐像素处理。
和上一阶段类似,光栅化阶段也可以分成更小的流水线阶段。

下一章《Shader入门学习记录——CPU与GPU之间的通讯》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值