[UnityShader入门精要读书笔记]02.GPU流水线之几何阶段

[UnityShader入门精要读书笔记]02.GPU流水线之几何阶段

从图中可以看出,GPU的渲染流水线接收顶点数据作为输入。这些顶点数据是有应用阶段加载到显存中,再由DrawCall指定的。

顶点着色器是完全可编程的,它通常用于实现顶点的空间变换,顶点着色器等功能,曲面细分着色器是一个可选的着色器。用于细分图元,几何着色器同样是一个可选的着色器,它用于执行图元,或者产生更多的图元。然后是裁剪阶段,目的是把不在失业范围的顶点裁剪掉,并剔除某些三角图元的面片。该阶段的最后一个阶段是屏幕映射,不可配置和编程,用于把每个图元的坐标转换到屏幕坐标系中。

光栅化阶段中的三角形设置,三角形遍历都是固定函数阶段,片元着色器则是可编程的。用于实现逐片元的着色操作。最后,逐片元操作阶段负责执行很多重要的操作,例如修改颜色,深度缓冲等。

 

顶点着色器是流水线的第一个阶段,输入来自于CPU。该阶段的主要工作室坐标变换和逐顶点光照。

[UnityShader入门精要读书笔记]02.GPU流水线之几何阶段

坐标变换就是把顶点坐标从模型空间转换到齐次裁剪空间。

o.pos = mul(UNITY_MVP,v.position);

[UnityShader入门精要读书笔记]02.GPU流水线之几何阶段

裁剪是裁剪掉不在摄像机视野范围内的图元。

[UnityShader入门精要读书笔记]02.GPU流水线之几何阶段

这一步是不可编程的,但我们可以自定义裁剪操作。

 

屏幕映射的任务就是把每个图元的x和y坐标转换到屏幕坐标系。屏幕坐标系是一个二维坐标系,它和用于显示画面的分辨率有很大关系。

[UnityShader入门精要读书笔记]02.GPU流水线之几何阶段