图形硬件流水线
一,几何阶段
0,作用概括
先对顶点属性处理,再对图元处理,但结果最终都要变换到ClipSpace去给硬件视锥裁减;
裁剪完成后,再将图元映射到2D Space下,先执行背面剔除后,再传给光栅化使用。
1,初始化顶点与图元 IA
(1)根据顶点布局从显存中读取Vertex信息传给VS
(2)根据图元拓扑装配基本图元,但是如果后面发生图元信息更改的情况,还会重新装配。
(3)生成系统语义值,提供优化
2,顶点处理 VS
(1)主要是MVP变换,变换到ClipSpace
(2)插值数据预处理:比如顶点光照等。
3,图元处理(可选)
3.1 传统处理流程
3.1.1 Tessellation Shader
(1)Hull Shader
(2)Tessellator
(3)Domain Shader
3.1.2 Geometry Shader
3.2 Mesh Shader
4,ClipSpace
在进入硬件的FrustumClip之前,必须装配好图元,并转换到ClipSpace。
5,硬件Frustum Clip
6,2D Space
6.1 NDC Space
对坐标执行透视除法, 在这一步才是执行了完整的透视变换,使得坐标与1/z成线性比了。
6.2 Screen Space
6.3 背面剔除
二,光栅化阶段
0,作用概括
将2D图元采样成片元(候选像素),透视矫正后正确插值属性,再将片元与属性传递给PS使用。
1,几何检测
1.1 本质
根据2D 图元覆盖的范围/边界,遍历内部像素,检测与图元的实际相交情况。
1.2 边缘函数
边界粗算,遍历像素时具体检测。
1.3 扫描线
边界细算,遍历像素时不用检测。
2,透视矫正
3,裁剪测试
4,硬件MSAA
5,为什么选择三角形
(1)最基本的图元,多边形都可拆。
(2)一定是个有限平面,且内外部定义明确。
(3)重心坐标便于插值。
三,EarlyZ(可选)
1,相关概念
Z-PrePass、Hi-Z、Z-Cull
2,限制
(1)半透明
(2)Discard
(3)PS中修改DepthValue
四,像素处理
五,输出合并
1,Test
Depth,Stencil,Alpha,BlendingMode
