渲染管线与坐标变换
一.渲染流水线
渲染流水线的工作任务是由一个三维场景出发,生成一张二维图像。即从一系列顶点数据。纹理等信息,转换成一张图像。
渲染流程一共三个流程:应用阶段,几何阶段和光栅化阶段
(一)应用阶段 开发者主导
1.准备好场景数据
2.粗粒度剔除:把不可见的物体剔除出去
3.设置好每个模型的渲染状态
该阶段的输出是模型的渲染状态:材质,纹理,渲染所用的几何信息
(二)几何阶段
该阶段是个每个渲染图元打交道,进行逐顶点、逐多边形的操作。
几何阶段的一个重要任务就是把顶点坐标变换到屏幕空间,再交给光栅器进行处理。
这阶段将会输出屏幕空间的二维顶点坐标,每个顶点对应的深度值,着色等信息,并传给下个阶段。
(三)光栅化阶段
这一阶段将会使用上阶段传递来的屏幕像素,并渲染出最终的图像。
光栅化的主要任务,决定每个渲染图元中的像素应该被绘制在屏幕上
二.GPU流水线
(一)顶点着色器
该阶段的处理单位是顶点,主要工作是坐标变换和顶点光照
1.1坐标变换:坐标变换可分为两种
(1)改变顶点位置,来达到视觉效果,布料,水面等
(2)把顶点坐标从模型空间转换到齐次裁剪空间(必须要完成的工作)
(二)裁剪
该步不可编程(详情见《计算机图形学》)
(三)屏幕映射
任务:把每个图元的x和y坐标转换到屏幕坐标系中,z坐标不做任何改变。屏幕坐标系和z坐标一起构成一个坐标系,成为窗口坐标系
(四)三角形设置与三角形遍历
生成片元
(五)片元着色器
输出为颜色值,产生一系列数据信息
在该阶段可以完成纹理采样
(六)逐片元操作
该步骤的目的为“合并”
该阶段的任务:
(1)决定每个片元的可见性:深度测试,模板测试
(2)若一个片元通过所有测试,则进行颜色混合(Blending)
三.顶点坐标变换过程
(1)模型空间
也称为对象空间或局部空间,即模型以本身为坐标原点,形成的坐标系
(2)世界空间
游戏空间的绝对位置
(3)观察空间
也被称为摄像机空间
从世界空间到摄像机空间的转化方法:
1.利用矩阵
2.平移观察空间,使得摄像机原点位于世界坐标的原点
(4)裁剪空间
通过视锥体,完成裁剪操作
视锥体有两种,完成两种投影类型:正交投影和透视投影
(5)屏幕空间(2D空间)
把视锥体投影到屏幕空间