基于改进次表面散射的海浪通透感渲染方法和系统与流程

摘要: 本发明涉及计算机图形学、实时渲染及海洋环境仿真,具体涉及一种基于改进次表面散射的海浪通透感渲染方法和系统。背景技术:1、计算机图形学与实时渲染领域致力于模拟高度...
基于改进次表面散射的海浪通透感渲染方法和系统与流程

本发明涉及计算机图形学、实时渲染及海洋环境仿真,具体涉及一种基于改进次表面散射的海浪通透感渲染方法和系统。

背景技术:

1、计算机图形学与实时渲染领域致力于模拟高度真实的自然环境,其中海洋场景的渲染因其在军事仿真、虚拟现实、海洋探测、游戏娱乐等领域的广泛应用而备受关注。海浪表面的真实感模拟是提升用户沉浸感的关键,而海浪通透感(translucency)即光线穿透水体并与之交互后呈现的半透明效果,是其中的核心技术难点之一。

2、海水的通透感物理上源于光线在水体介质中的次表面散射(subsurfacescattering, sss)。光线入射至水面后,部分在表面反射和折射,部分进入水体内部。在内部,光线经历多次吸收和散射事件,改变其强度、颜色和方向,最终可能从邻近入射点的其他位置射出。这一过程塑造了海水丰富的光影层次和颜色变化,如波峰因水层较薄而显得更亮、更透明,波谷则因水层较厚、光线衰减更多而显得更暗、颜色更深。水下环境中,光线的传播还受到深度、水体固有光学属性(吸收和散射系数)的显著影响,导致光强随深度衰减,颜色通常向蓝绿色偏移。

3、传统的表面光照模型,如基于phong或blinn-phong原理构建的,以及更复杂的基于双向反射分布函数(bidirectional reflectance distribution function, brdf)的模型,主要设计用于描述不透明材质的表面反射特性。这些模型假设光线与材质的交互仅发生在无限薄的表面层,无法充分模拟光线进入介质内部并经历体积散射后再出射的复杂过程,因此在表现海水等半透明材质的通透感方面存在原理性限制。

4、为精确描述半透明材质中的光传输,双向散射表面反射分布函数(bidirectionalscattering surface reflectance distribution function, bssrdf)被提出。bssrdf通过积分计算,建立了任意入射光线和任意出射光线(涉及表面上不同点)之间的能量传递关系,能够准确地模拟次表面散射现象,生成具有高度物理真实感的渲染效果。然而,bssrdf的计算涉及复杂的体积积分和表面积分,计算量巨大,难以满足实时渲染应用(尤其是在需要维持60fps或更高稳定帧率的水下动态仿真或交互式应用中)对性能的要求。

5、鉴于精确bssrdf模型的计算瓶颈,实时渲染领域发展了多种sss近似算法,例如基于厚度/深度的近似(通过计算前后表面深度差来模拟光程长度)、纹理空间/预计算方法、背面光照/环绕光照模拟方法,以及屏幕空间的滤波后处理等。现代渲染引擎(如unrealengine 4)虽提供了先进的着色器系统和后处理管线,但针对特定水下动态环境的次表面散射实现,往往仍需开发者进行深度定制。综上所述,当前用于模拟海浪通透感的实时渲染技术在平衡计算效率、动态适应性和视觉真实感方面仍存在改进空间。具体而言,现有技术存在以下缺陷:

6、高计算复杂度与实时性矛盾:精确模拟次表面散射(sss)的物理模型(如bssrdf)计算量极其庞大,难以应用于需要高帧率的实时水下场景仿真。

7、近似算法的动态适应性不足:常用的预计算纹理或简单厚度估计方法,难以实时响应由风力等因素引起的波浪形态快速变化;同时对水下深度及动态光照(如太阳角度变化)的反馈不充分,导致在不同环境条件下效果失真。

8、背面光照模拟过于简化:现有近似方法对光线穿透材质从背面透出的效果处理较为简单,未能充分建立背面光照强度与水体实际厚度(波浪高度)、入射角度以及表面法线之间的物理关联。

9、渲染真实感有待提高:由于过度简化,实时渲染难以同时呈现“波峰高透明”与“波谷深邃”的视觉对比层次,且无法准确体现光线随水体深度增加而发生的颜色与强度衰减,影响了水下场景的整体真实感。

