CN111968214B - 一种体积云渲染方法、装置、电子设备及存储介质 - Google Patents
一种体积云渲染方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN111968214B CN111968214B CN202010746014.3A CN202010746014A CN111968214B CN 111968214 B CN111968214 B CN 111968214B CN 202010746014 A CN202010746014 A CN 202010746014A CN 111968214 B CN111968214 B CN 111968214B
- Authority
- CN
- China
- Prior art keywords
- rendering
- cloud
- parameters
- cloud model
- volumetric
- 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
Links
- 238000009877 rendering Methods 0.000 title claims abstract description 344
- 238000000034 method Methods 0.000 title claims abstract description 60
- 230000000007 visual effect Effects 0.000 claims abstract description 12
- 238000004891 communication Methods 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 10
- 239000011159 matrix material Substances 0.000 claims description 9
- 239000000463 material Substances 0.000 claims description 6
- 238000012360 testing method Methods 0.000 claims description 6
- 230000002194 synthesizing effect Effects 0.000 claims description 4
- 230000000694 effects Effects 0.000 abstract description 13
- 230000008569 process Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 5
- 238000004088 simulation Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 230000003139 buffering effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000008034 disappearance Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 238000005429 filling process Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 239000003595 mist Substances 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000000053 physical method Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/20—Perspective computation
- G06T15/205—Image-based rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/08—Volume rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/13—Edge detection
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- Computing Systems (AREA)
- Geometry (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Image Generation (AREA)
Abstract
本申请涉及一种体积云渲染方法、装置、电子设备及存储介质,该方法包括:创建高清晰渲染管线;在所述高清晰渲染管线中添加体积云模型,其中,所述体积云模型用于表示虚拟场景中的云层;获取用于所述高清晰渲染管线中的渲染上下文信息;在高清晰渲染管线中根据所述渲染上下文信息将所述体积云模型渲染到渲染目标,使得将渲染后的体积云显示到屏幕。该技术方案在高清晰渲染管线中实现对体积云的渲染,使得可以在场景中生成高级视觉保真度的体积云效果,提高三维画面的逼真程度。
Description
技术领域
本申请涉及图像渲染技术领域,尤其涉及一种体积云渲染方法、装置、电子设备及存储介质。
背景技术
云层是户外场景中一个重要的组成部分,在大多数的小规模三维场景或者视点位于地面附近的场景的实时绘制系统中,云通常采用天空盒纹理进行绘制实现。如果视点处于天空中近距离观看云层,甚至进入云层之中,天空盒方法所绘制的结果就无法获得足够的真实感。
由于,体积云的模拟效果直接关系着三维游戏的逼真程度,影响着用户的体验度,因此,如何实现较为逼真的体积云效果,是现有技术中所需解决的技术问题。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本申请实施例提供了一种体积云渲染方法、装置、电子设备及存储介质。
根据本申请实施例的一个方面,提供了一种体积云渲染方法,包括:
创建高清晰渲染管线;
在所述高清晰渲染管线中添加体积云模型,其中,所述体积云模型用于表示虚拟场景中的云层;
获取用于所述高清晰渲染管线中的渲染上下文信息;
在高清晰渲染管线中根据所述渲染上下文信息将所述体积云模型渲染到渲染目标,使得将渲染后的体积云显示到屏幕。
可选的,所述在高清晰渲染管线中根据所述渲染上下文信息将所述体积云模型渲染到渲染目标,包括:
在所述高清晰渲染管线中的高清相机附加数据类中添加渲染节点,在所述渲染节点执行根据所述渲染上下文信息对所述体积云模型进行渲染的渲染操作;
将所述渲染操作对应的渲染事件加入执行队列中;
根据所述执行队列依次调用所述渲染事件对应的渲染节点,执行所述渲染事件对应的渲染操作。
可选的,所述在高清晰渲染管线中根据所述渲染上下文信息将所述体积云模型渲染到渲染目标,包括:
获取当前画面对应的深度图;
当根据所述深度图确定所述当前画面中存在不透明物体时,在所述当前画面中除所述不透明物体之外的区域对所述体积云模型进行渲染。
可选的,所述在所述当前画面中除所述不透明物体之外的区域对所述体积云模型进行渲染,还包括:
确定当前画面帧中所述不透明物体的边缘像素;
在所述边缘像素进行对所述体积云模型的渲染。
可选的,所述在所述当前画面中除所述不透明物体之外的区域对所述体积云模型进行渲染,包括:
获取所述当前画面帧相邻的前一画面帧中所述边缘像素对应的第一边缘像素信息;
使用所述第一边缘像素信息对所述当前画面帧中的边缘像素进行填充。
可选的,所述在高清晰渲染管线中根据所述渲染上下文信息将所述体积云模型渲染到渲染目标,包括:
对当前画面帧进行的下采样,得到所述当前画面帧对应的N个待渲染子帧,其中,N为大于1的整数;
分别对各所述待渲染子帧进行渲染,得到渲染后子帧;
将各所述渲染后子帧合成为渲染后画面帧。
可选的,当使用第一边缘像素信息对所述当前画面帧中的边缘像素进行填充失败时,所述在高清晰渲染管线中根据所述渲染上下文信息将所述体积云模型渲染到渲染目标,包括:
获取所述渲染后画面帧中所述边缘像素对应的第二边缘像素信息;
使用所述第二边缘像素信息对所述当前画面帧中的边缘像素进行填充。
可选的,所述在高清晰渲染管线中根据所述渲染上下文信息将所述体积云模型渲染到渲染目标,包括:
当通过对比相邻画面帧确定相机视角发生变化时,确定所述相邻画面帧之间重合的体积云区域;
将所述相邻画面帧中前一画面帧中所述体积云区域的像素信息进行重投影,得到填充像素信息;
将所述填充像素信息填充到当前画面帧中的所述体积云区域中。
可选的,所述获取用于所述高清晰渲染管线中的渲染上下文信息,包括:
根据接收到的渲染设置信息和/或对渲染配置选项的选定操作确定所述渲染上下文信息;
其中,所述渲染上下文信息包括以下至少一项参数:
视图设置参数、绘制缓冲参数、贴图参数、着色器参数、缓冲数据参数、材质参数、矩阵参数、裁剪参数、透明通道参数、模板测试参数、雾参数及灯光参数。
根据本申请实施例的另一个方面,提供了一种体积云渲染装置,包括:
创建模块,用于创建高清晰渲染管线;
添加模块,用于在所述高清晰渲染管线中添加体积云模型,其中,所述体积云模型用于表示虚拟场景中的云层;
获取模块,用于获取用于所述高清晰渲染管线中的渲染上下文信息;
渲染模块,用于在高清晰渲染管线中根据所述渲染上下文信息将所述体积云模型渲染到渲染目标,使得将渲染后的体积云显示到屏幕。
根据本申请实施例的另一个方面,提供了一种电子设备,包括:处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行计算机程序时,实现上述方法步骤。
根据本申请实施例的另一个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法步骤。
本申请实施例提供的上述技术方案与现有技术相比具有如下优点:
在HDRP中实现对体积云的渲染,使得可以在场景中生成高级视觉保真度的体积云效果,提高三维画面的逼真程度。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种体积云渲染方法的流程图;
图2为本申请另一实施例提供的一种体积云渲染方法的流程图;
图3为本申请另一实施例提供的一种体积云渲染方法的流程图;
图4为本申请另一实施例提供的一种体积云渲染方法的流程图;
图5为本申请另一实施例提供的一种体积云渲染方法的流程图;
图6为本申请实施例提供的一种体积云渲染装置的框图;
图7为本申请实施例提供的当前画面的示意图;
图8为本申请实施例提供的图7对应的深度图;
图9为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
体积云(Volumetric Clouds),一般称为容积云,在游戏中的体积云就是使用图像引擎来模拟真实云雾半透明、无规则的表现效果。
Unity为了提高引擎的画面表现,推出了提供高级视觉保真度,适用于PC和主机平台的可编程渲染管线——高清晰渲染管线(High Definition Render Pipeline,简称HDRP)。相对于传统的渲染管线,HDRP可以通过C#脚本完全自定义管线的实现方式。目前,HDRP还处于试用阶段,缺乏很多具体渲染效果的实现。本申请中,基于HDRP实现高清晰且效果逼真的体积云渲染。
下面首先对本发明实施例所提供的一种体积云渲染方法进行介绍。
图1为本申请实施例提供的一种体积云渲染方法的流程图。如图1所示,该方法包括以下步骤:
步骤S11,创建高清晰渲染管线;
步骤S12,在高清晰渲染管线中添加体积云模型,其中,体积云模型用于表示虚拟场景中的云层;
步骤S13,获取用于高清晰渲染管线中的渲染上下文信息;
步骤S14,在高清晰渲染管线中根据渲染上下文信息将体积云模型渲染到渲染目标,使得将渲染后的云层显示到屏幕。
本实施例中,在HDRP中实现对体积云的渲染,使得可以在场景中生成高级视觉保真度的体积云效果,提高三维画面的逼真程度。
下面对上述各个步骤进行具体说明。
步骤S11中,Unity创建HDRP工程有两种方式,一是在原有的工程基础上升级为HDRP工程,二是创建新的HDRP工程。本实施例中,两种方式均可采用。
步骤S12中,在HDRP中添加体积云模型的操作具体包括:首先开启体积照明(Volumetric Lighting),然后在Volume框架下添加体积云模型。
可选的,本实施例中的体积云模型,为预先采用云模拟技术模拟得到的模型。云模拟方法包括但不限于以下方法:
(1)基于物理方法的云模拟技术,如粒子系统、气泡建模或体素建模。例如,利用细胞自动机算法模拟体积云的物理变化过程;
(2)基于已有经验模型的云模拟技术,如纹理映射方法或噪音函数方法。例如,利用Perlin噪音函数构建三维体积云模型,增加时间维度后,根据程序运行的帧数控制粒子的生成或消失,从而实现体积云的物理变化。
在步骤S13中,渲染上下文信息(Rendering Context)即渲染描述表,包含一次渲染所需的全部数据。渲染上下文信息可以根据用户输入的渲染设置信息或对渲染配置选项的选定操作确定。步骤S13包括:根据接收到的渲染设置信息和/或对渲染配置选项的选定操作确定渲染上下文信息。
其中,渲染上下文信息可以包括以下至少一项参数:
(1)视图设置参数,如正交/投影,视口参数设置等;
(2)绘制缓冲参数,如创建删除缓冲,绑定缓冲,设置当前缓冲,清除缓冲,设置背景颜色等;
(3)贴图参数,如是否使用贴图,使用贴图Filter、Wrap或Mipmap等模式等;
(4)着色器(Shader)参数,如创建/删除Shader、设置Shader参数等;
(5)缓冲数据参数,如顶点缓冲,索引缓冲等;
(6)材质参数,如Diffuse,Embient,Specular,Emit等;
(7)矩阵参数,如World,View,Project等,及旋转、平移、缩放操作参数等;
(8)裁剪参数;
(9)透明通道(Alpha)参数,如Blend,Test等;
(10)模板测试(StencilTest)参数;
(11)雾(Fog)参数;
(12)灯光参数,如启用/关闭、灯光亮度等。
可选的,本实施例中,渲染上下文信息主要包括已在当前场景中且作用到对象——体积云模型上的光。在场景中有直接作用光:已放置好的灯光对象;也有间接作用光,如:从其他对象上的反射光。这些都会涉及到体积云模型的材质,都影响最终在相机下云层表面的渲染结果。
步骤S14中,在HDRP中根据渲染上下文信息将体积云模型渲染到渲染目标,使得将渲染后的云层显示到屏幕。其中,渲染目标(RenderTarget),是用于渲染像素的显存缓冲区。该步骤中,可以将体积云模型渲染到默认渲染目标,默认渲染目标即后台缓冲区,物理上就是包含下一帧要绘制的信息的一块显存。也可以采用RenderTarget2D类创建一个新渲染目标,在显存中保留一块新区域用于绘制体积云模型。可选的,还可以将图像的各部分内容分别绘制到不同渲染目标内,然后再编译这些图像元素,将它们组合后构成最终的后台缓冲数据。显卡通过读取渲染目标中的数据,使用一个Effect类绘制场景的像素,从而将体积云显示在屏幕上。
由于HDRP中没有渲染命令缓冲区(CommandBuffer)的插入点,为了实现在HDRP中体积云的渲染,需要以新的方式添加渲染指令。图2为本申请另一实施例提供的一种体积云渲染方法的流程图。如图2所示,步骤S14包括以下步骤:
步骤S21,在高清晰渲染管线中的高清相机附加数据类中添加渲染节点,在渲染节点执行根据渲染上下文信息对体积云模型进行渲染的渲染操作;
步骤S22,将渲染操作对应的渲染事件加入执行队列中;
步骤S23,根据执行队列依次调用渲染事件对应的渲染节点,执行渲染事件对应的渲染操作。
通过上述步骤S21至S23,在高清相机附加数据(HDAdditionalCameraData)类中添加渲染节点,由渲染节点执行渲染操作。然后,将各渲染操作对应的渲染事件(RenderEvent)加入到执行队列中,在队列中依次调用RenderEvent,在脚本中决定渲染事件的执行位置。这样,当RenderEvent被调用时,其对应的渲染节点执行相应的渲染操作。这样,可以实现在HDRP中控制体积云渲染流程,同时可以实时生成所需的临时效果。
图7为本申请实施例提供的当前画面的示意图。如图7所示,在体积云渲染过程中,由于场景中可能存在大量不透明物体遮挡,如山、树、石、建筑物、飞行器、人物等等,如果对被遮挡的体积云也进行渲染,容易造成渲染效率降低,即帧速率(Frames Per Second,FPS)的降低。为了提高渲染准确度并提高渲染效率,本实施例中,还识别画面中的不透明物体,剔除遮挡物的体积云渲染。
在可选实施例中,步骤S14包括以下步骤:
步骤S31,获取当前画面对应的深度图;
步骤S32,当根据深度图确定当前画面中存在不透明物体时,在当前画面中除不透明物体之外的区域对体积云模型进行渲染。
步骤S31中,可以将相机渲染模式设置为深度模式(depth),之后在Shader中调用Unity内置变量Camera.depthTexture来获取深度图。其中,深度图里可以存放了[0,1]范围的非线性分布的深度值,这些深度值来自标准化设备坐标(Normalized DeviceCoordinates,NDC)。
图8为本申请实施例提供的图7对应的深度图。如图8所示,在深度图中,不透明物体被渲染为黑色。在步骤S32中,基于深度图中的深度值,可以识别出画面中的不透明物体。对于被不透明物体遮挡的体积云,其相对于相机来说不可见,因此,可以不对被遮挡的体积云进行渲染。
通过步骤S31至S32中,通过剔除遮挡的方式,仅对相机可见的区域进行体积云渲染,减少绘制调用的次数及渲染场景的时间消耗,从而提高体积云的渲染效率。
在另一个可选实施例中,为了进一步提高渲染效率,采用下采样的方式对体积云进行渲染。图3为本申请另一实施例提供的一种体积云渲染方法的流程图。如图3所示,步骤S14包括以下步骤:
步骤S41,对当前画面帧进行的下采样,得到当前画面帧对应的N个待渲染子帧,其中,N为大于1的整数;
步骤S42,分别对各待渲染子帧进行渲染,得到渲染后子帧;
步骤S43,将各渲染后子帧合成为渲染后画面帧。
例如,N=4,即将当前画面帧划分为4个待渲染子帧,每个待渲染子帧包括当前画面帧的数据,每次可以同时对1个或1个以上的待渲染子帧执行体积云的渲染操作,再将4个子帧的渲染结果累加到一起,得到最终的渲染结果。
由于当前画面帧可能包含大量数据,对其渲染可能需要很长时间和内存资源。通过步骤S41至S43,采用下采样的方式执行体积云的渲染操作,使得在保证渲染效果的前提下,加快渲染速度,减少渲染时间,提高渲染效率,同时降低渲染过程对内存资源的占用。
采用上述下采样方式进行体积云的渲染,由于最终的渲染结果是N个子帧数据的累加,当相机视角快速转动时,容易出现渲染结果抖动,影响画面显示效果。因此,在另一个可选实施例中,为消除抖动,在当前画面帧渲染时使用上一帧的结果。
图4为本申请另一实施例提供的一种体积云渲染方法的流程图。如图4所示,步骤S14包括以下步骤:
步骤S51,当通过对比相邻画面帧确定相机视角发生变化时,确定相邻画面帧之间重合的体积云区域;
步骤S52,将相邻画面帧中前一画面帧中体积云区域的像素信息进行重投影,得到填充像素信息;
步骤S53,将填充像素信息填充到当前画面帧中的体积云区域中。
其中,步骤S52中,由于当前画面帧F相对于前一画面帧F’来说,相机视角发生变化,因此,需要对前一画面帧中与当前画面帧重合的体积云区域进行重投影(Reprojection)后才能在当前画面帧中进行像素填充。具体地,可以根据相机旋转角度及相机内部参数矩阵计算相邻两帧之间像素的重投影矩阵,基于重投影矩阵将F’中体积云区域的像素投影到F中,得到用于填充F中体积云区域的填充像素信息。
通过上述步骤S51至S53,当相机视角旋转时,使用前一画面帧中已经渲染过的像素填充到当前画面帧中重合的体积云区域,使得该体积云区域中的像素无需再重新计算,不仅可以消除相机视角旋转带来的旋转抖动现象,还降低了每一画面帧的渲染数据量,提高渲染效率。
在上述实施例中,由于在渲染时剔除遮挡,即对每一帧画面进行渲染时,都要重新检测不透明物体的位置,在一定程度上降低了不透明物体的渲染效率。这样,当画面中不透明物体移动或相机移动时,该不透明物体边缘处会出现残影(Sticking Image),即当画面切换时,前一个画面中的不透明物体不会立刻消失,视觉效果上与第二个画面的不透明物体同时出现,并且会慢慢消失。为了消除残影,在步骤S14的渲染过程中,剔除遮挡后,还包括:
步骤S61,确定当前画面帧中不透明物体的边缘像素;
步骤S62,在边缘像素进行对体积云模型的渲染。
通过上述步骤S61至S62,对当前画面帧中的不透明物体进行描边,在其边缘像素处也渲染体积云,可以在一定程度上实现消除残影,提高体积云的动态显示效果。
但是,仅仅通过在不透明物体边缘处渲染体积云,对于不透明物体的渲染效率仍然不高,不能保证完全消除残影。因此,可以对不透明物体边缘像素的渲染做进一步的矫正处理。
图5为本申请另一实施例提供的一种体积云渲染方法的流程图。如图5所示,为了消除残影,在步骤S14的渲染过程中,包括以下步骤:
步骤S71,确定当前画面帧中不透明物体的边缘像素;
步骤S72,获取当前画面帧相邻的前一画面帧中边缘像素对应的第一边缘像素信息;
步骤S73,使用第一边缘像素信息对当前画面帧中的边缘像素进行填充。
其中,步骤S73中,使用第一边缘像素信息填充时,需要对其进行Reprojection,具体地,可以根据物体移动参数或相机移动参数计算相邻两帧之间像素的重投影矩阵,将第一边缘像素信息重投影到当前画面帧中,对当前画面帧中的边缘像素进行填充。
通过上述步骤S71至S73,采用前一画面帧中不透明物体边缘像素的像素信息对当前画面帧中的不透明物体进行边缘像素填充,这样,不透明物体的边缘像素无需再次计算就可获取其像素信息,这样,降低了每一帧画面的渲染数据量,提高渲染效率,有效地消除不透明物体边缘处的残影现象。
在边缘像素填充过程中,采用前一画面帧中不透明物体边缘像素的像素信息有可能无法成功填充,此时,可以基于上述实施例中下采样方式渲染的结果对边缘像素进行填充。具体地,使用第一边缘像素信息对当前画面帧中的边缘像素进行填充失败时,步骤S14包括:
步骤S81,获取渲染后画面帧中边缘像素对应的第二边缘像素信息;
步骤S82,使用第二边缘像素信息对当前画面帧中的边缘像素进行填充。
其中,步骤S81中渲染后画面帧即为采用下采样方式进行渲染后得到的最终渲染结果。
为了保证对不透明物体边缘像素的渲染效果,不是使用子帧的渲染结果进行边缘像素填充,而使用下采样方式渲染的最终结果进行边缘像素填充。
通过上述步骤S81至S82,即便使用前一画面帧中的边缘像素信息填充失败,也可以使用下采样方式渲染后的最终渲染结果中的边缘像素信息进行填充,实现对不透明物体边缘像素的二次矫正,提高边缘像素渲染的准确性,降低了每一帧画面的渲染数据量,提高渲染效率,有效地消除不透明物体边缘处的残影现象。
作为一个可选实施例,也可以不做二次矫正,而是直接使用下采样方式渲染的最终结果对不透明物体的边缘像素进行填充。
在另一个可选实施例中,该方法还包括:
接收在体积云编辑器中对体积云模型的编辑操作;
根据所述编辑操作确定体积云模型。
本实施例中,体积云编辑器提供GameView窗口,用户在该窗口中可以实时编辑体积云模型。
下述为本申请装置实施例,可以用于执行本申请方法实施例。
图6为本申请实施例提供的一种体积云渲染装置的框图,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。如图6所示,该体积云渲染装置包括:
创建模块91,用于创建高清晰渲染管线;
添加模块92,用于在高清晰渲染管线中添加体积云模型,其中,体积云模型用于表示虚拟场景中的云层;
获取模块93,用于获取用于高清晰渲染管线中的渲染上下文信息;
渲染模块94,用于在高清晰渲染管线中根据渲染上下文信息将体积云模型渲染到渲染目标,使得将渲染后的体积云显示到屏幕。
可选的,渲染模块94包括:
添加子模块,用于在高清晰渲染管线中的高清相机附加数据类中添加渲染节点,在渲染节点执行根据渲染上下文信息对体积云模型进行渲染的渲染操作;
队列子模块,用于将渲染操作对应的渲染事件加入执行队列中;
执行子模块,用于根据执行队列依次调用渲染事件对应的渲染节点,执行渲染事件对应的渲染操作。
可选的,渲染模块94包括:
第一获取子模块,用于获取当前画面对应的深度图;
渲染子模块,用于当根据深度图确定当前画面中存在不透明物体时,在当前画面中除不透明物体之外的区域对体积云模型进行渲染。
可选的,渲染模块94还包括:
第一确定子模块,用于确定当前画面帧中不透明物体的边缘像素;
渲染子模块,用于在边缘像素进行对体积云模型的渲染。
可选的,渲染模块94包括:渲染子模块,用于获取当前画面帧相邻的前一画面帧中边缘像素对应的第一边缘像素信息;使用第一边缘像素信息对当前画面帧中的边缘像素进行填充。
可选的,渲染模块94包括:
下采样子模块,用于对当前画面帧进行的下采样,得到当前画面帧对应的N个待渲染子帧,其中,N为大于1的整数;
渲染子模块,用于分别对各待渲染子帧进行渲染,得到渲染后子帧;
合成子模块,用于将各渲染后子帧合成为渲染后画面帧。
可选的,渲染模块94还包括:
第二获取子模块,用于当使用第一边缘像素信息对当前画面帧中的边缘像素进行填充失败时,获取渲染后画面帧中边缘像素对应的第二边缘像素信息;
填充子模块,用于使用第二边缘像素信息对当前画面帧中的边缘像素进行填充。
可选的,渲染模块94包括:
第二确定子模块,用于当通过对比相邻画面帧确定相机视角发生变化时,确定相邻画面帧之间重合的体积云区域;
重投影子模块,用于将相邻画面帧中前一画面帧中体积云区域的像素信息进行重投影,得到填充像素信息;
填充子模块,用于将填充像素信息填充到当前画面帧中的体积云区域中。
可选的,获取模块93,用于根据接收到的渲染设置信息和/或对渲染配置选项的选定操作确定渲染上下文信息;
其中,渲染上下文信息包括以下至少一项参数:
视图设置参数、绘制缓冲参数、贴图参数、着色器参数、缓冲数据参数、材质参数、矩阵参数、裁剪参数、透明通道参数、模板测试参数、雾参数及灯光参数。
本申请实施例还提供一种电子设备,如图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)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本申请还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以下方法实施例的步骤:
创建高清晰渲染管线;
在高清晰渲染管线中添加体积云模型,其中,体积云模型用于表示虚拟场景中的云层;
获取用于高清晰渲染管线中的渲染上下文信息;
在高清晰渲染管线中根据渲染上下文信息将体积云模型渲染到渲染目标,使得将渲染后的体积云显示到屏幕。
可选的,在高清晰渲染管线中根据渲染上下文信息将体积云模型渲染到渲染目标,包括:
在高清晰渲染管线中的高清相机附加数据类中添加渲染节点,在渲染节点执行根据渲染上下文信息对体积云模型进行渲染的渲染操作;
将渲染操作对应的渲染事件加入执行队列中;
根据执行队列依次调用渲染事件对应的渲染节点,执行渲染事件对应的渲染操作。
可选的,在高清晰渲染管线中根据渲染上下文信息将体积云模型渲染到渲染目标,包括:
获取当前画面对应的深度图;
当根据深度图确定当前画面中存在不透明物体时,在当前画面中除不透明物体之外的区域对体积云模型进行渲染。
可选的,在当前画面中除不透明物体之外的区域对体积云模型进行渲染,还包括:
确定当前画面帧中不透明物体的边缘像素;
在边缘像素进行对体积云模型的渲染。
可选的,在当前画面中除不透明物体之外的区域对体积云模型进行渲染,包括:
获取当前画面帧相邻的前一画面帧中边缘像素对应的第一边缘像素信息;
使用第一边缘像素信息对当前画面帧中的边缘像素进行填充。
可选的,在高清晰渲染管线中根据渲染上下文信息将体积云模型渲染到渲染目标,包括:
对当前画面帧进行的下采样,得到当前画面帧对应的N个待渲染子帧,其中,N为大于1的整数;
分别对各待渲染子帧进行渲染,得到渲染后子帧;
将各渲染后子帧合成为渲染后画面帧。
可选的,当使用第一边缘像素信息对当前画面帧中的边缘像素进行填充失败时,在高清晰渲染管线中根据渲染上下文信息将体积云模型渲染到渲染目标,包括:
获取渲染后画面帧中边缘像素对应的第二边缘像素信息;
使用第二边缘像素信息对当前画面帧中的边缘像素进行填充。
可选的,在高清晰渲染管线中根据渲染上下文信息将体积云模型渲染到渲染目标,包括:
当通过对比相邻画面帧确定相机视角发生变化时,确定相邻画面帧之间重合的体积云区域;
将相邻画面帧中前一画面帧中体积云区域的像素信息进行重投影,得到填充像素信息;
将填充像素信息填充到当前画面帧中的体积云区域中。
可选的,获取用于高清晰渲染管线中的渲染上下文信息,包括:
根据接收到的渲染设置信息和/或对渲染配置选项的选定操作确定渲染上下文信息;
其中,渲染上下文信息包括以下至少一项参数:
视图设置参数、绘制缓冲参数、贴图参数、着色器参数、缓冲数据参数、材质参数、矩阵参数、裁剪参数、透明通道参数、模板测试参数、雾参数及灯光参数。
需要说明的是,对于上述装置、电子设备及计算机可读存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
进一步需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
Claims (11)
1.一种体积云渲染方法,其特征在于,包括:
创建高清晰渲染管线;
在所述高清晰渲染管线中添加体积云模型,其中,所述体积云模型用于表示虚拟场景中的云层;
获取用于所述高清晰渲染管线中的渲染上下文信息;
在高清晰渲染管线中根据所述渲染上下文信息将所述体积云模型渲染到渲染目标,使得将渲染后的体积云显示到屏幕;
所述在高清晰渲染管线中根据所述渲染上下文信息将所述体积云模型渲染到渲染目标,包括:
获取当前画面对应的深度图;
当根据所述深度图确定所述当前画面中存在不透明物体时,在所述当前画面中除所述不透明物体之外的区域对所述体积云模型进行渲染。
2.根据权利要求1所述的方法,其特征在于,所述在高清晰渲染管线中根据所述渲染上下文信息将所述体积云模型渲染到渲染目标,包括:
在所述高清晰渲染管线中的高清相机附加数据类中添加渲染节点,在所述渲染节点执行根据所述渲染上下文信息对所述体积云模型进行渲染的渲染操作;
将所述渲染操作对应的渲染事件加入执行队列中;
根据所述执行队列依次调用所述渲染事件对应的渲染节点,执行所述渲染事件对应的渲染操作。
3.根据权利要求1所述的方法,其特征在于,所述在所述当前画面中除所述不透明物体之外的区域对所述体积云模型进行渲染,还包括:
确定当前画面帧中所述不透明物体的边缘像素;
在所述边缘像素进行对所述体积云模型的渲染。
4.根据权利要求3所述的方法,其特征在于,所述在所述当前画面中除所述不透明物体之外的区域对所述体积云模型进行渲染,包括:
获取所述当前画面帧相邻的前一画面帧中所述边缘像素对应的第一边缘像素信息;
使用所述第一边缘像素信息对所述当前画面帧中的边缘像素进行填充。
5.根据权利要求1-4中任一项所述的方法,其特征在于,所述在高清晰渲染管线中根据所述渲染上下文信息将所述体积云模型渲染到渲染目标,包括:
对当前画面帧进行的下采样,得到所述当前画面帧对应的N个待渲染子帧,其中,N为大于1的整数;
分别对各所述待渲染子帧进行渲染,得到渲染后子帧;
将各所述渲染后子帧合成为渲染后画面帧。
6.根据权利要求5所述的方法,其特征在于,当使用第一边缘像素信息对所述当前画面帧中的边缘像素进行填充失败时,所述在高清晰渲染管线中根据所述渲染上下文信息将所述体积云模型渲染到渲染目标,包括:
获取所述渲染后画面帧中所述边缘像素对应的第二边缘像素信息;
使用所述第二边缘像素信息对所述当前画面帧中的边缘像素进行填充。
7.根据权利要求1所述的方法,其特征在于,所述在高清晰渲染管线中根据所述渲染上下文信息将所述体积云模型渲染到渲染目标,包括:
当通过对比相邻画面帧确定相机视角发生变化时,确定所述相邻画面帧之间重合的体积云区域;
将所述相邻画面帧中前一画面帧中所述体积云区域的像素信息进行重投影,得到填充像素信息;
将所述填充像素信息填充到当前画面帧中的所述体积云区域中。
8.根据权利要求1所述的方法,其特征在于,所述获取用于所述高清晰渲染管线中的渲染上下文信息,包括:
根据接收到的渲染设置信息和/或对渲染配置选项的选定操作确定所述渲染上下文信息;
其中,所述渲染上下文信息包括以下至少一项参数:
视图设置参数、绘制缓冲参数、贴图参数、着色器参数、缓冲数据参数、材质参数、矩阵参数、裁剪参数、透明通道参数、模板测试参数、雾参数及灯光参数。
9.一种体积云渲染装置,其特征在于,包括:
创建模块,用于创建高清晰渲染管线;
添加模块,用于在所述高清晰渲染管线中添加体积云模型,其中,所述体积云模型用于表示虚拟场景中的云层;
获取模块,用于获取用于所述高清晰渲染管线中的渲染上下文信息;
渲染模块,用于在高清晰渲染管线中根据所述渲染上下文信息将所述体积云模型渲染到渲染目标,使得将渲染后的体积云显示到屏幕;
所述渲染模块包括:
第一获取子模块,用于获取当前画面对应的深度图;
渲染子模块,用于当根据所述深度图确定所述当前画面中存在不透明物体时,在所述当前画面中除不透明物体之外的区域对所述体积云模型进行渲染。
10.一种电子设备,其特征在于,包括:处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行所述计算机程序时,实现权利要求1-8任一项所述的方法步骤。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1-8任一项所述的方法步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410288499.4A CN118037920A (zh) | 2020-07-29 | 2020-07-29 | 一种体积云渲染方法、装置、电子设备及存储介质 |
CN202010746014.3A CN111968214B (zh) | 2020-07-29 | 2020-07-29 | 一种体积云渲染方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010746014.3A CN111968214B (zh) | 2020-07-29 | 2020-07-29 | 一种体积云渲染方法、装置、电子设备及存储介质 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410288499.4A Division CN118037920A (zh) | 2020-07-29 | 2020-07-29 | 一种体积云渲染方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111968214A CN111968214A (zh) | 2020-11-20 |
CN111968214B true CN111968214B (zh) | 2024-04-19 |
Family
ID=73363047
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010746014.3A Active CN111968214B (zh) | 2020-07-29 | 2020-07-29 | 一种体积云渲染方法、装置、电子设备及存储介质 |
CN202410288499.4A Pending CN118037920A (zh) | 2020-07-29 | 2020-07-29 | 一种体积云渲染方法、装置、电子设备及存储介质 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410288499.4A Pending CN118037920A (zh) | 2020-07-29 | 2020-07-29 | 一种体积云渲染方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN111968214B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112714357B (zh) * | 2020-12-21 | 2023-10-13 | 北京百度网讯科技有限公司 | 视频播放方法、视频播放装置、电子设备和存储介质 |
CN114064039A (zh) * | 2020-12-22 | 2022-02-18 | 完美世界(北京)软件科技发展有限公司 | 一种渲染管线的创建方法、装置、存储介质及计算设备 |
CN113313798B (zh) * | 2021-06-23 | 2022-05-03 | 完美世界(北京)软件科技发展有限公司 | 云图的制作方法及装置、存储介质、计算机设备 |
CN113470161B (zh) * | 2021-06-30 | 2022-06-07 | 完美世界(北京)软件科技发展有限公司 | 虚拟环境中容积云的光照确定方法、相关设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102867326A (zh) * | 2012-08-23 | 2013-01-09 | 苏州两江科技有限公司 | 基于OpenGL进行真实云景虚拟的方法 |
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 | 北京像素软件科技股份有限公司 | 一种体积光实现方法及装置 |
CN110796722A (zh) * | 2019-11-01 | 2020-02-14 | 广东三维家信息科技有限公司 | 三维渲染呈现方法及装置 |
KR20200082601A (ko) * | 2018-12-31 | 2020-07-08 | 한국전자통신연구원 | 다층 볼륨 구름 렌더링 장치 및 방법 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108074285B (zh) * | 2017-12-06 | 2021-03-09 | 北京像素软件科技股份有限公司 | 体积云模拟方法和体积云模拟装置 |
CN109035383B (zh) * | 2018-06-26 | 2022-07-15 | 苏州蜗牛数字科技股份有限公司 | 一种体积云的绘制方法、装置及计算机可读存储介质 |
-
2020
- 2020-07-29 CN CN202010746014.3A patent/CN111968214B/zh active Active
- 2020-07-29 CN CN202410288499.4A patent/CN118037920A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102867326A (zh) * | 2012-08-23 | 2013-01-09 | 苏州两江科技有限公司 | 基于OpenGL进行真实云景虚拟的方法 |
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 | 한국전자통신연구원 | 다층 볼륨 구름 렌더링 장치 및 방법 |
CN110796722A (zh) * | 2019-11-01 | 2020-02-14 | 广东三维家信息科技有限公司 | 三维渲染呈现方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111968214A (zh) | 2020-11-20 |
CN118037920A (zh) | 2024-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111968214B (zh) | 一种体积云渲染方法、装置、电子设备及存储介质 | |
CN111968215B (zh) | 一种体积光渲染方法、装置、电子设备及存储介质 | |
CN111968216B (zh) | 一种体积云阴影渲染方法、装置、电子设备及存储介质 | |
US11024077B2 (en) | Global illumination calculation method and apparatus | |
JP5531093B2 (ja) | コンピュータグラフィックスでオブジェクトにシャドウを付ける方法 | |
CN111508052B (zh) | 三维网格体的渲染方法和装置 | |
CN108236783B (zh) | 游戏场景中模拟光照的方法、装置、终端设备及存储介质 | |
US9275493B2 (en) | Rendering vector maps in a geographic information system | |
EP2674919A2 (en) | Streaming light propagation | |
JP7089495B2 (ja) | 拡張現実アプリケーション用システム及び方法 | |
US8237722B2 (en) | Systems and method for visualization of fluids | |
KR20060052042A (ko) | 3d에서의 하드웨어 가속화된 안티-엘리어싱 방법 및시스템 | |
CN109118556B (zh) | 一种实现ui界面动画过渡效果的方法、系统及存储介质 | |
Woo et al. | Shadow algorithms data miner | |
CN112991508A (zh) | 一种基于WebGL的3D渲染系统及方法 | |
CN112652046A (zh) | 游戏画面的生成方法、装置、设备及存储介质 | |
CN112233214A (zh) | 一种大场景的雪景渲染方法、装置、设备及存储介质 | |
JP4513423B2 (ja) | 仮想三次元座標ポリゴンによるオブジェクト画像の表示制御方法及びこれを用いた画像表示装置 | |
CN113313622A (zh) | 虚拟场景中的光照模拟方法、装置及电子设备 | |
US10657705B2 (en) | System and method for rendering shadows for a virtual environment | |
US10424106B1 (en) | Scalable computer image synthesis | |
CN108280887B (zh) | 一种阴影图确定方法及装置 | |
Papaioannou et al. | Enhancing Virtual Reality Walkthroughs of Archaeological Sites. | |
WO2007130018A1 (en) | Image-based occlusion culling | |
US7880743B2 (en) | Systems and methods for elliptical filtering |
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 |