Real-TimeRendering读书笔记第二章

Real-TimeRendering读书笔记-知识点概括——第二章(个人理解用)

第二章,The Graphics Rendering Pipeline

最基本的渲染管线:应用层、几何图形处理、光栅化、像素处理
在这里插入图片描述
1.应用层:通常由CPU进行并行处理,决定要渲染什么,怎么渲染,在哪里渲染。
开发人员可以完全控制该环节。另外一些应用层的工作可以由GPU来完成,使用一个单独的模式叫做Compute Shader。应用层最主要的工作是产生片元信息(点、线、三角形)到几何处理阶段。另外这一阶段也用来进行碰撞检测,输入控制等等。

2.几何图形处理:通常由GPU进行处理,GPU包含许多可编程的和固定的操作元件。

通常又被分为以下几个阶段:顶点着色、投影、裁剪、屏幕映射
在这里插入图片描述
顶点着色:
计算所有开发人员需要的顶点数据

投影:
主要有正交投影和透视投影,通过这两种投影方式将顶点投射到相机空间当中。顶点的Z 坐标不再保存,而将其统一存储到z-buffer当中。

投影结束之后,在GPU上会有以下几个可操作的步骤发生:抗锯齿、几何着色、流式输出
无论以上步骤是否操作,在接下来之前,我们已经得到了所有点的齐次坐标。

裁剪:
主要是留下完全在和部分在单位正方体当中的片元信息。

屏幕映射:
x,y称为屏幕坐标,加上z坐标称为窗口坐标。
OpenGL中-1<=z<=1,DirectX中0<=z<=1.
OpenGL中屏幕坐标左下角为原点,右上为最大。
DirectX中左上角为原点,右下为最大。

3.光栅化:通常以三个顶点作为输入,组成一个三角形,然后找到所有位于三角形中的像素点,然后传递到下一个单元。在GPU上运行。
一般分为triangle setup(主要是计算三角形的方程) 和triangle traversal(判断每一个像素所属三角形的情况)(其实也有点和线,但是三角形居多)
两个步骤都通过硬件当中的函数进行计算。
在这里插入图片描述
4.像素处理:执行程序来确定每个像素的颜色以及深度测试等,在GPU上运行。

该阶段被分为像素着色和合并子阶段。

像素着色:该阶段是由GPU上可编程的单元执行的,所以有很多可以进行的操作,fragment shader就在这里执行,输入是插值之后的顶点着色数据(各种坐标,法线等),输出是每个片元上点的颜色数据。
合并:该过程的操作是不完全可编程的,但是是高度可配置的。该过程用到颜色缓冲,深度缓冲和模板缓冲和透明度。

主要解释模板缓冲:模板缓存是深度缓存的扩充,其实就是通过自己在模板缓冲当中设置模板值,并设定和模板值比较的方法,符合的可以进入下一步操作。

该过程主要是遍历所有的片元,每次都在颜色缓冲和深度缓冲当中存储上一个片元留下的信息,当绘制新的片元时,进行透明度测试,深度测试,决定是将当前片元的颜色覆盖到颜色缓冲当中或者和颜色缓冲当中的颜色进行混合。
渲染管线图:
在这里插入图片描述

发布了4 篇原创文章 · 获赞 4 · 访问量 220

猜你喜欢

转载自blog.csdn.net/Wind_Code/article/details/104127844