Real-Time Rendering Fourth Edition 学习笔记之 -- 第二章:图形渲染管线

一环出问题,全局完。 -----匿名

Real-Time Rendering Fourth Edition 学习笔记之 -- 第二章:图形渲染管线_第1张图片
本章将会介绍渲染管线的不同阶段。



1 架构

非流水线系统划分成n个流水线阶段,可以以n为因子提速。其中最慢的阶段就是整个流水线性能的瓶颈。
计算机图形学流水线可以简单的划分为:应用、几何处理、光栅化和像素处理阶段:
Real-Time Rendering Fourth Edition 学习笔记之 -- 第二章:图形渲染管线_第2张图片



2 应用阶段

应用阶段部分计算也可以使用GPU完成(计算着色器 CS),本阶段不能划分为多个子阶段。
在CPU设计中,superscalar结构可以在同一个阶段,同时处理多个进程。
加速算法,比如例子剔除算法也在这个阶段实现。



3 几何处理

GPU上的几何处理阶段负责大部分逐三角形/逐顶点的计算,它还可以进一步划分为:
在这里插入图片描述


3.1 顶点着色计算

坐标系变换:
Real-Time Rendering Fourth Edition 学习笔记之 -- 第二章:图形渲染管线_第3张图片
投影分为正交投影和透视投影两种:
Real-Time Rendering Fourth Edition 学习笔记之 -- 第二章:图形渲染管线_第4张图片


3.2 可选的顶点处理

曲面细分、几何着色器和流输出。


3.3 裁剪

只有全部或者部分在视体内部的基元才能传递到光栅化阶段。
Real-Time Rendering Fourth Edition 学习笔记之 -- 第二章:图形渲染管线_第5张图片


3.4 屏幕映射

Real-Time Rendering Fourth Edition 学习笔记之 -- 第二章:图形渲染管线_第6张图片
屏幕坐标系中,(0; 0)在OpenGL中是左下角,而在DirectX中是左上角;这个区别在改变API的时候非常重要。



4 光栅化阶段

分为2个子阶段:triangle setup (also called primitive assembly) and triangle traversal;光栅化也叫做scan conversion。
Real-Time Rendering Fourth Edition 学习笔记之 -- 第二章:图形渲染管线_第7张图片
最简单的是单点采样,如果中心点在三角形中,那么对于的像素就考虑在三角形中。像素也可以使用超采样或者多重采样抗锯齿技术。


4.1 三角形设置(Triangle Setup)

在这个阶段,差值、变方程和其他三角形用到的数据被计算。这些数据可能用于三角形遍历,也会用以各种数据的差值计算。固定方程的硬件用以这些工作。


4.2 三角形遍历(triangle traversal)

现在每个其中心点被三角形覆盖的像素点已经被检查过,并且为这部分像素创建了重叠了三角形的片段。找到所有采样或者像素在三角形内部的操作叫做三角形遍历。
最终所有在基元内部的像素/采样会送到像素处理阶段。



5 像素处理阶段

包含两个子阶段:像素着色和合并。


5.1 像素着色

该阶段是可编程的。
Real-Time Rendering Fourth Edition 学习笔记之 -- 第二章:图形渲染管线_第8张图片


5.2 合并

这个阶段也叫ROP(raster operations (pipeline)或者render output unit)。这个阶段不完全是可编程的,它是高度可配置的,支持多种效果。
其中一种是z-buffer,绘制透明物体时z-buffer的一个弱点。
还有其他的比如alpha通道和stencil buffer、blending等。
framebuffer通常保存所有系统中的所有buffer。
双缓冲可以解决闪屏问题。



6 完整的渲染管线

值得注意的是,这里介绍的管线不是唯一的,对于离线渲染有不同的路径;电影产品通常使用micropolygon pipelines,但是射线追踪和路径追踪会延后处理。

还有一种 xed-function pipeline是多年中唯一的渲染管线,之所以叫这个名字是因为支持它的图形硬件不支持灵活的可编程,最后一个该管线的硬件是2006年生产的Nintendo’s Wii。但是本书作为第四版,只介绍可编程GPU。



进一步阅读和材料

Blinn’s book A Trip Down the Graphics Pipeline是一本比较老的书,用来编写一个基于软件的渲染管线。它是一个很好的材料用来学习渲染管线的细节。
The venerable (yet frequently updated) OpenGL Programming Guide (a.k.a. the \Red Book")提供了图形管线和算法的描述。
这本书的网站realtimerendering.com给出了很多管线图表和渲染引擎实现的链接。

你可能感兴趣的:(图形学)