(一)GPU图形绘制管线
来源:互联网 发布:淘宝客服机器人回复 编辑:程序博客网 时间:2024/06/07 10:07
《GPU编程与CG语言之阳春白雪下里巴人 》读书笔记
同时参考了:http://www.cnblogs.com/Esfog/p/3534435.html
图形绘制管线(rendering pipeline)描述GPU渲染流程,即“给定视点、三维物体、光源、照明模式,和纹理等元素,如何绘制一幅二维图像”。
图形绘制管线分为三个主要阶段:
(一)应用程序阶段
使用高级编程语言(C、C++等)进行开发,主要和CPU、内存打交道,诸如碰撞检测、场景图建立、空间八叉树更新、视锥裁剪等都在此阶段执行。在该阶段的末端,几何体数据(顶点坐标、法向量、纹理坐标、纹理等)通过数据总线传送到图形硬件(时间瓶颈) 。
(二)几何阶段
主要负责顶点坐标变换、光照、裁剪、投影以及屏幕映射,该阶段基于GPU进行运算,在该阶段的末端得到了经过变换和投影之后的顶点坐标、颜色、以及纹理坐标 。
显示屏是二维的,GPU所需要做的是将三维的数据,绘制到二维屏幕上,并到达“跃然纸面”的效果。顶点变换中的每个过程都是为了这个目的而存在。
A、顶点坐标变换的先后顺序 :
(2)world space coordinate ,世界空间坐标系。将一个模型导入计算机后,就有一个相对于坐标原点 的位置,那么这个位置就是world space coordinate,从object space coordinate到world space coordinate的变换过程由一个四阶矩阵控制,通常称之worldmatrix 。光照计算通常是在world coordinate space(世界坐标空间)中进行的。
(3)eye space,摄像机空间。即以camera(视点或相机)为原点,由视线方向、视角和远近平面,共同组成一个梯形体的三维空间,称之为viewing frustum(视锥) 。
在计算机中每次只能从唯一的视角出发渲染物体。在游戏中,都会提供视点漫游的功能,屏幕显示的内容随着视点的变化而变化。这是因为GPU将物体顶点坐标从world space转换到了eye space。
(4)project and clip space,投影和剪切空间。
一旦顶点坐标被转换到eye space中,就需要判断哪些点是视点可见的。位于viewing frustum梯形体以内的顶点,被认定为可见,而超出这个梯形体之外的场景数据,会被视点去除(Frustum Culling,也称之为视锥裁剪)。这一步通常称之为“clip(裁剪)”,识别指定区域内或区域外的图形部分的过程称之为 裁剪算法。
从视点坐标空间到屏幕坐标空间(screen coordinate space)事实上是由三步组成:
1、用透视变换矩阵把顶点从视锥体中变换到裁剪空间的CVV中;
经过图形学前辈们的精心分析,裁剪被安排到一个单位立方体中进行,该立方体的对角顶点分别是(-1,-1,-1)和(1,1,1),通常称这个单位立方体为规范立方体(Canonical view volume,CVV) 。把顶点从viewing frustum变换到CVV中,这个过程才是我们常说或者听说的“投影”。主要的投影方法有两种:正交投影(也称平行投影,orthogonal)和透视投影(perspective)。
2、在 CVV进行图元裁剪;
3、屏幕映射:将经过前述过程得到的坐标映射到屏幕坐标系上。
B、图元装配,Primitive Assembly
网格由顶点和索引组成,在之前的流程中是对顶点的处理,在这个图元装配阶段是根据索引将顶点链接在一起,组成线、面单元。
(三)Rasterization 光栅阶段
基于几何阶段的输出数据,为像素(Pixel)正确配色,以便绘制完整图像,该阶段进行的都是单个像素的操作,每个像素的信息存储在颜色缓冲器(color buffer 或者 frame buffer)中。
屏幕是由像素矩阵构成的,而我们处理的模型只是由有限的顶点构成的,经过图元装配后形成的基本图元(点线面),我们要把它和
屏幕上的像素区域对应起来,也就是进行像素填充,一般模型的每个顶点都会带有一些基本信息(例如:法线、位置、纹理坐标、颜
色等),即一个三角面其实只有三个顶点是有基本属性的,而其他填充进来的像素区域是并不直接拥有这些基本属性的,他们的属性都
是通过在顶点间差值计算得来的(其实上面提到的像素应该称为片元fragment)。经过这些处理,模型基本在GPU中已经形成了他所
要绘制到屏幕上的样子了。
注意:光照计算属于几何阶段,因为光照计算涉及视点、光源和物体的世界坐标,所以通常放在世界坐标系中进行计算;而雾化以及涉及物体透明度的计算属于光栅化阶段,因为上述两种计算都需要深度值信息(Z值),而深度值是在几何阶段中计算,并传递到光栅阶段的。
图形绘制管线(Rendering Pipeline),蓝色筐是可编程的shader阶段 The blue boxes are programmable shader stages.
- (一)GPU图形绘制管线
- GPU图形绘制管线(一)
- GPU图形绘制管线
- GPU图形绘制管线
- GPU 图形绘制管线
- GPU图形绘制管线
- GPU图形绘制管线
- GPU 图形绘制管线
- GPU图形绘制管线
- GPU图形绘制管线(二)
- 计算机图形学笔记---GPU图形绘制管线
- Unity Shader 学习笔记 (六) GPU 图形绘制管线
- 图形绘制管线描述GPU的渲染流程
- Unity&Shader基础篇-可编程GPU图形绘制管线
- GPU图形固定渲染管线
- (一) 3D图形渲染管线
- [置顶]浅谈 GPU图形渲染管线
- 浅谈 GPU图形固定渲染管线
- 数字图像基本处理算法
- 转载:Android多媒体应用开发系列(一) 拍照
- mac opencv 安装使用
- ADB指令之删除仿真手机中文件
- 论文笔记之Learning Convolutional Neural Networks for Graphs
- (一)GPU图形绘制管线
- cookie
- Android Socket 发送广播包的那些坑
- node第四天-爬取页面
- Perl 将一目录下的文件按照文件名中的时间字符串排序
- EditPadPro7.4汉化版 下载
- 在FPGA中实现源同步LVDS接收正确字对齐
- 移动端Web适配
- Android开发中经常使用到的color,个人使用,仅供参考