- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
OpenGL着色语言
OpenGL 低级着色语言与高级着色语言
节选自偶的毕业论文,主要是对可编程图形处理器, ARB_VERTEX_PROGRAM 和glslang
的简单介绍。抛砖引玉,希望大家不吝赐教:)
Octane3d@
第二章 可编程图形处理器
现代图形流水线如图-2.1 所示。
(图-2.1,图形流水线)
应用程序级(Application )实现物理模拟,处理用户输入,修改数据结构,数据库访问,几
何基元生成等功能。命令级(Command)提供命令缓冲区,解释执行命令和管理图形系统
的状态。几何级(Geometry )对多项式表达的弯曲曲面求值,进行几何变换,光照计算,纹
理坐标生成,实现剪切,拣选与几何基元组装等功能。光栅化级(Rasterization)进行三角
形设置,对三角形进行抽样以生成片断,并且对颜色和纹理坐标进行插值。纹理级(Texture)
对纹理坐标进行变换,进行纹理访问与过滤。片断级(Fragment )混合片断颜色与纹理,进
行雾化操作,执行深度、透明以及模版测试,最终生成要写入帧缓冲区的象素。显示级
(Display )对象素颜色进行嘎玛校正后写入帧缓冲区。命令与几何级属于对象空间的操作,
其上的操作是每顶点的,主要是进行几何变换和光照计算,它的特点是大量(= 1000 万个
顶点)复杂的浮点操作。纹理与片断级输入图像空间的操作,其上的操作是每片断的,主要
是进行纹理混合,它的特点是进行海量(= 10 亿个片断)但是较简单的定点运算。
图形硬件的发展是一个逐渐对图-2.1 中的流水级增加硬件加速功能的过程。最早的图形
硬件只是一个简单的帧缓冲区,没有任何硬件加速功能。之后逐渐添加硬件光栅化,硬件纹
理映射,硬件几何变换与光照计算,硬件反走样等功能。按照图形硬件所支持的硬件加速功
能的多少与性质,可以把图形硬件分为几代。1984 年,SGI 公司发布了IRIS 1400 图形系统,
其中集成的图形硬件可以实时光栅化平坦着色(flat-shaded )的多边形,这是第一代图形加
速硬件。第二代图形加速硬件以HP 的SPX 和SGI 的GT 为代表。它们提供Phong 光照计
算,Gouraud 着色和 Z-Buffer 功能,光栅化性能也有了大大提高。1992 年,SGI 推出了
RealityEngine [Akeley93] ,之后又于1996 年推出了InfiniteReality [Montrym97] ,标志着图形
加速硬件进入第三代。RealityEngine 在第二代图形加速硬件的基础上,增加了纹理映射与与
全场景反走样的功能,大大提高了实时渲染的真实感。上述的图形加速硬件价格昂贵,只有
高档的图形工作站才能够配置,但是 1996 年3Dfx 公司推出的面向PC 平台的Voodoo 系列
3D 加速卡改变了这一局面。Voodoo 卡介于第二与第三代图形加速硬件之间,它提供Gouraud
着色,硬件光栅化,硬件纹理映射,Z 缓冲区等功能,将PC 带入了实时3D 的时代。随后,
PC 图形硬件蓬勃发展,更高的三角形生成速率,更高的填充速率,多纹理功能,硬件几何
变换与光照计算,碰撞与环境映射以及全屏反走样将其带入了第三代图形加速硬件的时代。
此后,随着PC 游戏以及PC 工作站的发展,可以说,PC 图形硬件的发展代表了图形硬件技
术发展的主流方向。
无论是传统工作站图形硬件,还是PC 图形硬件,从第一代到第三代,它们的一个共同
特征就是都只实现了固定功能的渲染流水线,而不具备可编程能力。与这些图形硬件相匹配,
主要的3D API 例如OpenGL 和 Direct3D 作为一个状态机实现,用户通过3D API 提供的函
数设置好相应的状态,例如变换矩阵、材质参数、光源参数、纹理混合模式等,然后传入顶
点流。图形硬件则利用内置的固定渲染流水线和渲染算法对这些顶点进行几何变换、光照计
算、光栅化、纹理混合、雾化操作、最终将处理结果写入帧缓冲区。这种渲染体系限制用户
只能使用图形硬件中固化的各种渲染算法。这虽然可以很好的满足对渲染质量要求不高的应
用,但难以满足那些需要更高的灵活性和更真实的渲染质量的实时图形应用。用户已经不再
满足于基于顶点的近似Phong 模型光照计算(这是OpenGL 和Direct3D
文档评论(0)