三维渲染流水管线大体上分为:
1.应用程序阶段
2.顶点变换阶段
3.光栅化阶段
一、应用程序阶段
应用程序阶段的主要任务:将需要在屏幕上(具体形式取决于具体输入设备)显示出来绘制的几何体(也就是绘制图元,rendering primitives,如点、线、矩形等)输入到绘制管线的下一个阶段。
对于被渲染的每一帧,应用程序阶段将摄像机位置,光照和模型的图元输出到管线的下一个主要阶段——几何阶段。
简单来说就是为每一帧的游戏做准备。
二、顶点变换阶段(几何变换)
该阶段可总结为:五大坐标系四大变换矩阵
(1)五大坐标系:本地坐标系、世界坐标系、摄像机坐标系、投影坐标系、视口坐标系
本地坐标系:
简单来说就是以场景的物体自身中心建立的坐标系,是一个相对坐标系,比如:以人的腰为中心,头顶方向为y方向,肩部方向为x方向,人脸的正向为z方向所建立的坐标系。
世界坐标系:
简单来说就是场景空间坐标系,是一个绝对坐标系。
摄像机坐标系:
主要有三个向量需要理解:摄像机看点(look at)、摄像机所在点(eye)、摄像机上沿点(up),一般这三个向量并不垂直,真正的xyz三坐标轴如下。
投影坐标系:
实际上是把三维物体成像在二维空间里,可以说是模拟人眼,能做到近大远小。
投影严格意义上分为正交投影、透视投影,前者适用2D游戏,后者适合3D游戏。
视口(屏幕)坐标系:
将投影坐标系下的成像转到屏幕下,这时的成像才能被我们所看到。投影坐标系其实就是以屏幕左上角为原点,左上角指向右上角的方向为x正方向,左上角指向左下角的方向为y正方向。
(2)四大变换矩阵:世界变换矩阵、摄像机变换矩阵、投影变换矩阵、视口变换矩阵
简单来说,一个模型想要在屏幕中被展现,必须经过这四个变换才能实现。
世界变换矩阵:
将本地坐标系下的坐标转换到世界坐标系下。
摄像机变换矩阵:
将世界坐标系下的坐标转换到摄像机坐标系下。
投影变换矩阵:
将摄像机坐标系下的坐标转换到投影坐标系下。
视口变换矩阵:
将投影坐标系下的坐标转换到视口坐标系下。
三、光栅化阶段
给定经过顶点变换后的顶点,颜色以及纹理坐标(均来自于几何阶段),给每个像素(Pixel)正确配色,以便正确绘制整幅图像。
该阶段分为:
三角形设定(Triangle Setup)阶段
三角形遍历(Triangle Traversal)阶段
像素着色(Pixel Shading)阶段
融合(Merging)阶段
(1)三角形设定阶段:
三角形设定阶段主要用来计算三角形表面的差异和三角形表面的其他相关数据。
(2)三角形遍历阶段:
找到哪些采样点或像素在三角形中的过程通常叫三角形遍历。
(3)像素着色阶段:
像素着色阶段的主要目的是计算所有需逐像素计算操作的过程。
(4)融合阶段:
融合阶段的主要任务是合成当前储存于缓冲器中的由之前的像素着色阶段产生的片段颜色。此外,融合阶段还负责可见性问题(Z缓冲相关)的处理。
以上每个点后面都会陆续更新。。。。
参考文档:
【《Real-Time Rendering 3rd》 提炼总结】(二) 第二章 · 图形渲染管线 The Graphics Rendering Pipeline
https://zhuanlan.zhihu.com/p/26527776