论文部分内容阅读
在实时渲染应用中,阴影效果对于增强画面的真实感有着非常重要的作用,它不仅有助于我们理解物体间的相对位置关系和物体的大小,还能帮助我们理解复杂遮挡物和接收体的几何信息。近年来,随着可编程图形硬件的飞速发展,基于GPU的实时软阴影绘制技术成为研究的热点与难点。本文研究了利用可编程图形硬件进行实时软阴影绘制技术,主要有以下两方面的工作:一是研究并实现了最新的阴影绘制算法,研究基于阴影图的反走样技术和软阴影绘制技术;二是提出了改进的百分比靠近软阴影算法,能够对动态场景进行实时绘制,并支持光源、视点以及材质属性的动态改变。论文首先介绍了阴影图算法的数学原理和遮挡物的分布理论,并讲述了如何通过修改阴影测试函数或估计遮挡物的分布曲线来进行阴影反走样和生成边缘模糊的软阴影。同时我们研究、实现并比较了百分比靠近滤波、方差阴影映射、卷积阴影映射和指数阴影映射等反走样技术,分析了它们存在的问题及解决的办法。这些反走样技术的目的是柔化阴影边缘,滤波区域大小是预先给定的,所以生成的软阴影中半影区域大小是固定的。本文提出的改进的百分比靠近软阴影算法通过遮挡物的查找、半影区域的估计和滤波三步来生成半影区域大小可变化的软阴影。它是基于百分比靠近滤波内核的,随着滤波内核的增大,生成的软阴影逼真度越高,该算法的关键是通过变化滤波内核的大小来获得高质量的软阴影。在算法的遮挡物查找阶段,我们使用泊松圆盘采样模式来增加像素采样率,提高了阴影图的质量;在算法的滤波阶段,我们使用方差阴影图来替换原有的线性深度图,由于方差阴影图中存储的是深度的分布值,在生成时可以使用多重采样反走样来提高阴影图的质量,同时还可以预先对阴影图进行滤波,支持图形硬件加速,提高了绘制效率。由于滤波过程中滤波核的大小是通过半影区域动态计算的,我们引入了区域求和表来对方差阴影图进行动态滤波,提高了算法的滤波效率。在渲染场景时,我们使用深度梯度矢量,根据屏幕空间到纹理空间的转换表达式计算得到采样点的可变深度偏移量,进行点采样比较,用来消除阴影粉刺现象,解决了自阴影问题,从而生成了高质量的软阴影效果。本文的软阴影绘制算法具有广泛的应用前景,从下一代游戏到DCC/CAD应用程序。由于它只使用单张阴影图采样而且不需要任何预处理,可以很容易替换原有的阴影映射代码,生成更加真实的软阴影。