【Unity3D】计算机图形学-GPU渲染管线

1、GPU渲染管线:CPU传送给GPU一堆数据,最后渲染得出来一副二维图像,而这些数据就包括了”视点、三维物体、光源、照明模型、纹理”等元素。

渲染管线主要分为三个阶段:应用程序阶段、顶点处理阶段、光栅化阶段。

2、应用程序阶段:Unity3D做好碰撞检测、视锥剪裁、场景图建立、空间八叉树更新等等计算,CPU、内存把计算好的数据(顶点坐标、法向量、纹理坐标、纹理信息)通过数据总线传给GPU做下一步处理。其中顶点坐标、法向量、纹理坐标放在Vertex buffer中在顶点处理阶段使用,纹理信息放在Texture buffer中在光栅化阶段使用。

3、顶点处理阶段:主要工作就是“变换三维顶点坐标”和“光照计算”。负责顶点坐标变换、光照、裁剪、投影以及屏幕映射,该阶段基于GPU进行运算。

顶点处理的转换操作和对应空间:对象空间(世界转换)--> 世界空间(视见转换)--> 相机空间(投影转换)--> 裁剪空间
转换后的顶点坐标组成线、片元,超出屏幕外的进行裁剪,这一步就是图元装配和三角形处理
顶点处理阶段完成之后输出转换后的顶点坐标和需要绘制的片元。

4、光栅化阶段:计算片元中每个像素对应的颜色值和深度值保存到像素缓冲区中。这里就要用到应用程序阶段计算产生存放在Texture buffer中的纹理信息。

光栅化阶段的步骤:片元、坐标--> 背面剔除--> alpha测试--> 模板测试--> 深度测试--> 融合处理--> 抖动处理--> 逻辑运算--> 像素帧缓冲

5、Shader编程:
GPU包括一个可编程顶点处理器和一个可编程片段处理器。分别对应于渲染管线的顶点处理阶段和光栅化阶段的计算。
Shader即着色器,分为顶点着色器和片段着色器和GPU的两个处理器是一一对应的。
Shader编程即直接操作GPU的API对GPU的两个处理器进行控制。达到优化性能的目的。

6、Shader编程语言:
CG(c for graphics):计算机图形编程C语言超集,由Nvida公司开发;
GLSL:基于OpenGL的OpenGL Shading Language;
HLSL:基于DirectX的High Level Shading Language;
CG程序是运行在OpenGL和DirectX标准顶点和像素着色的基础之上的程序。

来源:nobcaup

最新文章