1、基于A-buffer的实时软阴影的研究与实现提纲研究概述算法综述算法实现实验结果结论与展望1课题来源863计划,实际项目应用研究内容高质量的实时软阴影研究背景2研究意义增强场景高真实感、沉浸感满足实时性,提高用户体验研究难点结合最新图形硬件的新特性高真实感阴影计算实时性计算研究意义与难点3硬阴影 vs.软阴影UmbraUmbra4硬阴影点光源软阴影面光源A-buffer定义Accumulation buffer,累积缓冲区每个像素上一系列片元A-buffer特性存储一个像素位置上存储不同深度的片元GPU支持,一遍绘制下获取所有层片元获取的片元信息准确、快捷A-buffer特性5算法综述 1/2
2、6实现过程以光源中心渲染场景,所需场景信息存储于A-buffer中以视点渲染场景,进行 遮挡查询计算阴影因 子,渲染阴影算法综述 2/27算法流程Step1 初始化A-bufferStep2 从光源中心渲染场景Step3 计算采样半径Step4 椎体中检测遮挡片元Step5 计算阴影因子,绘制阴影A-buffer软阴影算法8A-buffer存储单元2D纹理各像素上的片元数量A-buffer大小设为162D纹理数组片元位置片元深度A-buffer存储场景信息9采样半径计算10查询遮挡片元遮挡查询11遮挡查询12效率内存占用效果实验结果13帧率对比250.3266.4224.8191.2212.3
3、173.9155.3162.7123.8050100150200250300PCSS后投影阴影图A-buffer软阴影三种软阴影算法在不同场景的帧率三种软阴影算法在不同场景的帧率屋子 5.37K小岛 81.18K棋盘 112.58K14内存消耗24.123.9623.9523.1726.1326.9626.7434.7230.3431.4332.7353.430102030405060SSMPCSS后投影阴影图A-buffer软阴影算法不同分辨率几种阴影算法内存消耗不同分辨率几种阴影算法内存消耗80060010247681920102415效果对比16效果Demo动态光源DemoPCSS的问题
4、光源靠近遮挡物重影现象严重半影区域变大带状走样自阴影问题17后投影阴影图的问题P间隙部分重叠部分裁减区域光源间隙部分重叠部分18结论产生真实感阴影效果满足实时性要求未来工作优化算法,提高效率利用链表A-buffer实现,减少内存开销结论与展望19两种主流阴影算法阴影体阴影图近年的实时软阴影算法综述A Survey of Real-time Soft Shadows AlgorithmsHasenfratz,2003Real-Time ShadowsEisemann,2012NVIDIA出的所有阴影算法和白皮书https:/ vs.阴影图阴影体阴影体阴影图阴影图优点精确的阴影可扩展性强由GPU加速完全能在GPU上实现鲁棒性简单、快速支持全向光源与视点无关缺点轮廓检测失真,走样耗间依赖于遮挡物的复杂度耗费内存至少需要两个渲染Pass鲁棒性差扩展性不强不适合动态场景填充率高阴影体 vs.阴影图阴影体阴影体阴影图阴影图优点精确的阴影可扩展性强由GPU加速完全能在GPU上实现鲁棒性简单、快速支持全向光源与视点无关缺点轮廓检测失真,走样耗间依赖于遮挡物的复杂度耗费内存至少需要两个渲染Pass鲁棒性差扩展性不强不适合动态场景填充率高Jordan定理算法Algorithm 3-3:判断点是否在一个多边形内判断点是否在一个多边形内阴影图的问题阴影图问题纹理分辨率自阴影走样不均匀的深度分布