【图形学】图形管道

时间:2022-05-16 16:30:52

  多数渲染系统有极大的共性,图形管道伪代码可以说明带有光照的单个图象的渲染过程,这样会对渲染过程有一个整体认识。

图形管道伪代码  

 1 //设置场景:渲染的出发点——视点,输出——视图,设置光照和雾化
2 //设置观察场景的方式——摄像机
3 setupTheCamera();
4 //清除深度缓冲
5 clearZBuffer();
6 //设置光源和雾化
7 setGlobalLightingAndFog();
8 //得到可见物体列表
9 visibleObjList = visibleDetermination(scene);
10 //开始渲染
11 for (obj in visibleObjList) {
12 //使用包围体执行VSD检测
13 if (!obj.isBoundingVisible()) continue;
14 trimesh = obj.getGeometry();
15 for (triangle in trimesh){
16 //变换顶点到裁剪空间,执行顶点级别光照
17 clipSpaceTriangle = transformAndLighting(triangle);
18 //背面剔除
19 if (clipSpaceTriangle.isBackFacing()) continue;
20 //视锥体裁剪
21 clippedTriangle = clipToViewVolume(clipSpaceTriangle);
22 if (clippedTriangle.isEmpty()) continue;
23 //三角形投影至屏幕坐标,并且光栅化
24 clippedTriangle.projectToScreenSpace();
25 for (pixel in triangle) {
26 //插值颜色,z-Buffer和纹理纹理映射坐标
27 //执行z-Buffer和alpha检测
28 if (!zbufferTest()) continue;
29 if (!alphaTest()) continue;
30 //像素着色
31 color = shadePixel();
32 //写内容到帧缓冲区
33 writePixel(color, interpolatedZ);
34 }
35 }
36 }

渲染管线

渲染管线流程图:

【图形学】图形管道

渲染过程示意图

【图形学】图形管道