RTR4读书笔记 Chapter2 The Graphics Rendering Pipeline

个人笔记,主要用于个人学习时的整理与日后的复习

2.1 架构(Architecture)

渲染流水线

2.2 应用阶段(Application stage)

由CPU掌控的阶段,将渲染所需数据传给GPU。
具体工作:
物理模拟、碰撞检测、加速算法(如特定的剔除算法)。
设置好渲染图元(rendering primitives):模型的材质、纹理、Shader等。

2.3 几何处理(Geometry Processing)

2.3.1 Vertex Shading

  1. 将顶点从模型空间转换到世界空间
  2. 从世界空间转换到摄像机空间
  3. 确定光线对材质的影响(Shading)
    *此时将信息储存,用于之后的逐片元计算
  4. 进行投影(正交/透视),转换至裁剪坐标系/标准化设备坐标系(normalized device coordinates,即NDC)(所有坐标在-1到1之间)
    *尽管矩阵将一个体积转换成另一个体积,但它们被称为投影,因为在显示之后,z坐标不存储在生成的图像中,而是存储在z-buffer中。

——————可选操作——————

  • 曲面细分(tessellation)
    根据摄像机的距离,调整片面的数量。
  • 几何着色器(geometry shading)
    将粒子转化为一个正方形面片(由两个三角形面片组成),以供之后渲染
  • 流式输出(stream output)
    将顶点信息存入数组中传给CPU(或GPU自己)来进行进一步处理,常用于粒子模拟

2.3.2 Clipping(裁剪)

会在被裁剪的地方生成一个新的Vertex

2.3.3 Screen Mapping(屏幕映射)

将NDC转换至屏幕坐标(Screen Coordinates)(只有x,y坐标),屏幕坐标加上z坐标后也被称为窗口坐标(Windows Coordinates)

2.4 光栅化(Rasterization)

也称扫描转换(Scan Conversion)

2.4.1 Triangle Setup(三角形生成)

在此阶段,将计算三角形的微分、边方程和其他数据。这些数据可用于三角形遍历,以及几何阶段生成的各种阴影数据的插值。使用固定功能硬件完成。

2.4.2 Triangle Traversal(三角形遍历)

生成片元(fragment)

2.5 像素处理(Pixel Processing)

2.5.1 Pixel Shading(像素着色)

以从光栅化阶段所传来的顶点各值的插值进行各种计算、纹理采样,负责此工作的即为pixel shader
*在OpenGL中称pixel shader为fragment shader

2.5.2 Merging(合并)

*该阶段也被称为ROP(raster operations pipeline)光栅操作管线
每个像素的颜色都存在color buffer(RGB数组)中。
该阶段的任务是将所有像素着色阶段的颜色与已经存储与color buffer中的颜色合并(combine)。该阶段虽不可完全编程,但有很强的可配置性。

*此时进行深度写入与深度测试。
*目前已可以用各种数值测试来对片元进行取舍。
*stencil buffer是一个用于储存该受渲染片元的位置的offscreen buffer,而其中的值可用于影响color buffer与z-buffer,可进行混合(blend)操作

通常使用双重缓冲或三重缓冲防止光栅化过程显示在屏幕上。

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

猜你喜欢

转载自blog.csdn.net/weixin_44422550/article/details/104414418