技术实现思路

1、为了解决上述技术问题,本发明目的在于提供一种基于改进次表面散射的海浪通透感渲染方法和系统,以水下场景的海面网格数据和光照参数作为输入,通过动态光照调整和波浪高度自适应机制,实时优化次表面散射效果,生成具有真实通透感的海浪渲染结果,解决目前水下场景渲染中计算效率低、动态适应性不足及真实感不强的问题。

2、本发明通过下述技术方案实现:

3、一种基于改进次表面散射的海浪通透感渲染方法,包括以下步骤:

4、s1:获取水下场景的海面网格数据和实时光照参数,以当前待渲染顶点为执行单元,所述海面网格数据包括当前顶点位置、当前顶点法线和当前顶点相对静水平面的实时波浪高度,所述光照参数包括光源方向、光源强度、视线方向和当前顶点对应位置的水体深度;设定次表面散射透光率系数和环境光照环绕参数;

5、s2:基于所述水体深度、当前顶点对应的水体厚度值、所述次表面散射透光率系数以及预设最大水体深度,计算当前顶点的次表面散射强度;通过所述顶点法线、所述光源方向以及所述环境光照环绕参数,计算当前顶点的漫反射分量;通过所述顶点法线、所述光源方向、所述视线方向以及预设高光指数,计算当前顶点的高光反射分量;将所述漫反射分量、所述高光反射分量与所述次表面散射强度结合,得到当前顶点的传统环境光照分量;

6、s3:引入与所述光源方向相反的背面虚拟光源方向,结合所述视线方向、所述顶点法线以及预设次表面偏移率,计算当前顶点的背面光照强度,用于模拟光线从海水背面透射的物理效果;

7、s4:基于所述水体深度及预设最大水体深度,计算环境光照权重和次表面散射权重;基于所述实时波浪高度与预设最大波浪高度,对所述次表面散射强度进行动态调节,得到最终次表面散射强度;利用所述环境光照权重和所述次表面散射权重,对所述传统环境光照分量与所述最终次表面散射强度进行加权融合,并叠加上所述背面光照强度,得到当前顶点的最终场景光照分量;

8、s5:将所述最终场景光照分量输入渲染管线,结合着色器生成海浪渲染结果。

9、在所述s2中,获取当前顶点对应的水体厚度值的方式,包括:根据所述实时波浪高度的实时几何形态,获取当前顶点所在位置波浪的前表面深度frontdepth和后表面深度backdepth,计算波浪前后深度差,其公式为:,depth表示所述水体厚度值。

10、在所述s2中,当前顶点的次表面散射强度的计算公式为,scattering表示当前顶点的次表面散射强度,depth表示当前顶点对应的水体厚度值、c表示次表面散射透光率系数、dw表示水体深度,dmax表示预设最大水体深度,exp为自然指数函数。

11、在所述s2中,漫反射分量的计算公式为,diffuse表示漫反射分量,表示顶点法线,表示光源方向,wrap表示环境光照环绕参数;

12、高光反射分量的计算公式为,specular表示高光反射分量,表示顶点法线,表示光源方向,  表示视线方向,shininess表示预设高光指数;

13、当前顶点的传统环境光照分量的计算公式为,表示传统环境光照分量,表示光源强度。

14、在所述s3中,背面光照强度的计算公式为,表示背面虚拟光源方向, 表示视线方向,表示顶点法线,表示预设次表面偏移率,表示背面光照强度。

15、在所述s4中,环境光照权重和次表面散射权重的计算公式分别为:,表示环境光照权重,表示水体深度,表示预设最大水体深度,表示次表面散射权重。

16、在所述s4中,最终次表面散射强度的计算公式为:,表示最终次表面散射强度,表示当前顶点的次表面散射强度,表示当前顶点的实时波浪高度,表示预设最大波浪高度。

17、在所述s4中,当前顶点的最终场景光照分量的计算公式为:+,表示最终场景光照分量。

18、在所述s5中,结合着色器生成海浪渲染结果,包括:采用unreal engine 4引擎的shader进行渲染,生成的渲染结果动态呈现波峰高透明、波谷深邃的通透感效果,且渲染帧率稳定保持在60fps以上。

