【Unity3D】计算机图形学-GPU渲染管线
【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标准顶点和像素着色的基础之上的程序。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步