预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共18页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

计算机图形学GPU编程技术学习资料:一、ProgrammableGraphicsProcessingUnit发展历程自1998年后,ModernGPU的发展历史可以分为4个阶段 1998年NVIDIA宣布ModernGPU研发成功,标志着第一代ModernGPU的诞生:GPU功能非常有限,只能用于纹理组合的数学计算或者像素颜色值的计算 1999到2000年,是第二代modernGPU的发展时期:可以进行三维坐标转换和光照计算,支持立方体纹理cubemap 2001年是第三代modernGPU的发展时期:允许应用程序指定一个序列的指令进行顶点操作控制(GPU编程的本质!)第四代modernGPU的发展时期从2002年末到2003年:支持vertexprogrammability和fragmentprogrammability,DirectX和OpenGL也扩展了自身的API,用以支持vertexprogrammability和fragmentprogrammability 支持vertexprogrammability和fragmentprogrammability 支持IEEE32位浮点运算 支持4元向量,4阶矩阵计算 提供分支指令,支持循环控制语句 具有高带宽的内存传输能力(>27.1GB/s) 支持1D、2D、3D纹理像素查询和使用,且速度极快 支持绘制到纹理功能(RendertoTexture,RTT)GPU具有高并行结构(highlyparallelstructure),所以GPU在处理图形数据和复杂算法方面拥有比CPU更高的效率PU采用流式并行计算模式,可对每个数据进行独立的并行计算(流内任意元素的计算不依赖于其它同类型数据)图形绘制管线可分为三个主要阶段 应用程序阶段,使用高级编程语言(C、C++、JAVA等)进行开发,主要和CPU、内存打交道,诸如碰撞检测、场景图建立、空间八叉树更新、视锥裁剪等经典算法都在此阶段执行 几何阶段,主要负责顶点坐标变换、光照、裁剪、投影以及屏幕映射,该阶段基于GPU进行运算,在该阶段的末端得到了经过变换和投影之后的顶点坐标、颜色、以及纹理坐标 光栅阶段,基于几何阶段的输出数据,为像素(Pixel)正确配色,以便绘制完整图像,,每个像素的信息存储在颜色缓冲器(colorbuffer或者framebuffer)中shaderlanguage被定位为高级语言,如,GLSL的全称是“HighLevelShadingLanguage”,Cg语言的全称为“CforGraphic”,并且这两种shaderlanguage的语法设计非常类似于C语言。 高级语言的一个重要特性是“独立于硬件”,但是目前shaderlanguage完全依赖于GPU构架, 任意一种shaderlanguage都必须基于图形硬件,所以GPU编程技术的发展本质上还是图形硬件的发展。在shaderlanguage存在之前,展示基于图形硬件的编程能力只能靠低级的汇编语言。使用shaderlanguage编写的程序称之为shaderprogram(着色程序)。着色程序分为两类: vertexshaderprogram(顶点着色程序,运行在顶点处理器上) fragmentshaderprogram(片断着色程序,运行在片段处理器上)顶点着色程序从GPU前端模块(寄存器)中提取图元信息(顶点位置、法向量、纹理坐标等),并完成顶点坐标空间转换、法向量空间转换、光照计算等操作,最后将计算好的数据传送到指定寄存器中; 然后片断着色程序从中获取需要的数据,通常为“纹理坐标、光照信息等”,并根据这些信息以及从应用程序传递的纹理信息(如果有的话)进行每个片断的颜色计算,最后将处理后的数据送光栅操作模块。FragmentShaderProgramCG、GLSL、HLSL