19、另一方面,一种基于改进次表面散射的海浪通透感渲染系统,包括:

20、获取与参数设定模块:用于获取水下场景的海面网格数据和实时光照参数,以当前待渲染顶点为执行单元,所述海面网格数据包括当前顶点位置、当前顶点法线和当前顶点相对静水平面的实时波浪高度,所述光照参数包括光源方向、光源强度、视线方向和当前顶点对应位置的水体深度;设定次表面散射透光率系数和环境光照环绕参数;

21、次表面散射及环境光照计算模块:用于基于所述水体深度、当前顶点对应的水体厚度值、所述次表面散射透光率系数以及预设最大水体深度,计算当前顶点的次表面散射强度;通过所述顶点法线、所述光源方向以及所述环境光照环绕参数,计算当前顶点的漫反射分量;通过所述顶点法线、所述光源方向、所述视线方向以及预设高光指数,计算当前顶点的高光反射分量;将所述漫反射分量、所述高光反射分量与所述次表面散射强度结合,得到当前顶点的传统环境光照分量;

22、背面光照计算模块:用于引入与所述光源方向相反的背面虚拟光源方向,结合所述视线方向、所述顶点法线以及预设次表面偏移率,计算当前顶点的背面光照强度,用于模拟光线从海水背面透射的物理效果;

23、动态调节与融合模块:用于基于所述水体深度及预设最大水体深度,计算环境光照权重和次表面散射权重;基于所述实时波浪高度与预设最大波浪高度,对所述次表面散射强度进行动态调节,得到最终次表面散射强度;利用所述环境光照权重和所述次表面散射权重,对所述传统环境光照分量与所述最终次表面散射强度进行加权融合,并叠加上所述背面光照强度,得到当前顶点的最终场景光照分量;

24、渲染输出模块:用于将所述最终场景光照分量输入渲染管线,结合着色器生成海浪渲染结果。

25、本发明与现有技术相比,具有如下的优点和有益效果:

26、1、显著提升渲染效率,实现实时通透感模拟:

27、本发明采用基于深度差(depth=backdepth-frontdepth)来近似计算次表面散射强度(scattering),替代了计算极其复杂的bssrdf积分。结合背面虚拟光源的简化计算和最终的光照融合,整体计算量远低于精确物理模型。大幅降低了模拟海水通透感的计算开销,使得该方法能够在现代图形硬件(如在ue4引擎中)上高效运行,解决了现有技术中精确模型计算量过大、难以实时应用的问题,并能在目标应用场景(如水下仿真)中稳定维持高帧率。

28、2、增强对动态海洋环境的实时适应性:

29、本发明散射强度的计算直接与通过深度缓冲区实时获取的前后深度差(depth)相关联,该深度差会随海浪的动态起伏而实时变化。散射强度和最终光照的计算明确引入了水体深度的影响因子。最终散射效果通过波浪高度进行了进一步调整。使得渲染出的海浪通透感能够实时响应海浪形态的动态变化、观察点或场景变化导致的水深改变,以及光源方向的变化,解决了现有近似算法对动态环境适应性不足的问题,提高了渲染结果的动态真实感。

30、3、提供更真实的背面光照模拟:

31、本发明引入了背面虚拟光源,并且其强度计算不仅考虑了视线方向和光源方向,还结合了表面法线和可调的次表面偏移率(δ)。相比简单的wrap lighting,该方法能更细致地模拟光线穿透水体时受表面朝向影响的散射方向和强度,使得背面透射光的效果更符合物理直觉,解决了现有技术中背面光照模拟过于简化的问题,提升了半透明质感的真实感。

32、4、显著提升海浪通透感的视觉真实感与层次:

33、通过结合实时深度差(depth)计算基础散射强度和利用波浪高度调整最终散射效果,能够更好地区分不同厚度水体的光学表现。通过引入水深因子调整散射强度并进行深度权重混合,模拟了光线在水下随深度衰减的现象。最终渲染结果能更真实地展现波峰区域(水层薄、depth小)相对透明与波谷区域(水层厚、depth大)相对深邃、光线衰减明显的视觉对比,同时体现了整体水深对通透感的影响。解决了现有技术中渲染效果层次不足、未能充分体现波浪形态和水深影响的问题,使得海浪的视觉表现更加逼真、细腻。