基于硬件加速的实时风格化染料的设计与实现_第1页
基于硬件加速的实时风格化染料的设计与实现_第2页
基于硬件加速的实时风格化染料的设计与实现_第3页
基于硬件加速的实时风格化染料的设计与实现_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于硬件加速的实时风格化染料的设计与实现

0非侵入式的非营造行为近年来,实时图形工程取得了巨大进展。现在,微型计算机卡的操作能力已经超过了10年前的数千万美元图形工作站点。现代图形处理器(gpu)广泛支持编程,允许创建无数新的渲染算法和特效。但只有重新设计和完全重建现有的图形应用程序,才能充分利用gpu的潜力。用非侵入式的方法来修改图形应用的行为可以在不修改原有应用的基础上扩展图形功能,这里的非侵入式是指在不改动原应用程序本身的基础上达到改变程序输出.本文的目标是利用GPU的可编程性对已有的图形应用探索多种视觉风格的改造.本文算法将采用只截获一个API函数的方法修改OpenGL的渲染流程,并使用OpenGL渲染语言(OpenGLShadingLanguage,GLSL)在GPU上对颜色缓存和深度缓存进行处理来高效地实现各种风格化渲染.风格化渲染是指除了真实感渲染以外的其他渲染方式,也可以称为非真实感渲染.GLSL是在最新的OpenGL2.0规范中被定义的高级渲染语言.由于本文方法是一种纯硬件加速的方法,因此可以很好地在渲染流程中与其他基于GPU的算法(如置换式贴图、矩阵调色盘变形等)结合工作.下面首先给出截获OpenGL图形库的机制和提供自定义渲染器插件方法的简要综述.然后,描述对三维场景渲染后的颜色缓存和深度缓存进行实时后处理的算法,并演示算法设计的一系列有趣的风格化渲染器,它们都非侵入式的影响渲染结果.最后指出本文方法的优势与不足.1图像数据处理文献的工作给了本文非侵入式渲染的灵感.文献通过提供一些渲染器的插件将已有的图形应用交互式地转化为风格化渲染效果,通过截获OpenGL图形库,这个转化可以非侵入式地实现.但由于只能使用底层图形数据,能获得的效果被限制了.文献是文献工作的改进,通过根据隐式的图形库命令流重构出显式的几何表示,可以获得许多有趣的应用,如风格化绘制、游戏场景重用.Chromium系统提供了许多流处理器,它们可以很容易地应用于图形命令流的语义转换.文献已经将它用于动态建筑场景的非侵入式交互可视化.但是,这些算法都很难与运行于可编程顶点处理器上的其他顶点程序兼容,如置换式贴图、矩阵调色盘变形等.而且这些过程都在CPU中进行,GPU的强大的能力没有被充分利用.与文献不同,本文没有采用几何重构的方法,而是在GPU上对三维图形应用的输出运用了图像处理类别的风格化算法.目前,市场上的主流显卡提供了强大的计算能力,并且最重要的是其具有可编程性.图形API也为开发者提供了可编程性的接口,如Direct3D的HLSL,nVIDIA公司的Cg语言,OpenGL的GLSL;其中HLSL,Cg和GLSL都是高级渲染语言,对比于以前的类汇编底层语言,如Direct3D中的vs2.0,ps2.0和OpenGL中的GLARBfragmentprogram,GLARBvertexprogram等,高?级?渲染语言提供了更高的生产力、较少出错和潜在的高效性(依赖于编译器的质量).可编程图形硬件的出现开创了实时绘制的新时代,出现了许多硬件加速的绘制算法.文献给出了如何使用实时三维场景后处理技术来生成各种真实感和非真实感的效果——高动态范围渲染、景深、半色调、多色调和轮廓勾勒等.在风格化渲染方面,文献提出了一种将自定义风格应用到渲染和动画应用的方法.文献介绍了与其他实时渲染技术兼容的实时边缘增强算法.由于GLSL在渲染流程中的核心地位,GLSL无疑是OpenGL2.0规范中最令人感兴趣的部分.它实际上由2种紧密相关的语言组成,这些语言用于为OpenGL渲染流水线中的可编程处理器、顶点处理器和碎片处理器编制渲染程序Shader.现在,所有的主流硬件厂商,如ATI,nVIDIA,3DLabs等,都已经在它们的最新驱动程序中提供了对GLSL的支持.离屏缓存使得程序员可以在显存中创建复杂的过程图像,然后绑定到纹理甚至读回到内存,而不影响帧存的内容.它允许开发者充分利用硬件加速技术产生动态纹理,并应用于实时特效,如反射、折射、光晕、图像处理等.在OpenGL中,离屏缓存可以通过像素缓存来实现,简称为pbuffer.在Windows平台上,pbuffer可以通过WGLARBpbuffer扩展访问.2获取图像第二特征本文采用类似于文献中的方法来截获OpenGL,即用自己的动态链接库来替换系统的OpenGL库(opengl32.dll).与文献方法不同的是,本文方法并没有替换所有的图形调用,而只是重载了OpenGLAPI中的一个函数,对于其他函数,只是简单地传递参数并调用系统库中的相应函数.图1所示为常规渲染和动画应用中的渲染流程.系统首先设置一些绘制状态,如光源、材料、多边形模式、填充模式等;然后对于每一帧调用绘制函数;最后调用函数Swap-Buffer将图形输出刷新到帧存.截获方法如图2所示.在设置了绘制状态后,对每一帧,渲染目标从帧存变为pbuffer.调用绘制函数后,可以从pbuffer中访问当前场景的颜色缓存和深度缓存,并在GPU中对它们进行后处理,最后将生成的数据输出到帧存.为了最小化对系统库的修改,图2中的流程可以进一步调整为如图3所示.其中,惟一需要截获的函数为SwapBuffer.对于pbuffer的操作,后处理操作和SwapBuffer可以封装为MySwapBuffer模块.本文截获方法的优势是明显的:一方面图形系统的效率得到了保留;另一方面对于特定API函数的依赖也被降低.需要指出的是,尽管本文的实现是基于OpenGL的,但该算法也可以很容易地移植到Direct3D中应用.如表1所示,本文算法用到的所有OpenGL特征都很容易在Direct3D中找到对应项.3图像后处理风格化渲染是计算机图形学中一个快速发展的领域.文献给出了该领域的详尽参考文献列表,并作了非常好的注释.风格化渲染技术最终可以归结为3类:基于几何描述的三维绘制,基于二维图像的图像后处理方法和增强用户输入的交互式方法.对于已有图形应用的风格化转变,第3类显然是不合适的.本文采用运行于GPU上的fragmentshader对截获的颜色缓存和深度缓存数据进行图像后处理的方法.4基于glso的图像增长模型文献给出了如何使用实时三维场景后处理技术来生成各种真实感和非真实感的图像效果:高动态范围渲染、景深、半色调、多色调和轮廓勾勒等.通过在fragmentshader中采用不同的算法,GPU可以实时地产生这些效果.本文对不同的风格使用了不同的GLSLfragmentshader,它们也可以组合起来产生更加复杂的风格.通过使用第2节中的截获算法,可以在pbuffer中访问当前场景的深度缓存和颜色缓存.深度缓存中的数据描述了模型的几何细节,可以看作是某种“G-buffer”.图4所示为一个外星战士1的深度缓存和采用拉普拉斯卷积获得的轮廓线.外星战士fragmentshader的GLSL代码如下:下面简要介绍一下该GLSL代码的意义:第①,②行声明了uniform变量myTexture和offset,它们由外部程序传递获得,分别代表输入的图像和图像上一个像素对应的纹理坐标的偏移值.第③行定义了该fragmentshader的入口函数main.第⑤行为用当前fragment的纹理坐标值glTexCoord从输入的图像myTexture上获得当前位置的颜色值,该颜色用一个4维的向量vec4表示,分量分别为{r,g,b,a}.第⑦~(10)行类同第5行,用一个像素对应的纹理坐标的偏移值获得该fragment的左、右、下、上位置的颜色值.第(12)~(15)行获得该fragment的左下、右上、左上、右下位置的颜色值.第(17)行根据获得的9个位置的颜色值计算拉普拉斯卷积.第(19)~(22)行根据拉普拉斯卷积确定该位置是否落在轮廓线上,若在,则为黑色;否则为白色.在图形应用中,许多场景细节也用纹理来描述,如人行道上的石头、墙上的裂纹、屋顶上的瓦片等.为了获得这些信息,必须访问颜色缓存.图5所示为人行道上的石头纹理通过颜色饱和渲染器、边缘增强渲染器和其他渲染器对颜色缓存处理过的效果.5实现算法和风格化渲染机5.1灰色渲染图6中的场景使用Gray=red×0.3+green×0.59+blue×0.11转换为灰度化.5.2缘增强的燃放图7展示了一个卡通风格的渲染器,它和边缘增强的渲染器组合使用.图7中的居中图片可通过组合边缘增强的效果获得.在灰度图像中的平滑梯度被映射到突然跳跃的离散等级.5.3平均色彩纹理图8展示了一个实时的素描风格渲染器.实时素描中,针对不同的色调和不同的微缩图等级,笔画纹理可以被预计算,然后在运行时刻根据特定的色调值进行融合.6现代gpu的应用由图6~8可以看出,通过在GPU中对截获的三维场景的颜色缓存和深度缓存进行处理,可以得到许多生动的风格化绘制效果,甚至达到修改当前场景的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论