3D图形渲染管线
来源:互联网 发布:淘宝补发货物能退款吗 编辑:程序博客网 时间:2024/04/30 19:36
对图形渲染管线的各个阶段到底做了些什么,总是不甚清楚,每次翻书查阅,但是过了一阵遇到还是翻书,这次看Cg教程里写的不错,特地摘下来,以备查阅。 -by shenzi/2010.3.25
一.顶点变换(Vertex Transformation):
顶点变换是图形硬件渲染管线种的第一个处理阶段。顶点变换在每个顶点上执行一系列的数学操作。这些操作包括把顶点位置变换到屏幕位置以便光栅器使用,为贴图产生纹理坐标,以及照亮顶点以决定它的颜色。
坐标系统:
图4:用于顶点处理的坐标系统和变换
应用程序在一个被称为物体空间(也叫模型空间)的坐标系统里指定顶点位置。当一个美工人员创建了一个物体的三维模型的时候,他选择了一个方便的方向、比例和位置来放置模型的组成顶点。一个物体的物体空间可以与其它物体的物体空间没有任何关系。
世界空间:
一个物体的物体空间和其它对象没有空间上的关系。世界空间的目的是为在你的场景中的所有物体提供一个绝对的参考。一个世界空间坐标系如何建立可以任意选择。例如:你可以决定世界空间的原点是你房间的中心。然户,房间里的物体就可以相对房间的中心和某个比例和某个方向放置了。
建模变换:
在物体空间中指定的物体被放置到世界空间的方法要依靠建模变换。例如:你也许需要旋转、平移和缩放一个椅子的三维模型,以使椅子可以正确地放置在你的房间的世界坐标系统里。在同一个房间中的两把椅子可以使用同样的三维椅子模型,但使用不同的建模变换,以使每把椅子放在房间中不同的位置。
眼空间:
最后,你要从一个特殊的视点(“眼睛”)观看你的场景。在称为眼空间(或视觉空间)的坐标系统里,眼睛位于坐标系统的原点。朝“上”的方向通常是轴正方向。遵循标准惯例,你可以确定场景的方向使眼睛是从z轴向下看。
视变换:
从世界空间位置到眼空间位置的变换时视变换。典型的视变换结合了一个平移把眼睛在世界空间的位置移到眼空间的原点,然后适当地旋转眼睛。通过这样做,视变换定义了视点的位置和方向。
我们通常把分别代表建模和视变换的两个矩阵结合在一起,组成一个单独的被称为modelview的矩阵。你可以通过简单地用建模矩阵乘以视矩阵把它们结合在一起。
剪裁空间:
当位置在眼空间以后,下一步是决定什么位置是在你最终要渲染的图像中可见的。在眼空间之后的坐标系统被称为剪裁空间,在这个空间中的坐标系统称为剪裁坐标。
投影变换:
从眼空间坐标到剪裁空间的变换被称为投影变换。投影变换定义了一个事先平截体(view frustum),代表了眼空间中物体的可见区域。只有在视线平截体中的多边形、线段和点背光栅化到一幅图形中时,才潜在的有可能被看得见。
标准化的设备坐标:
剪裁坐标是齐次形式<x,y,z,w>的,但我们需要计算一个二维位置(一对x和y)和一个深度值(深度值是为了进行深度缓冲,一种硬件加速的渲染可见表面的方法)。
透视除法:
用w除x,y和z能完成这项工作。生成的结果坐标被称为标准化的设备坐标。现在所有的几何数据都标准化为[-1,1]之间。
窗口坐标:
最后一步是取每个顶点的标准化的设备坐标,然后把它们转换为使用像素度量x和x的最后的坐标系统。这一步骤命名为视图变换,它为图形处理器的光栅器提供数据。然后光栅器从顶点组成点、线段或多边形,并生成决定最后图像的片段。另一个被称为深度范围变换的变换,缩放顶点的z值到在深度缓冲中使用的深度缓存的范围内。
当一个图元被光栅化为一堆零个或多个片段的时候,插值、贴图和着色阶段就在片段属性需要的时候插值,执行一系列的贴图和数学操作,然后为每个片段确定一个最终的颜色。除了确定片段的最终颜色,这个阶段还确定一个新的深度,或者甚至丢弃这个片段以避免更新帧缓存对应的像素。允许这个阶段可能丢弃片段,这个阶段为它接收到的每个输入片段产生一个或不产生着过色的片段。
- 3D图形渲染管线
- 3D图形渲染管线
- 3D图形渲染管线
- 3D图形渲染管线
- 3D图形渲染管线
- 3D图形渲染管线
- 3D图形渲染管线
- 3D图形渲染管线
- 3D图形渲染管线 (转)
- OpenGL/3D图形渲染管线
- (一) 3D图形渲染管线
- OpenGL/3D图形渲染管线
- 3D渲染管线
- 3D渲染管线
- 3D渲染管线
- 3D图形技术概念和渲染管线的处理
- Shader和3D图形渲染管线(Render Pipeline)
- 图形渲染管线
- cluster on JMS
- java.lang.OutOfMemoryError解决办法
- 地形渲染整体思路
- reinterpret_cast
- QT 常用问题解答(转)
- 3D图形渲染管线
- nginx 做为反向代理实现负载均衡的例子
- 将大值数据离散化做法
- android 启动
- 五种iterator的类别
- IIS专家蜘蛛监控系统
- 转] 男女那点事
- MQ java Code
- accelerated c++ 1章 练习答案