@author: 白袍小道

@来源:RealTime Render

@建议书籍:龙书、RealTimeR第四版、GPUGem和PRO

(笔记) RealTimeRender[实时渲染] C2-LMLPHP

(来源:暗影不解释)

引点

这一章关注的管线中的管道功能,而非实现。

(这里开头一句话非常有意思:链条的坚固程度取决于它最薄弱的环节。切记,嘿嘿)

注点

1、视椎体裁剪,需要在装配之前(或者构建顶点缓冲区前)

2、基础管道图

(笔记) RealTimeRender[实时渲染] C2-LMLPHP

说明:

管道的处理并行或串行的,管道的数据是串行的,流水线(货物一个是一部部来,但可以多个货物都在处理)

每一个阶段都是一个管道,当然管道中可以划分出子阶段

3、FPS 和 HertZ

帧每秒用来表示要么是特定帧的速率,要么是某段时间内的平均性能使用。

赫兹用于硬件,例如显示器,它被设置为一个轴速率。

四大基础管道

、应用程序阶段

该阶段是可以(记得GPU也可以做运算的哦)在CPU上,那就是你想做什么就做什么(物理,动画,碰撞等等)。

为了下一步的输入或者说有效输入

(

点,线,和

三角形

)

可以对数据(比如场景,模型,顶点,索引做一些有效的查询操作),或者说做一些延时处理(只是为了提高效率),再或者做一些统计(如有多少顶点要处理,有多少边要处理,等等)

下一阶段几何处理(不是几何着色)

、几何处理

每个三角形和每个顶点的大部分操作

2.0 图元装配

(笔记) RealTimeRender[实时渲染] C2-LMLPHP

.1

顶点着色处理

顶点着色有两个主要任务,即计算位置、计算程序想要的顶点输出数据(如正常坐标和纹理坐标,可能还会包含关联骨骼信息)。

目的:确定模型上顶点处材质的光照效果

关键词:模型空间,坐标系及其转换,顶点颜色,法线,视野空间,

(笔记) RealTimeRender[实时渲染] C2-LMLPHP

2.2

投影和裁剪

视图卷转换为一个单位立方体

投影:【矩阵转换】

注意因为投影,Z坐标不会放在生成的图像中(二维),而放在深度缓冲区。

(笔记) RealTimeRender[实时渲染] C2-LMLPHP

裁剪坐标: (注意一点是在 处理单元前,所以是除W前】

(笔记) RealTimeRender[实时渲染] C2-LMLPHP

2.3

屏幕空间映射

前面计算输出的坐标映射到对应的屏幕坐标系。

(笔记) RealTimeRender[实时渲染] C2-LMLPHP

注意:只有视图卷中的(剪切的)基元被传递到屏幕映射的进入这个阶段,坐标仍然是三维的。就是裁剪后。

2.4

选项(额外能力)

当处理完顶点着色操作后,是可以进入到曲面细分,几何着色,输出流(依赖硬件)

3 光栅化阶段

光珊化rasterization:

(笔记) RealTimeRender[实时渲染] C2-LMLPHP

a\在经过几何阶段处理得到的数据(顶点,颜色以及纹理坐标)基础上给每个像素(Pixel)正确配色,以便正确绘制整幅图像的过程

b\从二维顶点所处的屏幕空间(所有顶点都包含Z值即深度值,及各种与相关的着色信息)到屏幕上的像素的转换。

3.1

三角形设定:Triangle Steup

在这一阶段,将计算三角表面差异和相关数据,在为其设计的硬件上执行。

3.2

三角形遍历:Triangle Traversal

目的:采样点或像素在三角形中

通过逐像素进行判断(改像素的像素中心是否被三角形覆盖,若部分重合,将重合的部分生成片段),片段的属性来源于顶点数据的插值。

3.3

像素着色:Pixel Shading

(笔记) RealTimeRender[实时渲染] C2-LMLPHP

目的:将插值的数据,通过计算,得到颜色信息。

可编程GPU内执行、计算所有需逐像素操作的过程。

3.4

合并/融合 Mergin

目的:合并/融合 当前储存于缓冲器中的由之前的像素着色阶段产生的 片段颜色

a\ GPU子单元执行,并非完全可编程

b\可配置(就是可根据需要调整参数,如半透处理,交叉)

c\可见性问题的处理( Z-buffer用起来)

d\缓冲区:模版缓冲区,深度缓冲区、累计缓冲区(卷积,来处一些特殊效果:软阴影,景深)

光栅化阶段:从相机视点处看到的东西就可以在荧幕上显示出来,但入DX交换链处理(就是双缓冲机制),先到BackBuffer,然后交换(不影响显示的时候)到前置缓冲区。

05-11 16:56