英语原文共 5 页,剩余内容已隐藏,支付完成后下载完整资料
基于OpenGL着色语言的图形编辑教学
杰瑞O.塔尔顿
计算机科学系
加利福尼亚大学,圣克鲁斯
斯坦福大学
菲茨帕特里克达伦
计算机科学系
加州大学圣克鲁兹分校
摘要
计算机图形学基础课程发展的一个长期存在的困难是确保学生掌握计算机图形学基础和使学生保持足够的学习热情之间的平衡,目前,我们已经开发出一种改进的基于OpenGL与更传统的教学方法着色语言的广泛集成的课程。我们利用这个课程在加州大学圣克鲁斯分校计算机科学系四分之一的高年级学生中试授,我们的经验表明,使遮光入门级课程的一个组成部分灌输学生的算法和背后的现代图形系统的数学概念一个全面的了解,同时提供必要的生产与国家复杂项目的工具装备他们最先进的技术。
分类和主题描述:
K.3.2[计算机与教育]:计算机与信息科学教育;
I.3.0[电脑图形]:一般
一般条款:设计,语言,人的因素
关键词:OpenGL着色语言,图形,教育学
1 引言
在计算机图形学发展中的一个问题是计算机科学教育领域是公认的困难和深奥,虽然人们普遍认为,互动,实时课程乌拉是新图形的学生比他们更适合ffl线,绘制面向同行[ 6,8 ],确定具体的材料是最大的进口,以及其中的精确的方式呈现材料,保持持续不断的争论的[ 2 ]。
权限,使所有或这项工作的个人或教室使用的部分数字或硬拷贝被授予不收取费用,但前提是副本不会制作或分发利润或商业利益,而且副本承担此通知,并在第一个完整的引文页,以其他方式复制、转载、发布的服务器上,或分配清单需要事先特定的权限和或费用。
SIGCSE#39;07,3月7-10日,2007年,科文顿,美国肯塔基州。
版权所有2007 ACM1-59593-361-1/ 07/0003 。 。 $5,00。
现有的教学方法大致可归类为自上而下,学生可以使用许多常用的图形API之一(如OpenGL),以逐步构建复杂的图形化应用程序[14],或自下而上,在培养学生的玩具实施图形管线[12]的每个阶段。在实践中,这些方法都不已经证明完全令人满意。在自上而下的方法,学生在在自己选择的API的技术特质变得卷入危险,经常的基本材料的理论认识的显着损害。相反,在自下而上的AP-proach,特殊情况的绝对数量必须汉化,以发展一个强大的和有用的执行图形管线可能会阻止学生来自制造不平凡的图形系统。由于许多学生通过模仿视觉EF-fects他们在视频游戏和电影中看到的愿望绘制图形,后者的结果可能是特别严重的,特别是考虑到显卡课程的广泛认可潜能激发学生进一步激励他们研究[8]。
混合方法已经变成功[ 5 ]度来实现的,但基本的二ffi水平确保学生充分理解算法和数学的基础概念,现代的图形系统,同时使他们产生的盟友有趣的项目,在许多介绍图形学课程在很大程度上仍然顽固。在教育图形社区最近的共识主张从入门课程去除光栅算法,同时也承认学生希望进入图形行业或领域进行研究生学习可能明显弱势的方法[ 2 ]。在大多数学期或季度长的课程,但是,没有足够的时间与以前没有图形经验实现底层算法如裁剪或光栅化也产生了复杂的学生,API驱动的项目。
必须重新与每个连续的过程化工圈来克服另一个显著障碍是在图形领域的技术进步的速度远远超过其他更稳固的地区。对于大致在过去的十年,图形硬件的速度比摩尔定律更快的预测几乎提高了三倍,处理能力翻一番每六个月[9]。由于这种事实的结果,先进材料作为一个学期的课程图形可能提出,在理论上,它成为被放置在教学大纲的时间和它在课堂上讲解的时间之间过时。显然,每封信件提出,要保持课程,相关的和及时的最新越好,但是这是在给定的技术进步的步伐迅速图形类一个相当大的挑战。
日前,在一封信件打击计算机科学在加州大学圣克鲁斯分校的系这些问题,我们开发前提OpenGL着色语言的广泛集成了更传统的自上而下的教学方法改进的课程。我们利用这个课程在四分之一长,入门级显卡由部门:上师课程主要针对高年级,男人和一年级研究生以前没有图形曝光。我们的经验表明,使遮光入门级课程的一个组成部分滋生各种各样的教育福利。特别是,我们认为,教学着色桥接自上而下和通过曝光图形管线的最相关的低层次的技术细节在直接有助于生产复杂,高层次软件的方式自下而上方法之间的间隙。我们提交谁学习OpenGL着色语言作为自己介绍计算机图形学的一部分,学生必然获得对现代图形算法的数学基础的一个更好的把握和更容易产生视觉上和技术上令人印象深刻的当然项目谁比那些被教导使用仅固定功能的OpenGL API。
2 OpenGL着色语言
OpenGL着色语言(GLSL)是一种高层次的过程编程语言,它允许应用程序的程序员来控制显卡的单位,用于处理在管道OpenGL的顶点和片段的数据。语言是通过对OpenGL架构评审委员会创建,是对OpenGL2.0标准的一部分。GLSL一直支持(在不同程度上)2002年以来生产的几乎所有消费类图形硬件。
因为GLSL基于C和C 的语法和控制流,它是学生已经熟悉的两种非常方便的语言。另外,关于这个问题[11]开创性的参考文本中包含一个近乎完整的技术规范以及成千上万行示例代码,使它几乎成为理想的教学环境。GLSL的一个特别有吸引力的特点是,它是非常相似图形的芯片中使用的其他流行的着色语言,如NVIDIArsquo;s Cg,微软的高级着色语言(HLSL),甚至是生产型RenderMan规范(RSL)。其结果是,在OpenGL着色器的工作知识直接转化为其他许多平台和上下文。
传统上,教育用途GLSL的已退居于实时渲染高级课程,尽管着色器在现代图形化应用程序中无处不在。非实时渲染已经完全依赖于着色器描述照明和材料特性多年,几乎所有现代的交互式图形软件将采用某种方式可编程管线。事实上,最新一代的图形硬件的顶点和像素阶段是完全可编程的,并依靠一组默认的着色器,必要时以模拟固定功能管线。
图1.简单的GLSL顶点着色器
3 教育效益
在介绍环境教学着色拥有完全侧重于固定功能的OpenGL API的传统方法有很多优点。也许对于教学GLSL最令人信服的理由是,编写着色器促使学生明白,问题位于图形管线的根目录下的数学变换。这是因为OpenGL着色语言从移动应用亲编程接口,应用程序员应用变换的职责,于是。在图1中,一个简单的GLSL顶点着色器,大致OpenGL着色语言等同的“Hello World”的。着色器转换从对象空间顶点位置剪辑空间和计算相关的眼空间顶点法线:这是传统的处理transpar-ently由OpenGL的API两个任务。为了让学生来写这个的着色器,他或她必须明确了解对象空间,眼位和剪辑空间坐标系,以及矩阵乘法的非交换性,并为法向量的逆转转型。由于GLSL的语法非常简单,学生有控制它们应用程序的数学方程建立直接连接,而管道的每个阶段的精确行为通过API设置和选项深奥的组合已不再模糊。
这揭露了_更复杂的算法甚至更加深刻。图2显示了必要的C 代码(纹理设置后)使用固定功能的OpenGL API来执行立方体环境映射。虽然该代码段似乎表明,涉及纹理,立方体,和制图结合一些功能已启用,它没有提供任何的见解都以什么立方体映射或它的工作原理。与之形成鲜明对比,等效GLSL的代码,这被显示在图3中,_相当阐发。一个学生编写着色器必须计算出反映眼矢量,执行相应的纹理查找,并设置片段的输出颜色。这个例子中,虽然有些人为的,说明了教学GLSL的根本优势之一:着色器功能暴露了传统的API模糊。
另外两个领域中,GLSL提供给学生的几乎前所未有的学习机会是灯光和阴影。固定功能的OpenGL管线有底纹不支持(而不是依靠过时的镶嵌依赖高氏法),只提供了一个光照模型(博林 - 海防)。使用OpenGL着色语言,然而,学生可以利用片段着色直接实现任意复杂的光照模型,并亲眼目睹更改阴影参数的电子FF等:在传统的自上而下的实时课程也基本不可能完成的过程。这不仅增强功能可以让学生很容易产生更多逼真的三维应用程序比以往任何时候都更使他们参与轻型运输基本量和关系的直观,实用的了解。此外,教学GLSL在很大程度上消除需要花费教学时间覆盖笨拙和过时的算法,比如纹理着色。
图2 立方体贴图使用固定功能的OpenGL API
图3 立方体贴图在GLSL片段着色器
教学GLSL的的另一个好处是,的着色器编程代表了比较独特的一种计算。虽然大多数的计算机科学教育的重点顺序编程语言和技术,硅制造工艺优势越来越接近基本的物理极限,现代微处理器架构正在变得越来越并行。对于很多学生来说,编程图形硬件可能是其与流处理第一次经历。通过将渲染到纹理,并多次方式到课程中,学生可以开始考虑并行算法,比较熟悉技术的自然延伸。
4 课程
我们的课程大致遵循[ 1 ]的一般结构。我们喜欢这篇文章有几个理由。首先,它提出了一个自上而下的、基于OpenGL的图形方法的入门,但仍然提供了一个主管的低级算法如光栅化处理。其次,它有效范围保证课堂讨论最多的话题我们也包括在文本。第三,它的表现是高度数学的性质,和优秀的,详细的推导,提供适当的推广。最后,它是为数不多的入门显卡教科书有足够的覆盖范围基本可编程,我们从[13,11]补充我们有更多的读数主要文本之一。
奇怪的是,整合到现有的自上而下的GLSL的课程不是非常困难的任务。我们只花两全讲座明确覆盖可编程管线:第一对季度开始,重点对OpenGL着色语言的语法和设置,第二在课堂的最后几周,讨论先进的渲染技术和算法。我们补充其他演讲主题实现概念的讨论,但这通常包括多确保给出相关的图形化现象的完整和正确的数学描述。
它需要理解的是,我们发现在教学中是没有价值的GLSL在介绍ductory图形设置本身重要。相反,我们探索了广泛和多样化的课程和使用OpenGL着色语言作为一种工具来扩展和增强学生的理解。事实上,许多传统的图形内容除了改造和照明可以从可编程管线明智的应用效益。顶点着色器,例如,实施电子ffi古提供的天然平台,基于物理的粒子模拟。图像处理算法,当牢牢植根于可分离卷积理论基础,适合直接到多通道渲染到纹理的方法。简单的,甚至可以在片段着色器的近似折射率等能见度阴影进行计算。
在一个季度之久的过程中,我们有时间只有三个实质性的编程作业。第一个是一个短分配侧重于几何处理和不使用可编程管线。第二个向学生介绍GLSL的,并要求他们实施各种顶点和片段着色器的。该课程的最后一个项目是开放式的,并意在代表学生的大学生涯中最显著事业之一。为了让学生对自己的工作任务的起点,我们在这两个固定功能和GLSL的形式简单的二维单多边形动画提供完整的源代码。
OpenGL着色语言的一个特别好的特性是的着色器的文件在运行时动态编译。在一个学期的课程中,我们将介绍另外一种介绍GLSL的分配。生将提供与预先生成的应用程序的可执行文件和去尾接口规范,并随后被要求只写GLSL的着色,而无需在第一担心设置代码。这种策略类似于在[3]中描述的方法,但需要着色器和应用之间被引入没有中介软件层。
5 技术因素
虽然OpenGL着色语言_对OpenGL2.0标准的一部分,一些标准似乎比其他人更标准。由于微软宣传的Direct3D API的愿望,在Windows的OpenGL的支持严重缺乏。目前微软的操作系统可用的版本只提供对OpenGL1.1.2结果的原生支持,即利用现代的OpenGL功能通过查询安装的供应商提供的图形驱动程序必须动态地找到所需的函数指针的Windows应用程序。对于GLSL的 Linux的支持也同样存在问题和供应商的依赖,和OpenGL扩展牧马库[7]是制作体验两种平台上可承受一个虚拟的必要性。
图4.屏幕截图的一些利用GLSL的最后课程项目。从左至右:在骆驼色差(一),一个射击的空间使用实时光线在跟踪每个像素的光照和粉末e FF学分(B),通过动态过滤的环境贴图复杂的照度(C),动态阴影片段着色器(D)
Macintosh的 OS X,形成鲜明的对比,已自10.4.3版本,原生支持GLSL的。这一事实,加上广泛的开源和苹果提供的开发工具相结合,使得它在基于GLSL的课程开发平台更自然的选择。
最后一个技术考虑的是较旧的显卡可能不完全支持所有的OpenGL着色语言的功能。尤其是,最近少硬件可能缺少真正的分支功能,从而循环和条件表达式的计算过程中蒙受重大的性能损失。同样,一些很老的显卡可能会对单一的着色器可以包含指令的最大数量限制望而却步,导致司机回落到软件仿真模式,复杂的着色器程序。尽管如此,这些限制是在教育环境很大程度上容忍的,并与在NVIDIA FX或ATI9700系列或稍后访问硬件机构不大可能遇到显著问题。
6 学生反应
只有24名学生,任何认真的尝试,在统计分析的学生对我们的课程将是非常错误的。同样,我们认识到图形的课程自然倾向于发光的学生评语不论其实际的价值。尽管如此,我们相信的证据啊,学生的该公司课程评价具有一定的指导意义。
总的来说,学生们对课程材料非常的热情。将课程作业的质量评为“非常好”或“优秀”。此外,在他们的评价,学生描述的类:
“到目前为止我所采取的最好的课堂上。任何地方。”<!--
全文共7871字,剩余内容已隐藏,支付完成后下载完整资料
资料编号:[154916],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。