[go: up one dir, main page]

CN111968215B - 一种体积光渲染方法、装置、电子设备及存储介质 - Google Patents

一种体积光渲染方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN111968215B
CN111968215B CN202010747145.3A CN202010747145A CN111968215B CN 111968215 B CN111968215 B CN 111968215B CN 202010747145 A CN202010747145 A CN 202010747145A CN 111968215 B CN111968215 B CN 111968215B
Authority
CN
China
Prior art keywords
volume
rendering
illumination information
light
light source
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010747145.3A
Other languages
English (en)
Other versions
CN111968215A (zh
Inventor
彭通
周陶生
王鹏
徐丹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Perfect World Beijing Software Technology Development Co Ltd
Original Assignee
Perfect World Beijing Software Technology Development Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Perfect World Beijing Software Technology Development Co Ltd filed Critical Perfect World Beijing Software Technology Development Co Ltd
Priority to CN202010747145.3A priority Critical patent/CN111968215B/zh
Publication of CN111968215A publication Critical patent/CN111968215A/zh
Application granted granted Critical
Publication of CN111968215B publication Critical patent/CN111968215B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/20Perspective computation
    • G06T15/205Image-based rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/60Shadow generation

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Geometry (AREA)
  • Image Generation (AREA)

Abstract

本申请涉及一种体积光渲染方法、装置、电子设备及存储介质,该方法包括:创建高清晰渲染管线;在高清晰渲染管线中将体积云模型渲染到渲染目标,使得将云层显示到屏幕空间,其中,体积云模型用于表示虚拟场景中的云层;计算屏幕空间中各像素点对应的体积光照信息;根据体积光照信息在高清晰渲染管线中进行渲染,使得将云层对应的体积光显示到屏幕空间。该技术方案在HDRP中实现对体积云的渲染,使得在场景中生成高级视觉保真度的体积云效果,并且增加与体积光的交互,在提高画面质感方面发挥了很大的作用。加入了体积光效果,图像的立体感和层次将更加的丰富,同时也提高了场景的真实感受度。

Description

一种体积光渲染方法、装置、电子设备及存储介质
技术领域
本申请涉及图像处理技术领域,尤其涉及一种体积光渲染方法、装置、电子设备及存储介质。
背景技术
当一束光线透过胶体,由于胶体微粒对光线的散射作用,从垂直入射光方向可以观察到胶体里出现的一条光亮的“通路”,这种现象叫丁达尔现象。在实时渲染中这样的效果常称为体积光(Volumetric Light)。当阳光透过云层的间隙,形成光柱,也被称作上帝光(God Ray)。这种特效下的光照相比以往游戏中的光照给人视觉上以空间的感觉,进而让游戏玩家拥有更真实的感觉。
因此,如何模拟体积云对应的体积光效果,是现有技术中所需解决的技术问题。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本申请实施例提供了一种体积光渲染方法、装置、电子设备及存储介质。
根据本申请实施例的一个方面,提供了一种体积光渲染方法,包括:
创建高清晰渲染管线;
在所述高清晰渲染管线中将体积云模型渲染到渲染目标,使得将云层显示到屏幕空间,其中,所述体积云模型用于表示虚拟场景中的所述云层;
计算所述屏幕空间中各像素点对应的体积光照信息;
根据所述体积光照信息在所述高清晰渲染管线中进行渲染,使得将所述云层对应的体积光显示到所述屏幕空间。
可选的,所述计算所述屏幕空间中各像素点对应的体积光照信息,包括:
获取相机视角对应的视锥体及太阳光源对应的太阳阴影贴图;
将所述视锥体离散处理为三维纹理图像;
根据所述太阳阴影贴图计算所述三维纹理图像中各体素对应的第一光照信息;
根据所述相机视角的主视点发射的光线进行采样,得到所述相机视角视线方向上所述体素的第二光照信息;
根据所述第一光照信息和所述第二光照信息计算所述体积光照信息。
可选的,所述根据所述第一光照信息和所述第二光照信息计算所述体积光照信息,包括:
当确定太阳光源方向上存在所述云层遮挡时,获取在所述太阳光源方向上所述云层对应的阴影强度;
根据所述阴影强度及所述第一光照信息计算所述体素对应的第三光照信息;
根据所述第三光照信息和所述第二光照信息计算所述体积光照信息。
可选的,所述将所述视锥体离散处理为三维纹理图像,包括:
根据屏幕分辨率确定所述三维纹理图像对应的体积参数;
将所述视锥体离散处理为所述体积参数对应的三维纹理图像;
所述根据所述相机视角的主视点发射的光线进行采样,包括:
根据所述体积参数确定采样步长;
以所述采样步长根据所述相机视角的主视点发射的光线进行采样。
可选的,所述根据屏幕分辨率确定所述三维纹理图像对应的体积参数,包括:
根据所述屏幕分辨率确定所述体积参数中的宽度值和高度值;
采用低于所述屏幕分辨率的预设分辨率确定所述体积参数中的深度值。
可选的,所述根据所述体积光照信息在所述高清晰渲染管线中进行渲染,包括:
对所述渲染目标进行大气散射采样,得到所述渲染目标各像素对应的散射光线信息;
根据所述散射光线信息对所述体积光照信息进行渲染。
可选的,所述对所述渲染目标进行大气散射采样,包括:
当采样到不透明物体的边缘像素时,对所述边缘像素相邻的天空颜色进行采样;
使用所述天空颜色作为所述边缘像素的颜色。
可选的,所述获取太阳光源对应的太阳阴影贴图,包括:
获取从所述相机视角得到的相机深度纹理贴图,及从所述太阳光源方向得到的光源深度纹理贴图;
根据所述相机深度纹理贴图和所述光源深度纹理贴图在所述屏幕空间进行阴影收集计算,得到所述太阳阴影贴图。
可选的,所述根据所述相机深度纹理贴图和所述光源深度纹理贴图在所述屏幕空间进行阴影收集计算,得到所述太阳阴影贴图,包括:
确定所述相机深度纹理贴图中各像素的第一深度值及其对应的世界空间坐标;
将所述像素的世界空间坐标转换为所述光源深度纹理贴图对应的光源空间坐标;
将所述光源空间坐标在所述光源深度纹理贴图中对应的第二深度值与所述第一深度值进行比对;
当根据所述第一深度值与所述第二深度值的比对结果确定所述像素位于阴影内时,根据位于阴影内像素的像素值得到所述太阳阴影贴图。
根据本申请实施例的另一个方面,提供了一种体积光渲染装置,包括:
创建模块,用于创建高清晰渲染管线;
第一渲染模块,用于在所述高清晰渲染管线中将体积云模型渲染到渲染目标,使得将云层显示到屏幕空间,其中,所述体积云模型用于表示虚拟场景中的所述云层;
计算模块,用于计算所述屏幕空间中各像素点对应的体积光照信息;
第二渲染模块,用于根据所述体积光照信息在所述高清晰渲染管线中进行渲染,使得将所述云层对应的体积光显示到所述屏幕空间。
根据本申请实施例的另一个方面,提供了一种电子设备,包括:处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行计算机程序时,实现上述方法步骤。
根据本申请实施例的另一个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法步骤。
本申请实施例提供的上述技术方案与现有技术相比具有如下优点:
在HDRP中实现对体积云的渲染,使得在场景中生成高级视觉保真度的体积云效果,并且在体积云模拟过程中,增加与体积光的交互,在提高画面质感方面发挥了很大的作用。加入了体积光效果,图像的立体感和层次将更加的丰富,同时也提高了场景的真实感受度。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种体积光渲染方法的流程图;
图2为本申请另一实施例提供的一种体积光渲染方法的流程图;
图3为本申请另一实施例提供的一种体积光渲染方法的流程图;
图4为本申请另一实施例提供的一种体积光渲染方法的流程图;
图5为本申请另一实施例提供的一种体积光渲染方法的流程图;
图6为本申请另一实施例提供的一种体积光渲染方法的流程图;
图7为本申请另一实施例提供的一种体积光渲染方法的流程图;
图8为本申请实施例提供的一种体积光渲染装置的框图;
图9为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
体积云(Volumetric Clouds),一般称为容积云,在游戏中的体积云就是使用图像引擎来模拟真实云雾半透明、无规则的表现效果。
Unity为了提高引擎的画面表现,推出了提供高级视觉保真度,适用于PC和主机平台的可编程渲染管线——高清晰渲染管线(High Definition Render Pipeline,简称HDRP)。相对于传统的渲染管线,HDRP可以通过C#脚本完全自定义管线的实现方式。目前,HDRP还处于试用阶段,缺乏很多具体渲染效果的实现。本申请中,基于HDRP实现高清晰且效果逼真的体积云及其对应的体积光的渲染。
下面首先对本发明实施例所提供的一种基于体积云的体积光渲染方法进行介绍。
图1为本申请实施例提供的一种体积光渲染方法的流程图。如图1所示,该方法包括以下步骤:
步骤S11,创建高清晰渲染管线;
步骤S12,在高清晰渲染管线中将体积云模型渲染到渲染目标,使得将云层显示到屏幕空间,其中,体积云模型用于表示虚拟场景中的云层;
步骤S13,计算屏幕空间中各像素点对应的体积光照信息;
步骤S14,根据体积光照信息在高清晰渲染管线中进行渲染,使得将云层对应的体积光显示到屏幕空间。
本实施例中,在HDRP中实现对体积云的渲染,使得在场景中生成高级视觉保真度的体积云效果,并且在体积云模拟过程中,增加与体积光的交互,在提高画面质感方面发挥了很大的作用。加入了体积光效果,图像的立体感和层次将更加的丰富,同时也提高了场景的真实感受度。
下面对上述步骤S11至S14进行详细说明。
步骤S11中,Unity创建HDRP工程有两种方式,一是在原有的工程基础上升级为HDRP工程,二是创建新的HDRP工程。本实施例中,两种方式均可采用。
步骤S12中,首先将体积云模型添加到HDRP中,具体操作包括:开启体积照明(Volumetric Lighting)后,在Volume框架下添加体积云模型。
可选的,本实施例中的体积云模型,为预先采用云模拟技术模拟得到的模型。云模拟方法包括但不限于以下方法:
(1)基于物理方法的云模拟技术,如粒子系统、气泡建模或体素建模。例如,利用细胞自动机算法模拟体积云的物理变化过程;
(2)基于已有经验模型的云模拟技术,如纹理映射方法或噪音函数方法。例如,利用Perlin噪音函数构建三维体积云模型,增加时间维度后,根据程序运行的帧数控制粒子的生成或消失,从而实现体积云的物理变化。
在HDRP中将体积云模型渲染到渲染目标,使得将渲染后的云层显示到屏幕。其中,渲染目标(RenderTarget),是用于渲染像素的显存缓冲区。该步骤中,可以将体积云模型渲染到默认渲染目标,默认渲染目标即后台缓冲区,物理上就是包含下一帧要绘制的信息的一块显存。也可以采用RenderTarget2D类创建一个新渲染目标,在显存中保留一块新区域用于绘制体积云。可选的,还可以将图像的各部分内容分别绘制到不同渲染目标内,然后再编译这些图像元素,将它们组合后构成最终的后台缓冲数据。显卡通过读取渲染目标中的数据,使用一个Effect类绘制场景的像素,从而将云层及阴影显示在屏幕上。
步骤S13中,由于HDRP中提供体积照明(Volumetric Lighting)组件,在HDRP中勾选控制全局效果的“Volumetrics”选项后,创建Density Volume(密度体积)包围住整个需要包裹范围的场景,在场景设置中加入Volumetric fog(体积雾)功能,在包裹范围内加入光源,即可在场景内增加体积光效果。
在步骤S14中,根据计算得到的体积光照信息渲染体积光,在场景中显示云层对应的体积光效果。
下面对上述步骤S13中计算体积光照信息的过程进行详细描述,本实施例中,基于太阳光源的太阳阴影贴图(Shadow map)及光线步进(Ray Marching)实现体积光。
图2为本申请另一实施例提供的一种体积光渲染方法的流程图。如图2所示,上述步骤S13包括以下步骤:
步骤S21,获取相机视角对应的视锥体及太阳光源对应的太阳阴影贴图;
步骤S22,将视锥体离散处理为三维纹理图像;
步骤S23,根据太阳阴影贴图计算三维纹理图像中各体素对应的第一光照信息;
步骤S24,根据相机视角的主视点发射的光线进行采样,得到相机视角视线方向上体素的第二光照信息;
步骤S25,根据第一光照信息和第二光照信息计算体积光照信息。
在上述步骤S21至S23中,将相机空间的视锥体投影到三维纹理表示的空间,三维纹理中每个体素存储其当前的空间信息。基于太阳阴影贴图可以判断三维纹理空间中的各体素是否被遮挡,即是否受到光照。具体地,通过将体素点的世界坐标(在片段着色器(Fragment Shader)中获得或由体素点深度反推获得)与光源的视图投影矩阵(viewProjectionMatrix)相乘,获得该体素点在Shadow map下的uv纹理坐标,并与Shadowmap记录的深度进行比较,若Shadow map记录的深度大于等于该点,则表示该点并没有在阴影下,应该受到光照,反之则表示该点受到遮挡,不应该受到光照。因此,基于太阳Shadowmap可以得到每个体素对应的光照信息。
在上述步骤S24中,通过相机主视点往各个方向进行RayMarching,得到当前相机视线方向的光照信息。具体地,从主视点开始,沿着射线每次推进一点,采样每个点的亮度,所有经过的采样点上的散射亮度求和就是体素的颜色;射光的亮度和离光源的距离成平方反比;迭代介质中的光散射亮度。
在上述步骤S25中,将每个体素的第一光照信息和第二光照信息结合,就可到该体素在太阳光线遮挡后的光照结果,从而形成体积光效果。
本实施例中,基于太阳Shadow map计算三维纹理中各体素点的光照信息,与通过RayMarching获得的视线方向上各体素的光照信息进行结合,得到太阳光线被遮挡后三维空间中体素的光照信息,从而形成在云层遮挡下的体积光,即God Ray,给人视觉上以空间的感觉,进而让观看者拥有更真实的感觉。
另外,使用RayMarching计算光照信息时,采用各个方向上散射光强度一样,没有变化,不够真实,另外这种体积光也不会被遮挡。因此,可选的,在计算散射光强度的时候,不应该只由到光源的距离来衰减光强,还应该乘以以下至少一个因子:
(1)散射因子(HG公式),HG公式表示了每个方向散射出去的光线亮度应该是不一样的,并且散射出去的光线亮度总合应该和射到尘埃上的那束光线亮度一样,也就是能量守恒。
(2)投光比因子:根据Beer-Lambert法子,根据物质的密度和到光源距离,可以描述入射光强度和透光强度的比值。
(3)阴影因子:如Shadow Mapping等阴影算法。
经过上述因子的调整,使得计算得到的体积光有了更多变化,真实性有了进一步提高。
在可选实施例中,在有云层遮挡的情况下,可以进一步根据云层的阴影强度(ShadowStrength)调整每个体素的光照信息。图3为本申请另一实施例提供的一种体积光渲染方法的流程图。如图3所示,上述步骤S25包括:
步骤S31,当确定太阳光源方向上存在云层遮挡时,获取在太阳光源方向上云层对应的阴影强度;
步骤S32,根据阴影强度及第一光照信息计算体素对应的第三光照信息;
步骤S33,根据第三光照信息和第二光照信息计算体积光照信息。
本实施例中,根据云层在太阳光方向上投射的ShadowStrength,对太阳Shadowmap中相应的体素值进行调整,其中,ShadowStrength的取值范围为[0,1],当ShadowStrength为0时,表示没有阴影。最终得到的体积光照信息可以表现出云层对太阳光的阴影效果。
在另一可选实施例中,上述步骤S22对视锥体离散处理时,需要获得三维纹理图像的体积参数,该参数可以是默认,也可以根据屏幕分辨率确定。图4为本申请另一实施例提供的一种体积光渲染方法的流程图。如图4所示,步骤S22包括:
步骤S41,根据屏幕分辨率确定三维纹理图像对应的体积参数;
步骤S42,将视锥体离散处理为体积参数对应的三维纹理图像。
在步骤S41中,体积参数中的宽度值、高度值和深度值可分别采用不同方式确定。可选的,步骤S41包括:根据屏幕分辨率确定体积参数中的宽度值和高度值;采用低于屏幕分辨率的预设分辨率确定体积参数中的深度值。
其中,宽度值width和高度值height采用与屏幕分辨率相关的高分辨率,如640或1280像素,而深度值depth可以选用较低分辨率,如64或128像素。
确定三维纹理图像对应的体积参数后,在进行RayMarching时,可根据体积参数确定采样步长。上述步骤S24包括:根据体积参数确定采样步长;以采样步长根据相机视角的主视点发射的光线进行采样。
可选的,该采样步长(Step size)可以为固定步长(Constant Step),例如,采样步长Step size为5。
固定步长的Ray marching非常低效,射线每次都会延长同样的长度,不会考虑到几何体填满立体空间的情况。而对于Shader来说,无效循环的增加就意味着性能的下降。如果要实现实时的立体渲染,Step size也可以为变长的。
例如,从光线原点射出光线,先以原点为中心调用一次距离函数,如Sphere Hit函数,计算出此点到球形表面的最短距离。如果小于设置好的误差值,就视为接触到物体,返回距离值。如果判断没接触到,则沿着光线向量前进刚刚计算出的距离值得到新的圆心继续求距离,直到判定为接触物体。如果前进步数过多,超出设定最高步数或者前进距离超出最远距离,就视为无法接触物体。
经过距离估算后,Ray marching的步长随着接近物体而减小,大幅减少射线命中渲染体所需的步数,提高Ray marching效率及Shader的性能。
在对体积光的模拟时,需要考虑真实的物理规律,其中最重要的一点就是考虑大气散射对光线的影响。散射的计算能够满足虚拟场景连续时间空间需求,大大提高场景视觉表现力和真实性,提供写实分为的环境光效。但是,如果在Ray marching过程中同时计算大气散射影响后的光照信息,对计算效率影响较大。为了获得大气散射对于光照信息的影响,且避免对计算效率的影响,采用如下方式解决。
图5为本申请另一实施例提供的一种体积光渲染方法的流程图。如图5所示,上述步骤S14包括:
步骤S51,对渲染目标进行大气散射采样,得到渲染目标各像素对应的散射光线信息;
步骤S52,根据散射光线信息对体积光照信息进行渲染。
本实施例中,由于HDRP中对体积云的计算结果已经包含有大气散射场景的渲染结果,因此可以从HDRP中体积云对应的RenderTarget进行采样,直接得到大气散射后的光照信息。
由于计算误差以及体积云对应的RenderTarget和屏幕空间尺寸差别,使得对天空进行颜色采样时,可能会采样到场景中的不透明物体上。为了解决采样不准确的问题,上述步骤S51中对渲染目标进行大气散射采样,包括:当采样到不透明物体的边缘像素时,对边缘像素相邻的天空颜色进行采样;使用天空颜色作为边缘像素的颜色。
可选的,场景中的不透明物体可以通过当前画面对应的深度图来识别。将相机渲染模式设置为深度模式(depth),之后在Shader中调用Unity内置变量Camera.depthTexture来获取深度图。其中,深度图里可以存放了[0,1]范围的非线性分布的深度值,这些深度值来自标准化设备坐标(Normalized Device Coordinates,NDC)。在深度图中,不透明物体被渲染为黑色。基于深度图中的深度值,可以识别出画面中的不透明物体。
通过上述步骤S51至步骤S52,对于不透明物体进行描边,使用其周围天空中的颜色作为边缘像素的颜色,这样,可以有效避免采样结果的误差。
图6为本申请另一实施例提供的一种体积光渲染方法的流程图。如图6所示,在另一可选实施例中,上述步骤S21获取太阳光源对应的太阳阴影贴图,包括:
步骤S61,获取从相机视角得到的相机深度纹理贴图,及从太阳光源方向得到的光源深度纹理贴图;
步骤S62,根据相机深度纹理贴图和光源深度纹理贴图在屏幕空间进行阴影收集计算,得到太阳阴影贴图。
在步骤S61中,首先在当前相机处创建深度相机,得到从当前相机处观察到的深度纹理贴图;然后从太阳光源处创建深度相机,得到从该太阳光源处观察得到的深度纹理贴图。在步骤S62中,在屏幕空间做一次阴影收集计算(Shadows Collector),得到太阳阴影贴图,即在太阳光照射下位于阴影中的像素。
图7为本申请另一实施例提供的一种体积光渲染方法的流程图。如图7所示,上述步骤S62阴影收集过程包括以下步骤:
步骤S71,确定相机深度纹理贴图中各像素的第一深度值及其对应的世界空间坐标;
步骤S72,将像素的世界空间坐标转换为光源深度纹理贴图对应的光源空间坐标;
步骤S73,将光源空间坐标在光源深度纹理贴图中对应的第二深度值与第一深度值进行比对;
步骤S74,当根据第一深度值与第二深度值的比对结果确定像素位于阴影内时,根据位于阴影内像素的像素值得到太阳阴影贴图。
在步骤S71至S74中,使用深度信息重建像素在世界空间中的世界坐标,把每个像素的世界空间坐标转换到光源空间中后,确定该像素在光源深度纹理贴图里面相应的深度值,将该像素在相机深度纹理贴图中的深度值与在光源深度纹理贴图中的深度值进行比对,如果该像素在相机深度纹理贴图中的深度值大于在光源深度纹理贴图中的深度值,那么就说明光源无法照到该像素,该像素处在阴影内。这样,最终得到的太阳阴影贴图中包含了屏幕空间中相对于太阳光所有有阴影的区域。
在另一个可选实施例中,该方法还包括:
接收在体积云编辑器中对体积云覆盖贴图的编辑操作;
根据编辑操作调整体积云模型。
本实施例中,体积云编辑器提供GameView窗口,用户在该窗口中可以实时编辑体积云的Coverage贴图,从而不仅可以对体积云的渲染结果进行调整,还可以基于Coverage贴图调整体积云的阴影及对应的体积光效果。
下述为本申请装置实施例,可以用于执行本申请方法实施例。
图8为本申请实施例提供的一种体积光渲染装置的框图,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。如图8所示,该体积光渲染装置包括:
创建模块81,用于创建高清晰渲染管线;
第一渲染模块82,用于在高清晰渲染管线中将体积云模型渲染到渲染目标,使得将云层显示到屏幕空间,其中,体积云模型用于表示虚拟场景中的云层;
计算模块83,用于计算屏幕空间中各像素点对应的体积光照信息;
第二渲染模块84,用于根据体积光照信息在高清晰渲染管线中进行渲染,使得将云层对应的体积光显示到屏幕空间。
可选的,计算模块83包括:
获取子模块,用于获取相机视角对应的视锥体及太阳光源对应的太阳阴影贴图;
离散处理子模块,用于将视锥体离散处理为三维纹理图像;
第一计算子模块,用于根据太阳阴影贴图计算三维纹理图像中各体素对应的第一光照信息;
光线步进子模块,用于根据相机视角的主视点发射的光线进行采样,得到相机视角视线方向上体素的第二光照信息;
第二计算子模块,用于根据第一光照信息和第二光照信息计算体积光照信息。
可选的,第二计算子模块,用于当确定太阳光源方向上存在云层遮挡时,获取在太阳光源方向上云层对应的阴影强度;根据阴影强度及第一光照信息计算体素对应的第三光照信息;根据第三光照信息和第二光照信息计算体积光照信息。
可选的,离散处理子模块,用于根据屏幕分辨率确定三维纹理图像对应的体积参数;将视锥体离散处理为体积参数对应的三维纹理图像;
光线步进子模块,用于根据体积参数确定采样步长;以采样步长根据相机视角的主视点发射的光线进行采样。
可选的,离散处理子模块,用于根据屏幕分辨率确定体积参数中的宽度值和高度值;采用低于屏幕分辨率的预设分辨率确定体积参数中的深度值。
可选的,第二渲染模块84包括:
采用子模块,用于对渲染目标进行大气散射采样,得到渲染目标各像素对应的散射光线信息;
渲染子模块,用于根据散射光线信息对体积光照信息进行渲染。
可选的,采用子模块,用于当采样到不透明物体的边缘像素时,对边缘像素相邻的天空颜色进行采样;使用天空颜色作为边缘像素的颜色。
可选的,获取子模块,用于获取从相机视角得到的相机深度纹理贴图,及从太阳光源方向得到的光源深度纹理贴图;根据相机深度纹理贴图和光源深度纹理贴图在屏幕空间进行阴影收集计算,得到太阳阴影贴图。
可选的,获取子模块,还用于确定相机深度纹理贴图中各像素的第一深度值及其对应的世界空间坐标;将像素的世界空间坐标转换为光源深度纹理贴图对应的光源空间坐标;将光源空间坐标在光源深度纹理贴图中对应的第二深度值与第一深度值进行比对;当根据第一深度值与第二深度值的比对结果确定像素位于阴影内时,根据位于阴影内像素的像素值得到太阳阴影贴图。
本申请实施例还提供一种电子设备,如图9所示,电子设备可以包括:处理器1501、通信接口1502、存储器1503和通信总线1504,其中,处理器1501,通信接口1502,存储器1503通过通信总线1504完成相互间的通信。
存储器1503,用于存放计算机程序;
处理器1501,用于执行存储器1503上所存放的计算机程序时,实现以下上述方法实施例的步骤。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,P C I)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(DigitalSignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本申请还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法实施例的以下步骤:
创建高清晰渲染管线;
在高清晰渲染管线中将体积云模型渲染到渲染目标,使得将云层显示到屏幕空间,其中,体积云模型用于表示虚拟场景中的云层;
计算屏幕空间中各像素点对应的体积光照信息;
根据体积光照信息在高清晰渲染管线中进行渲染,使得将云层对应的体积光显示到屏幕空间。
可选的,计算屏幕空间中各像素点对应的体积光照信息,包括:
获取相机视角对应的视锥体及太阳光源对应的太阳阴影贴图;
将视锥体离散处理为三维纹理图像;
根据太阳阴影贴图计算三维纹理图像中各体素对应的第一光照信息;
根据相机视角的主视点发射的光线进行采样,得到相机视角视线方向上体素的第二光照信息;
根据第一光照信息和第二光照信息计算体积光照信息。
可选的,根据第一光照信息和第二光照信息计算体积光照信息,包括:
当确定太阳光源方向上存在云层遮挡时,获取在太阳光源方向上云层对应的阴影强度;
根据阴影强度及第一光照信息计算体素对应的第三光照信息;
根据第三光照信息和第二光照信息计算体积光照信息。
可选的,将视锥体离散处理为三维纹理图像,包括:
根据屏幕分辨率确定三维纹理图像对应的体积参数;
将视锥体离散处理为体积参数对应的三维纹理图像;
根据相机视角的主视点发射的光线进行采样,包括:
根据体积参数确定采样步长;
以采样步长根据相机视角的主视点发射的光线进行采样。
可选的,根据屏幕分辨率确定三维纹理图像对应的体积参数,包括:
根据屏幕分辨率确定体积参数中的宽度值和高度值;
采用低于屏幕分辨率的预设分辨率确定体积参数中的深度值。
可选的,根据体积光照信息在高清晰渲染管线中进行渲染,包括:
对渲染目标进行大气散射采样,得到渲染目标各像素对应的散射光线信息;
根据散射光线信息对体积光照信息进行渲染。
可选的,对渲染目标进行大气散射采样,包括:
当采样到不透明物体的边缘像素时,对边缘像素相邻的天空颜色进行采样;
使用天空颜色作为边缘像素的颜色。
可选的,获取太阳光源对应的太阳阴影贴图,包括:
获取从相机视角得到的相机深度纹理贴图,及从太阳光源方向得到的光源深度纹理贴图;
根据相机深度纹理贴图和光源深度纹理贴图在屏幕空间进行阴影收集计算,得到太阳阴影贴图。
可选的,根据相机深度纹理贴图和光源深度纹理贴图在屏幕空间进行阴影收集计算,得到太阳阴影贴图,包括:
确定相机深度纹理贴图中各像素的第一深度值及其对应的世界空间坐标;
将像素的世界空间坐标转换为光源深度纹理贴图对应的光源空间坐标;
将光源空间坐标在光源深度纹理贴图中对应的第二深度值与第一深度值进行比对;
当根据第一深度值与第二深度值的比对结果确定像素位于阴影内时,根据位于阴影内像素的像素值得到太阳阴影贴图。
需要说明的是,对于上述装置、电子设备及计算机可读存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
进一步需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。

Claims (11)

1.一种体积光渲染方法,其特征在于,包括:
创建高清晰渲染管线;
在所述高清晰渲染管线中将体积云模型渲染到渲染目标,使得将云层显示到屏幕空间,其中,所述体积云模型用于表示虚拟场景中的所述云层;
计算所述屏幕空间中各像素点对应的体积光照信息;
根据所述体积光照信息在所述高清晰渲染管线中进行渲染,使得将所述云层对应的体积光显示到所述屏幕空间;
所述计算所述屏幕空间中各像素点对应的体积光照信息,包括:
获取相机视角对应的视锥体及太阳光源对应的太阳阴影贴图;
将所述视锥体离散处理为三维纹理图像;
根据所述太阳阴影贴图计算所述三维纹理图像中各体素对应的第一光照信息;
根据所述相机视角的主视点发射的光线进行采样,得到所述相机视角视线方向上所述体素的第二光照信息;
根据所述第一光照信息和所述第二光照信息计算所述体积光照信息。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一光照信息和所述第二光照信息计算所述体积光照信息,包括:
当确定太阳光源方向上存在所述云层遮挡时,获取在所述太阳光源方向上所述云层对应的阴影强度;
根据所述阴影强度及所述第一光照信息计算所述体素对应的第三光照信息;
根据所述第三光照信息和所述第二光照信息计算所述体积光照信息。
3.根据权利要求1所述的方法,其特征在于,所述将所述视锥体离散处理为三维纹理图像,包括:
根据屏幕分辨率确定所述三维纹理图像对应的体积参数;
将所述视锥体离散处理为所述体积参数对应的三维纹理图像;
所述根据所述相机视角的主视点发射的光线进行采样,包括:
根据所述体积参数确定采样步长;
以所述采样步长根据所述相机视角的主视点发射的光线进行采样。
4.根据权利要求3所述的方法,其特征在于,所述根据屏幕分辨率确定所述三维纹理图像对应的体积参数,包括:
根据所述屏幕分辨率确定所述体积参数中的宽度值和高度值;
采用低于所述屏幕分辨率的预设分辨率确定所述体积参数中的深度值。
5.根据权利要求1所述的方法,其特征在于,所述根据所述体积光照信息在所述高清晰渲染管线中进行渲染,包括:
对所述渲染目标进行大气散射采样,得到所述渲染目标各像素对应的散射光线信息;
根据所述散射光线信息对所述体积光照信息进行渲染。
6.根据权利要求5所述的方法,其特征在于,所述对所述渲染目标进行大气散射采样,包括:
当采样到不透明物体的边缘像素时,对所述边缘像素相邻的天空颜色进行采样;
使用所述天空颜色作为所述边缘像素的颜色。
7.根据权利要求1所述的方法,其特征在于,所述获取太阳光源对应的太阳阴影贴图,包括:
获取从所述相机视角得到的相机深度纹理贴图,及从所述太阳光源方向得到的光源深度纹理贴图;
根据所述相机深度纹理贴图和所述光源深度纹理贴图在所述屏幕空间进行阴影收集计算,得到所述太阳阴影贴图。
8.根据权利要求7所述的方法,其特征在于,所述根据所述相机深度纹理贴图和所述光源深度纹理贴图在所述屏幕空间进行阴影收集计算,得到所述太阳阴影贴图,包括:
确定所述相机深度纹理贴图中各像素的第一深度值及其对应的世界空间坐标;
将所述像素的世界空间坐标转换为所述光源深度纹理贴图对应的光源空间坐标;
将所述光源空间坐标在所述光源深度纹理贴图中对应的第二深度值与所述第一深度值进行比对;
当根据所述第一深度值与所述第二深度值的比对结果确定所述像素位于阴影内时,根据位于阴影内像素的像素值得到所述太阳阴影贴图。
9.一种体积光渲染装置,其特征在于,包括:
创建模块,用于创建高清晰渲染管线;
第一渲染模块,用于在所述高清晰渲染管线中将体积云模型渲染到渲染目标,使得将云层显示到屏幕空间,其中,所述体积云模型用于表示虚拟场景中的所述云层;
计算模块,用于计算所述屏幕空间中各像素点对应的体积光照信息;
第二渲染模块,用于根据所述体积光照信息在所述高清晰渲染管线中进行渲染,使得将所述云层对应的体积光显示到所述屏幕空间;
所述计算模块包括:
获取子模块,用于获取相机视角对应的视锥体及太阳光源对应的太阳阴影贴图;
离散处理子模块,用于将所述视锥体离散处理为三维纹理图像;
第一计算子模块,用于根据所述太阳阴影贴图计算所述三维纹理图像中各体素对应的第一光照信息;
光线步进子模块,用于根据所述相机视角的主视点发射的光线进行采样,得到所述相机视角视线方向上体素的第二光照信息;
第二计算子模块,用于根据所述第一光照信息和所述第二光照信息计算所述体积光照信息。
10.一种电子设备,其特征在于,包括:处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行所述计算机程序时,实现权利要求1-8任一项所述的方法步骤。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1-8任一项所述的方法步骤。
CN202010747145.3A 2020-07-29 2020-07-29 一种体积光渲染方法、装置、电子设备及存储介质 Active CN111968215B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010747145.3A CN111968215B (zh) 2020-07-29 2020-07-29 一种体积光渲染方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010747145.3A CN111968215B (zh) 2020-07-29 2020-07-29 一种体积光渲染方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN111968215A CN111968215A (zh) 2020-11-20
CN111968215B true CN111968215B (zh) 2024-03-22

Family

ID=73363605

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010747145.3A Active CN111968215B (zh) 2020-07-29 2020-07-29 一种体积光渲染方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN111968215B (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112465941B (zh) * 2020-12-02 2023-04-28 成都完美时空网络技术有限公司 一种体积云处理方法、装置、电子设备及存储介质
CN112200900B (zh) * 2020-12-02 2021-02-26 成都完美时空网络技术有限公司 一种体积云渲染方法、装置、电子设备及存储介质
CN112439196B (zh) * 2020-12-11 2021-11-23 完美世界(北京)软件科技发展有限公司 游戏灯光渲染方法、装置、设备和存储介质
CN112669432B (zh) * 2020-12-23 2024-10-11 北京像素软件科技股份有限公司 容积云渲染方法、装置、电子设备及存储介质
CN112691378B (zh) * 2020-12-23 2022-06-07 完美世界(北京)软件科技发展有限公司 图像处理方法、设备及可读介质
CN113144613B (zh) * 2021-05-08 2024-06-21 成都乘天游互娱网络科技有限公司 基于模型的体积云生成的方法
CN113421199B (zh) * 2021-06-23 2024-03-12 北京达佳互联信息技术有限公司 图像处理方法、装置、电子设备及存储介质
CN113283543B (zh) * 2021-06-24 2022-04-15 北京优锘科技有限公司 一种基于WebGL的图像投影融合方法、装置、存储介质和设备
CN113470161B (zh) * 2021-06-30 2022-06-07 完美世界(北京)软件科技发展有限公司 虚拟环境中容积云的光照确定方法、相关设备及存储介质
CN113936096B (zh) * 2021-09-30 2025-03-21 完美世界(北京)软件科技发展有限公司 体积云的定制化渲染方法、设备及存储介质
CN113936097B (zh) * 2021-09-30 2023-10-20 完美世界(北京)软件科技发展有限公司 体积云渲染方法、设备及存储介质
CN114170359B (zh) * 2021-11-03 2024-08-30 完美世界(北京)软件科技发展有限公司 体积雾渲染方法、装置、设备及存储介质
CN114170369B (zh) * 2021-11-12 2025-03-21 完美世界(北京)软件科技发展有限公司 体积云的光照处理方法、设备及存储介质
CN114299212A (zh) * 2021-12-24 2022-04-08 网易(杭州)网络有限公司 冰块模型渲染方法及装置
CN114998504B (zh) * 2022-07-29 2022-11-15 杭州摩西科技发展有限公司 二维图像光照渲染方法、装置、系统和电子装置
CN115294275A (zh) * 2022-08-05 2022-11-04 珠海普罗米修斯视觉技术有限公司 三维模型的重建方法、装置及计算机可读存储介质
CN115830208B (zh) * 2023-01-09 2023-05-09 腾讯科技(深圳)有限公司 全局光照渲染方法、装置、计算机设备和存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104091363A (zh) * 2014-07-09 2014-10-08 无锡梵天信息技术股份有限公司 一种基于屏幕空间实时的体积云计算方法
CN104143205A (zh) * 2013-05-11 2014-11-12 哈尔滨点石仿真科技有限公司 大规模真实感体积云的实时渲染方法
CN105869106A (zh) * 2016-04-27 2016-08-17 中国电子科技集团公司第二十八研究所 一种改进的三维实体云绘制方法
CN109544674A (zh) * 2018-11-21 2019-03-29 北京像素软件科技股份有限公司 一种体积光实现方法及装置
KR20200082601A (ko) * 2018-12-31 2020-07-08 한국전자통신연구원 다층 볼륨 구름 렌더링 장치 및 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104143205A (zh) * 2013-05-11 2014-11-12 哈尔滨点石仿真科技有限公司 大规模真实感体积云的实时渲染方法
CN104091363A (zh) * 2014-07-09 2014-10-08 无锡梵天信息技术股份有限公司 一种基于屏幕空间实时的体积云计算方法
CN105869106A (zh) * 2016-04-27 2016-08-17 中国电子科技集团公司第二十八研究所 一种改进的三维实体云绘制方法
CN109544674A (zh) * 2018-11-21 2019-03-29 北京像素软件科技股份有限公司 一种体积光实现方法及装置
KR20200082601A (ko) * 2018-12-31 2020-07-08 한국전자통신연구원 다층 볼륨 구름 렌더링 장치 및 방법

Also Published As

Publication number Publication date
CN111968215A (zh) 2020-11-20

Similar Documents

Publication Publication Date Title
CN111968215B (zh) 一种体积光渲染方法、装置、电子设备及存储介质
CN111968216B (zh) 一种体积云阴影渲染方法、装置、电子设备及存储介质
US11024077B2 (en) Global illumination calculation method and apparatus
US20230394740A1 (en) Method and system providing temporary texture application to enhance 3d modeling
JP5531093B2 (ja) コンピュータグラフィックスでオブジェクトにシャドウを付ける方法
CN111508052A (zh) 三维网格体的渲染方法和装置
US11232628B1 (en) Method for processing image data to provide for soft shadow effects using shadow depth information
CN111968214B (zh) 一种体积云渲染方法、装置、电子设备及存储介质
JP2020198066A (ja) 拡張現実アプリケーション用システム及び方法
US20080068386A1 (en) Real-Time Rendering of Realistic Rain
Widmer et al. An adaptive acceleration structure for screen-space ray tracing
WO2024148898A1 (zh) 图像降噪方法、装置、计算机设备和存储介质
US8106906B1 (en) Optical system effects for computer graphics
CA3199390A1 (en) Systems and methods for rendering virtual objects using editable light-source parameter estimation
CN118097070B (zh) 一种实拟虚境的实现方法及装置、电子设备、存储介质
US20230316640A1 (en) Image processing apparatus, image processing method, and storage medium
CN118397160A (zh) 一种用于油田站场逆向建站系统的自主化三维渲染引擎
WO2025025724A1 (zh) 光照渲染方法、装置、终端和存储介质
WO2025055518A1 (zh) 虚拟画面的生成方法、装置、电子设备、计算机可读存储介质及计算机程序产品
JPH08153213A (ja) 画像合成表示方法
CN119863557A (zh) 图形渲染方法和电子设备
CN118674853B (zh) 一种三维模型表面皮肤渲染方法、系统、存储介质及设备
US20250218111A1 (en) Light update method and apparatus for virtual scene, electronic device, computer-readable storage medium, and computer program product
CN119701349A (zh) 显示方法、装置、电子设备及可读存储介质
CN119251430A (zh) 一种基于点云数据的虚拟场景构建方法、介质及设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant