[发明专利]实时点光源软阴影渲染方法有效
申请号: | 201210210097.X | 申请日: | 2012-06-25 |
公开(公告)号: | CN102768765A | 公开(公告)日: | 2012-11-07 |
发明(设计)人: | 张子龙 | 申请(专利权)人: | 南京安讯网络服务有限公司 |
主分类号: | G06T15/60 | 分类号: | G06T15/60 |
代理公司: | 南京众联专利代理有限公司 32206 | 代理人: | 顾进 |
地址: | 210039 江苏省南*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 实时 光源 阴影 渲染 方法 | ||
技术领域
本发明涉及图形学领域,特别是涉及一种针对点光源模型进行实时阴影渲染的方法。
背景技术
阴影对人类观察和认知三维世界有着非常重要的意义,阴影能够帮助人们判断遮挡物的位置、大小和几何信息,也能够帮助人们了解被遮挡物的几何形状。阴影给出了场景中有关光源位置的信息,突出了物体之间的空间关系,所以阴影能够极大地增强场景的真实感,是渲染技术中一个不可缺少的组成部分,阴影渲染在计算机图形图像、数字多媒体等领域具有广泛的应用前景。
作为室内场景大量使用的点光源模型,因为其投影是全方向性的,众多技术使用了阴影体(Shadow Volume)来实现阴影渲染。它们拥有阴影体固有的缺点:阴影边缘过度生硬,不能达到真实软阴影的效果;三角形填充率过高,影响渲染性能。还有些技术使用了普通的阴影映射(Shadow Maps)来渲染某个方向的投影,但无法做到点光源模型的全方向投影特性。
发明内容
为解决上述问题,本发明公开了一种基于立方体纹理阴影映射(Cubemap Shadow Maps)的方法,使用特殊的优化方式对阴影边缘进行柔化,消除锯齿现象,实现较理想的点光源软阴影效果。
为了达到上述目的,本发明提供如下技术方案:
一种实时点光源软阴影渲染方法,包括以下步骤:
(1) 通过计算视角锥体和点光源光照球体是否相交判断场景中的点光源是否为可视化点光源,获取可视化点光源列表;
(2) 针对每个可视化点光源,通过计算点光源光照球体和场景中物体的球形包围盒是否相交,判断是否为潜在投影体,从而获取潜在投影体列表;
(3) 针对每个可视化点光源,将潜在投影体渲染到立方体纹理中;
(4) 针对每个可视化点光源进行场景光照渲染,在阴影处理过程中进行百分比靠近过滤算法优化阴影边缘质量。
作为一种优选方案,所述步骤(3)的具体实现方法是:将点光源的全方向投影根据立方体的6个面进行6个方向的分解,得到6个投影视锥体,依次用6个投影视锥体对潜在投影体进行世界空间深度值渲染,并记录在立方体纹理对应方向的2D纹理中。
作为一种优选方案,所述步骤(4)的具体实现方法是:
(a) 将立方体纹理看成由一个个虚拟像素点按照固定间距规则堆积而成,每个顶点代表了一个虚拟像素点;
(b) 计算出当前光照着色的像素所在世界空间中的位置坐标,将此坐标减去点光源位置得到光照向量,将光照向量根据立方体纹素尺寸大小进行长度缩放,将光照向量变换为以纹素单位计数的向量为(x,y,z),该像素拥有8个相邻像素点,计算出相邻虚拟像素点光照向量为:(x0, y0, z0),(x0, y0+1, z0),(x0+1, y0, z0),(x0+1, y0+1, z0),(x0, y0, z0+1),(x0, y0+1, z0+1),(x0+1, y0, z0+1),(x0+1, y0+1, z0+1),其中x0=x取整值,y0= y取整值,z0=z取整值;
(c) 对8个相邻虚拟像素进行对应的立方体纹理采样获得8个相邻像素记录的深度值,然后将目标像素到光源中心的深度值依次和8个虚拟像素对应记录的深度值进行大小对比从而获得各虚拟像素点的遮挡值;
(d) 根据目标像素在X,Y,Z三个方向上的距离权重,对算出的8组遮挡值进行三线性插值计算,最终获取光照强度值。
与现有技术相比,本发明提供的软阴影渲染方法具有以下优点:
1. 算法简单,节省运算资源,有效柔化了点光源阴影的边缘细节,消除了锯齿现象。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京安讯网络服务有限公司,未经南京安讯网络服务有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210210097.X/2.html,转载请声明来源钻瓜专利网。