一种用于光线追踪环境光遮蔽的实时渲染处理方法和系统
技术领域
本申请涉及计算机图形处理技术领域,具体涉及一种用于光线追踪环境光遮蔽的实时渲染处理方法和系统。
背景技术
渲染是在电脑绘图时,通过软件将模型生成图像的过程。模型是用语言或者数据结构进行严格定义的三维物体或虚拟场景的描述,它包括几何,视点,纹理,照明和阴影等信息。图像是数字图像或者位图图像,渲染用于通过计算机视频编辑软件中的效果来生成最终视频的输出过程。渲染是三维计算机图形学中的重要的研究课题之一,并且在实践领域与其他技术密切相关,在图形流水线中,渲染是最后一项重要步骤,通过它得到模型与动画的最后显示效果。现在已经有各种不同的渲染工具产品,有些集成到更大的建模或者动画中,有些是独立产品,有些是开源的产品,从内部来看,渲染工具是根据各种学科理论,经过仔细设计的程序,其中包括光学、视觉感知、数字以及软件开发等。
三维计算机图像预渲染或者实时渲染的速度都非常慢。预渲染的计算强度很大,需要大量的服务器运算完成,通常被用于电影制作;实时渲染常用于三维视频游戏,通常透过图形处理器(GPU)完成这个过程。一般计算机渲染流程管线设计主要是基于光栅化技术是将图像分解为一系列像素,然后在计算机屏幕上逐个绘制这些像素,从而形成连续的图像。在此过程中,计算机会对每个像素进行颜色填充,并进行深度排序和遮挡消除等处理,以确保图像的逼真度和清晰度。
环境光遮蔽(Ambient Occlusion,简称AO),用于来描述绘制物体和物体相交或靠近时候遮挡周围漫反射光线的效果,AO的表现可以突出阴影暗部的细节,除了可以增加画面的层次感和真实感外,还可以去修补一些漏光和阴影接触面不实等技术问题。基于光线追踪的环境光遮蔽可以准确地对环境光照被遮挡的区域投射阴影,使物体更好地融入环境,例如在角落和墙壁相交处投射阴影,或者为裂缝或皮肤上的皱纹增添深度。AO表现的实现有很多种算法,如硬计算的AO、顶点AO和各种在屏幕空间下实时计算AO等,然而上述各种AO计算方法计算量大,硬件需求高,尤其无法处理移动的物体。例如基于屏幕空间信息计算OA的方法,虽然可以提供逼真的结果,但却受限于屏幕空间中还有的信息,当屏幕外的物体理应影响遮蔽的结果,或者物体在视锥内会在预处理阶段被剔除了,屏幕空间算法就会失效,效果可能会显得非常不自然。
发明内容
本发明主要解决的技术问题是如何应用光线追踪技术实现环境光遮蔽的实时渲染。
根据第一方面,一种实施例中提供一种用于光线追踪环境光遮蔽的实时渲染处理方法, 包括:
基于光线追踪算法获取待渲染图像的像素点p及其对应在待渲染场景中几何体上的实物点P;
获取以所述实物点P为球心的采样球面;所述采样球面与所述实物点P所在的所述几何体的表面构成封闭的半球面空间;
在所述采样球面上进行环境光采样,并依据采样结果获取所述像素点p的环境光遮蔽渲染值。
一实施例中,所述获取以所述实物点P为球心的采样球面,包括:
以所述实物点P为球心,在一预设半径取值区间范围内选取至少两个不同的值作为所述采样球面的半径,以获取至少两个所述采样球面;
所述在所述采样球面上进行环境光采样,并依据采样结果获取所述像素点p的环境光遮蔽的渲染值,包括:
分别对每个所述采样球面进行环境光采样,以获取对应每个所述采样球面的环境光遮蔽渲染值;
依据一预设的数据统计算法对每个所述环境光遮蔽渲染值进行数据优化,并将数据优化的结果作为所述像素点p的环境光遮蔽渲染值。
一实施例中,所述数据统计算法包括取最大值、取最小值和/或取均值。
一实施例中,所述在所述采样球面上进行环境光采样,包括:
依据所述采样球面的表面生成光线来对环境光进行随机采样,其采样方向通过对所述采样球面的随机取样来确定。
一实施例中,所述获取以所述实物点P为球心的采样球面,包括:
应用最大射线检测长度当作参数,针对不同的预设场景设置对应所述预设场景的采样球面半径。
一实施例中,实时渲染处理方法还包括;
获取所述待渲染图像上每个像素点的环境光遮蔽渲染值后,应用余弦加权分布算法进行降噪。
一实施例中,所述依据采样结果获取所述像素点p的环境光遮蔽渲染值,包括:
对所述采样结果取均值、取最大值或取最小值,以获取所述像素点p的环境光遮蔽渲染值。
一实施例中,所述依据采样结果获取所述像素点p的环境光遮蔽渲染值,包括:
将所述采样结果的最大值和最小值之间的范围作为环境光遮蔽效果的强度参数调节范围;
和/或,将所述采样球面的半径作为环境光遮蔽效果的半径参数。
根据第二方面,一种实施例中提供一种计算机可读存储介质,所述介质上存储有程序,所述程序能够被处理器执行以实现第一方面所述的方法。
根据第三方面,一种实施例中提供一种用于光线追踪环境光遮蔽的实时渲染处理系统,用于应用如第一方面所述的实时渲染处理方法,所述实时渲染处理系统包括:
实物获取单元,用于基于光线追踪算法获取待渲染图像的像素点p及其对应在待渲染场景中几何体上的实物点P;
采样获取单元,用于获取以所述实物点P为球心的采样球面;所述采样球面与所述实物点P所在的所述几何体的表面构成封闭的半球面空间;
渲染单元,用于在所述采样球面上进行环境光采样,并依据采样结果获取所述像素点p的环境光遮蔽渲染值。
依据上述实施例的实时渲染处理方法,由于是采用球面采样的方式获取实物点P的环境光遮蔽渲染值,保证光线追踪在动态下实现实时环境光遮蔽渲染更准确。
附图说明
图1为光线追踪技术的原理示意图;
图2为一种实施例中基于距离场的环境光遮蔽算法原理示意图;
图3为一种实施例中实时渲染处理方法的流程示意图;
图4为一种实施例中环境光遮蔽算法的原理示意图;
图5为一种实施例中实时渲染处理系统的结构框图。
具体实施方式
下面通过具体实施方式结合附图对本发明作进一步详细说明。其中不同实施方式中类似元件采用了相关联的类似的元件标号。在以下的实施方式中,很多细节描述是为了使得本申请能被更好的理解。然而,本领域技术人员可以毫不费力的认识到,其中部分特征在不同情况下是可以省略的,或者可以由其他元件、材料、方法所替代。在某些情况下,本申请相关的一些操作并没有在说明书中显示或者描述,这是为了避免本申请的核心部分被过多的描述所淹没,而对于本领域技术人员而言,详细描述这些相关操作并不是必要的,他们根据说明书中的描述以及本领域的一般技术知识即可完整了解相关操作。
另外,说明书中所描述的特点、操作或者特征可以以任意适当的方式结合形成各种实施方式。同时,方法描述中的各步骤或者动作也可以按照本领域技术人员所能显而易见的方式进行顺序调换或调整。因此,说明书和附图中的各种顺序只是为了清楚描述某一个实施例,并不意味着是必须的顺序,除非另有说明其中某个顺序是必须遵循的。
本文中为部件所编序号本身,例如“第一”、“第二”等,仅用于区分所描述的对象,不具有任何顺序或技术含义。而本申请所说“连接”、“联接”,如无特别说明,均包括直接和间接连接(联接)。
光线追踪是模拟光源在现实生活中如何反应的方法。它追踪光线到达物体的路径,逼真地模拟光线如何反射回来以创建准确的反射、折射、阴影和间接照明。请参考图1,为光线追踪技术的原理示意图,具体包括:
1.对每个象素发出一光线V,与场景求得交点P;
2.计算P点处沿V的直接光照分量Ic;
3.求V的反射方向r,与场景中其他物体求交点Pr;
4.求交点处沿r方向的反射光强Is;
5.求V的折射方向t,与场景中其他物体求交点Pt;
6.求交点处沿t方向的反射光强It;
7.应用公式I=Ic+ks·Is+kt·It,计算P点处的总光强。
现有技术中,光线追踪通常指一种框架,是与光栅化渲染并列使用,能够解决光栅化导致的全局信息丢失和全局效果精度实现的瓶颈。如图1所示,从相机出发,对于每个像素点投射光线,与场景中第一个物体相交,在交点处根据物体性质,光源属性和光照模型等计算这个交点的颜色。然后在焦点处,继续变绿发生反射折射的光线,依次进行,直到光线到达光源或逸出场景光线追踪,将场景的渲染任务拆解。光线之间是并行的可以获取一个场景全局信息。
请参考图2,为一种实施例中基于距离场的环境光遮蔽算法原理示意图,基于距离场的环境光遮蔽算法是在实物点P的法线上取步长为一预设定值的N个法线点,分别对每个法线点两侧的环境光采样,并依据每个法线点两侧的环境光采样的差值获取实物点P对应像素点p的环境光遮蔽渲染值,法线点两侧的环境光采样的差值越大,则环境光被遮蔽的越多。由于环境光的遮挡是呈指数及下降的,因此更远的表面比更近的表面遮挡的更少。基于距离场的环境光遮蔽算法虽然可以获取很好的环境光遮蔽渲染值,然而当物体移动时,法线方向会与相机方向发生变化,这样进行实时渲染时,环境光遮蔽的渲染值在相机的视角就会发生较大的偏差变动,其环境光遮蔽渲染值就会失真(在待渲染图像失真)。
在本申请实施例中,通过在以实物点P为球心的球面上对环境光进行采样,使得物体即使发生移动,总能保证采样球面上有采样点的方向与相机方向接近或重叠(物体移动任意角度,其相机方向都需穿过采样球面到达实物点P),使得待渲染图像的像素点p的环境光遮蔽渲染值更真实,另外由于球面采样计算量更低,因此环境光遮蔽渲染效率更高。
实施例一:
请参考图3,为一种实施例中实时渲染处理方法的流程示意图,该实时渲染处理方法用于光线追踪环境光遮蔽的OA计算,具体包括:
步骤101,获取实物点P。
基于光线追踪算法获取待渲染图像的像素点p及其对应在待渲染场景中几何体上的实物点P。
步骤102,获取采样球面。
获取以实物点P为球心的采样球面。采样球面与实物点P所在的几何体的表面构成封闭的半球面空间。一实施例中,应用最大射线检测长度当作参数,针对不同的预设场景设置对应预设场景的采样球面半径。
步骤103,获取OA值。
在采样球面上进行环境光采样,并依据采样结果获取像素点p的环境光遮蔽渲染值。一实施例中,依据采样球面的表面生成光线来对环境光进行随机采样,其采样方向通过对采样球面的随机取样来确定。一实施例中,对采样结果取均值、取最大值或取最小值,以获取像素点p的环境光遮蔽渲染值。
步骤104,降噪处理。
获取待渲染图像上每个像素点的环境光遮蔽渲染值后,应用余弦加权分布算法进行降噪。
一实施例中,对环境光遮蔽的效果进行调节时,将采样结果的最大值和最小值之间的范围作为环境光遮蔽效果的强度参数调节范围。一实施例中,将采样球面的半径作为环境光遮蔽效果的半径参数。
一实施例中,可以同时获取多个采样球面,即以实物点P为球心,在一预设半径取值区间范围内选取至少两个不同的值作为采样球面的半径,以获取至少两个采样球面。然后分别对每个采样球面进行环境光采样,以获取对应每个采样球面的环境光遮蔽渲染值,再依据一预设的数据统计算法对每个环境光遮蔽渲染值进行数据优化,并将数据优化的结果作为像素点p的环境光遮蔽渲染值。其中,数据统计算法包括取最大值、取最小值和/或取均值。
请参考图4,为一种实施例中环境光遮蔽算法的原理示意图,在以实物点P为球心的采样球面上对环境光进行采样,使得几何体发生移动时,相机方向都需穿过采样球面到达实物点P,使得待渲染图像的像素点p的环境光遮蔽渲染值更真实。
请参考图5,为一种实施例中实时渲染处理系统的结构框图,该实时渲染处理系统用于应用如上所述的实时渲染处理方法,包括实物获取单元10、采样获取单元20和渲染单元30。实物获取单元10用于基于光线追踪算法获取待渲染图像的像素点p及其对应在待渲染场景中几何体上的实物点P。采样获取单元20用于获取以实物点P为球心的采样球面,采样球面与实物点P所在的几何体的表面构成封闭的半球面空间。渲染单元30用于在采样球面上进行环境光采样,并依据采样结果获取像素点p的环境光遮蔽渲染值。
以前的AO计算是工作在屏幕空间的,而屏幕空间的遮蔽信息和真实情况可以有很大区别,比如物体相互关系的信息实际上是大部分丢失的。屏幕投影上的深度“夹缝”,实际上可能是开阔的空间,这很容易造成物体边缘出现不应有的阴影圈。在某种程度上,甚至连真实情况的近似都达不到。如果用光线追踪来计算AO值,得到的结果会更真实。
在本申请实施例中公开的实时渲染处理方法,首先基于光线追踪算法获取待渲染图像的像素点p及其对应在待渲染场景中几何体上的实物点P;再获取以实物点P为球心的采样球面;然后在采样球面上进行环境光采样,以用于依据采样结果获取像素点p的环境光遮蔽渲染值。由于是采用球面采样的方式获取实物点P的环境光遮蔽渲染值,保证光线追踪在动态下实现实时环境光遮蔽渲染更准确,又由于球面采样计算量更低,使得环境光遮蔽渲染硬件需求更低,而效率更高。
本领域技术人员可以理解,上述实施方式中各种方法的全部或部分功能可以通过硬件的方式实现,也可以通过计算机程序的方式实现。当上述实施方式中全部或部分功能通过计算机程序的方式实现时,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器、随机存储器、磁盘、光盘、硬盘等,通过计算机执行该程序以实现上述功能。例如,将程序存储在设备的存储器中,当通过处理器执行存储器中程序,即可实现上述全部或部分功能。另外,当上述实施方式中全部或部分功能通过计算机程序的方式实现时,该程序也可以存储在服务器、另一计算机、磁盘、光盘、闪存盘或移动硬盘等存储介质中,通过下载或复制保存到本地设备的存储器中,或对本地设备的系统进行版本更新,当通过处理器执行存储器中的程序时,即可实现上述实施方式中全部或部分功能。
以上应用了具体个例对本发明进行阐述,只是用于帮助理解本发明,并不用以限制本发明。对于本发明所属技术领域的技术人员,依据本发明的思想,还可以做出若干简单推演、变形或替换。