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

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

Info

Publication number
CN112200900B
CN112200900B CN202011388910.3A CN202011388910A CN112200900B CN 112200900 B CN112200900 B CN 112200900B CN 202011388910 A CN202011388910 A CN 202011388910A CN 112200900 B CN112200900 B CN 112200900B
Authority
CN
China
Prior art keywords
model
rendering
illumination
volume cloud
information
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
CN202011388910.3A
Other languages
English (en)
Other versions
CN112200900A (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.)
Chengdu Perfect World Network Technology Co Ltd
Original Assignee
Chengdu Perfect World Network Technology 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 Chengdu Perfect World Network Technology Co Ltd filed Critical Chengdu Perfect World Network Technology Co Ltd
Priority to CN202011388910.3A priority Critical patent/CN112200900B/zh
Publication of CN112200900A publication Critical patent/CN112200900A/zh
Application granted granted Critical
Publication of CN112200900B publication Critical patent/CN112200900B/zh
Priority to PCT/CN2021/121097 priority patent/WO2022116659A1/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/55Radiosity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/60Shadow generation

Abstract

本申请涉及一种体积云渲染方法、装置、电子设备及存储介质,该方法包括:将体积云的原网格模型按照顶点法线向量向外绘制至少一层网格模型;基于每层所述网格模型对应的噪声阈值对所述网格模型的像素点进行筛选,得到绘制模型;根据光照参数计算所述绘制模型对应的光照信息;根据所述光照信息对所述绘制模型进行渲染,得到待显示体积云。该技术方案体积云的形状基于网格模型确定,而不是通过噪声图的形状来确定,如果想要改变体积云的形状,仅需要设定额外绘制的层数以及筛选像素点的噪声阈值即可,则无需预先选取特定的噪声图;减少对噪声图的采用次数,也进一步降低了生成体积云的性能开销,使得体积云可以流畅地运行在移动端设备上。

Description

一种体积云渲染方法、装置、电子设备及存储介质
技术领域
本申请涉及图像渲染技术领域,尤其涉及一种体积云渲染方法、装置、电子设备及存储介质。
背景技术
体积云是游戏户外场景中一个重要的组成部分,在大多数的小规模三维场景或者视点位于地面附近的场景的实时绘制系统中,体积云通常采用光线步进(Ray Marching)或视差贴图方式绘制实现。
Ray Marching方式是通过将射线等长的向前拓展,采样3D噪声图,将多次采样结果叠加,生成体积云。
视差贴图方式是通过一张高度图,计算像素点应该偏移的采样位置,进而欺骗人的眼睛,产生体积感。
Ray Marching方式的特点就是效果非常真实,但是随之而来的就是性能开销非常大,需要每次计算射线交点的位置,再去采样一张3D噪声图。而且体积云的形状需要通过3D噪声图的形状来决定,因而定制特定的形状就需要特定的噪声图。当场景里云的形状非常多的时候,就需要很多不同的噪声图。
而视差贴图的特点是性能开销比较低,可以通过特定的算法来提高计算出来的偏移精度。但是,终究是欺骗眼睛的做法,当视线与模型表面有比较小的夹角的时候,体积感才会比较明显,当视线垂直于模型表面的时候,计算得出的偏移量为0,不会有体积感。而且在模型的边缘会有很强烈的穿帮现象。
因此,急需一种效果真实且性能开销小的体积云渲染方法。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本申请实施例提供了一种体积云渲染方法、装置、电子设备及存储介质。
根据本申请实施例的一个方面,提供了一种体积云渲染方法,包括:
将体积云的原网格模型按照顶点法线方向向外绘制至少一层网格模型;
基于每层所述网格模型对应的噪声阈值对所述网格模型的像素点进行筛选,得到绘制模型;
根据光照参数计算所述绘制模型对应的光照信息;
根据所述光照信息对所述绘制模型进行渲染,得到待显示体积云。
可选的,所述基于每层所述网格模型对应的噪声阈值对所述网格模型的像素点进行筛选,得到绘制模型,包括:
获取每层所述网格模型对应的噪声阈值;
基于每层所述网格模型对预设噪声图进行采样,得到噪声值;
对每层所述网格模型筛选所述噪声阈值小于和等于所述噪声值的像素点,得到所述绘制模型。
可选的,所述获取每层所述网格模型对应的噪声阈值,包括:
获取每层所述网格模型对应的噪声函数,所述噪声函数为以所述像素点的坐标为变量的线性函数;
根据所述噪声函数得到每层所述网格模型像素点对应的噪声边界值;
对所述噪声边界值进行幂运算,得到所述噪声阈值。
可选的,所述根据光照参数计算所述绘制模型对应的光照信息之前,所述方法还包括:
将所述原网格模型的顶点坐标作为第一输入参数输入图形处理器中的第一着色器;
通过带所述第一输入参数的第一着色器,得到所述绘制模型的顶点坐标。
可选的,所述根据所述光照信息对所述绘制模型进行渲染,包括:
将所述原网格模型的顶点数据缓存至显存中;
将每层所述网格模型对应的绘制命令进行排序并合批后,将得到的合批命令添加至命令缓冲区;
由图形处理器从所述命令缓冲区读取所述合批命令,基于所述合批命令及所述原网格模型的顶点数据执行渲染操作。
可选的,所述根据所述光照信息对所述绘制模型进行渲染,还包括:
根据每层所述网格模型对应的噪声阈值及每层所述网格模型相对于所述原网格模型的偏移量,生成材质属性块;
将所述材质属性块作为第二输入参数输入所述图形处理器中的第二着色器;
所述由图形处理器从所述命令缓冲区读取所述合批命令,基于所述合批命令及所述原网格模型的顶点数据执行渲染操作,包括:
由带所述第二输入参数的第二着色器,根据所述合批命令及所述原网格模型的顶点数据进行所述体积云的渲染。
可选的,所述根据光照参数计算所述绘制模型对应的光照信息,包括:
根据所述绘制模型各像素点的法线向量及光照方向向量计算各所述像素点对应的第一漫反射信息;
将所述第一漫反射信息作为所述光照参数;
基于所述光照参数计算各所述像素点对应的像素颜色,得到所述光照信息。
可选的,所述根据光照参数计算所述绘制模型对应的光照信息,还包括:
对所述第一漫反射信息进行半兰博计算,得到半兰博光照参数;
获取每层所述网格模型对应的噪声阈值;
根据所述噪声阈值及所述半兰博光照参数,拟合得到各所述像素点的第二漫反射信息;
将所述第二漫反射信息作为所述光照参数。
可选的,所述根据光照参数计算所述绘制模型对应的光照信息,还包括:
根据背光次表面散射参数及观察者视线方向向量计算各所述像素点的后向次表面散射信息;
根据向光次表面散射参数及所述观察者视线方向向量计算各所述像素点的前向次表面散射信息;
获取所述前向次表面散射信息对应的影响因子;
根据所述前向次表面散射信息与所述影响因子的乘积,以及所述后向次表面散射信息,得到总次表面散射信息;
将所述总次表面散射信息作为所述光照参数。
可选的,所述根据光照参数计算所述绘制模型对应的光照信息,还包括:
根据定义的光源阴影,对阴影纹理进行采样,得到阴影参数;
将所述阴影参数随着与相机距离的增加进行衰减计算,得到所述绘制模型各像素点对应的阴影信息;
将所述阴影信息作为所述光照参数。
可选的,所述根据光照参数计算所述绘制模型对应的光照信息,还包括:
根据所述绘制模型的表面法线向量及观察者视线方向向量计算各所述像素点的第一镜面反射信息;
根据所述噪声阈值及所述第一镜面反射信息,拟合得到各所述像素点的第二镜面反射信息;
将所述第一镜面反射信息和所述第二镜面反射信息作为所述光照参数。
可选的,所述根据光照参数计算所述绘制模型对应的光照信息,包括:
获取环境光参数和主光源参数;
基于所述光照参数、环境光参数及主光源参数计算各所述像素点对应的像素颜色,得到所述光照信息。
可选的,所述根据所述光照信息对所述绘制模型进行渲染,得到待显示体积云,包括:
根据渲染前各像素点的深度值及所述体积云的深度值,进行边缘检测;
根据边缘检测结果确定与所述体积云重合的待混合物体;
将所述待混合物体及体积云进行半透明混合,基于半透明混合结果得到所述待显示体积云。
可选的,所述根据所述光照信息对所述绘制模型进行渲染之后,得到待显示体积云之前,所述将所述待混合物体及体积云进行半透明混合,基于半透明混合结果得到所述待显示体积云,包括:
确定所述待混合物体与体积云的重合像素点;
采样得到所述重合像素点渲染前的第一颜色缓冲值和第一深度缓冲值,以及所述重合像素点渲染后的第二颜色缓冲值和第二深度缓冲值;
将所述第一颜色缓冲值作为插值计算器的起始位置输入参数,所述第二颜色缓冲值作为所述插值计算器的目标位置输入参数,所述第一深度缓冲值与所述第二深度缓冲值的差值作为所述插值计算器的插值速度输入参数,得到所述插值计算器计算得到的线性插值结果,作为所述重合像素点的最终像素颜色;
基于所述重合像素点的最终像素颜色得到所述待显示体积云。
可选的,在所述根据所述光照信息对所述绘制模型进行渲染的过程中,所述将所述待混合物体及体积云进行半透明混合,基于半透明混合结果得到所述待显示体积云,包括:
确定所述待混合物体与体积云的重合像素点;
采样得到所述重合像素点渲染前的颜色缓冲值和深度缓冲值,以及所述重合像素点当前颜色值及当前深度值;
将所述深度缓冲值及当前深度值的差值作为源混合因子,将所述颜色缓冲值作为源颜色,将所述当前颜色值作为目标颜色,进行混合运算,将混合后的像素颜色作为所述重合像素点的最终像素颜色;
基于所述重合像素点的最终像素颜色对所述绘制模型进行渲染,得到所述待显示体积云。
可选的,所述基于所述重合像素点的最终像素颜色对所述绘制模型进行渲染,包括:
按照从外向内的顺序将所述绘制模型的各网格模型进行逐层渲染。
根据本申请实施例的另一个方面,提供了一种体积云渲染装置,包括:
绘制模块,用于将体积云的原网格模型按照顶点法线方向向外绘制至少一层网格模型;
筛选模块,用于基于每层所述网格模型对应的噪声阈值对所述网格模型的像素点进行筛选,得到绘制模型;
计算模块,用于根据光照参数计算所述绘制模型对应的光照信息;
处理模块,用于根据所述光照信息对所述绘制模型进行渲染,得到待显示体积云。
根据本申请实施例的另一个方面,提供了一种电子设备,包括:处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行计算机程序时,实现上述方法步骤。
根据本申请实施例的另一个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法步骤。
本申请实施例提供的上述技术方案与现有技术相比具有如下优点:
通过对原网格模型额外绘制至少一层网格模型,基于网格模型对预设噪声图进行采样得到的像素值,与每层网格模型设定的噪声阈值的比较结果,对各层网络模型的像素点进行筛选,最终得到体积云对应的绘制模型。这样,使得体积云的形状基于网格模型确定,而不是通过噪声图的形状来确定,如果想要改变体积云的形状,仅需要设定额外绘制的层数以及筛选像素点的噪声阈值即可,则无需预先选取特定的噪声图。另外,通过对模型的多次额外绘制,减少对噪声图的采用次数,也进一步降低了生成体积云的性能开销,使得体积云可以流畅地运行在移动端设备如手机上。再者,由于体积云是基于对模型的渲染得到,而不是通过模拟视差给人以立体感,因此,避免了体积云边缘处穿帮现象的产生,提高了体积云效果的真实性。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种体积云渲染方法的流程图;
图2为本申请实施例提供的绘制网格模型的示意图;
图3为本申请另一实施例提供的一种体积云渲染方法的流程图;
图4为本申请实施例提供的体积云模型的示意图;
图5为本申请另一实施例提供的体积云模型的示意图;
图6为本申请另一实施例提供的一种体积云渲染方法的流程图;
图7为本申请另一实施例提供的一种体积云渲染方法的流程图;
图8为本申请另一实施例提供的一种体积云渲染方法的流程图;
图9为本申请另一实施例提供的一种体积云渲染方法的流程图;
图10为本申请另一实施例提供的一种体积云渲染方法的流程图;
图11为本申请另一实施例提供的一种体积云渲染方法的流程图;
图12为本申请另一实施例提供的一种体积云渲染方法的流程图;
图13为本申请另一实施例提供的一种体积云渲染方法的流程图;
图14为本申请另一实施例提供的一种体积云渲染方法的流程图;
图15为本申请另一实施例提供的一种体积云渲染方法的流程图;
图16为本申请另一实施例提供的一种体积云渲染方法的流程图;
图17为本申请另一实施例提供的一种体积云渲染方法的流程图;
图18为本申请实施例提供的一种体积云渲染装置的框图;
图19为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
体积云(Volumetric Clouds),一般称为容积云,在游戏中的体积云就是使用图像引擎来模拟真实云雾半透明、无规则的表现效果。
目前,随着移动端游戏的发展,考虑到移动端如手机等性能限制,需要移动端游戏在保证效果真实性的前提下,尽可能较低性能开销,尤其是渲染阶段的性能开销。
下面首先对本发明实施例所提供的一种体积云渲染方法进行介绍。
图1为本申请实施例提供的一种体积云渲染方法的流程图。如图1所示,该方法包括以下步骤S11至步骤S14:
步骤S11,将体积云的原网格模型按照顶点法线方向向外绘制至少一层网格模型。
如图2所示,将体积云的原Mesh模型21按照顶点法线方向,向外等距地额外绘制N次,N为大于或等于1的整数,得到多层网格模型22。
步骤S12,基于每层网格模型对应的噪声阈值对网格模型的像素点进行筛选,得到绘制模型。
基于各层网格模型对预设的噪声图进行采样,将采样到的各个像素点的像素值与预设的噪声阈值(Clip Value)进行比较,以筛选出符合要求的像素点,得到绘制模型。
步骤S13,根据光照参数计算绘制模型对应的光照信息;
步骤S14,根据光照信息对绘制模型进行渲染,得到待显示体积云。
在该步骤中对绘制模型的渲染过程中,可以从最内层网格模型开始逐层渲染,直到最外层网格。
通过上述步骤S11至步骤S14,通过对原网格模型额外绘制N层网格模型,基于网格模型对预设噪声图进行采样得到的像素值,与每层网格模型设定的噪声阈值的比较结果,对各层网络模型的像素点进行筛选,最终得到体积云对应的绘制模型。这样,使得体积云的形状基于网格模型确定,而不是通过噪声图的形状来确定,如果想要改变体积云的形状,仅需要设定额外绘制的层数以及筛选像素点的噪声阈值即可,则无需预先选取特定的噪声图。另外,通过对模型的多次额外绘制,减少对噪声图的采用次数,也进一步降低了生成体积云的性能开销,使得体积云可以流畅地运行在移动端设备如手机上。再者,由于体积云是基于对模型的渲染得到,而不是通过模拟视差给人以立体感,因此,避免了体积云边缘处穿帮现象的产生,提高了体积云效果的真实性。
下面对上述各个步骤进行具体说明。
图3为本申请另一实施例提供的一种体积云渲染方法的流程图。如图3所示,上述步骤S12包括以下步骤S21至步骤S23:
步骤S21,获取每层网格模型对应的噪声阈值;
步骤S22,基于每层网格模型对预设噪声图进行采样,得到噪声值;
步骤S23,对每层网格模型筛选噪声阈值小于和等于噪声值的像素点,得到绘制模型。
如图2所示,曲线23表示基于网络模型对预设噪声图采样得到的噪声值,各层网络模型22均设有其对应的Clip Value。将Clip Value大于噪声值的像素点抛弃,即图2中的虚线部分;仅保留Clip Value小于和等于噪声值的像素点,得到绘制模型,即图2中的实线部分。
上述实施例中,Clip Value可以基于预设线性噪声函数计算得到,如一次函数y=kx+b(k,b是常数,k≠0),y表示Clip Value,x表示像素点坐标。但是,如果噪声函数为线性,则会导致最终的体积云模型的边缘变尖,如图4所示,体积云效果真实度较差。
为了提高显示效果的真实性,可以对Clip Value进行非线性化。可选的,上述步骤S21包括以下步骤A1至步骤A3:
步骤A1,获取每层网格模型对应的噪声函数,噪声函数为以像素点的坐标为变量的线性函数;
步骤A2,根据噪声函数得到每层网格模型像素点对应的噪声边界值;
步骤A3,对噪声边界值进行幂运算,得到噪声阈值。
通过步骤A1至步骤A3,对对Clip Value进行幂运算,使得对Clip Value非线性化,这样,如图5所示,筛选后的体积云模型边缘变得平滑,提高体积云效果的真实度。
在上述实施例中,经过对原网格模型额外绘制N次并基于噪声值筛选而得到的绘制模型,需要基于原网格模型的顶点生成绘制模型的顶点。生成顶点的方式可以有以下两种,具体如下:
(1)通过几何着色器创建顶点。
图6为本申请另一实施例提供的一种体积云渲染方法的流程图。如图6所示,上述步骤S13之前,该方法还包括以下步骤:
步骤S31,将原网格模型的顶点坐标作为第一输入参数输入图形处理器中的第一着色器;
步骤S32,通过带第一输入参数的第一着色器,得到绘制模型的顶点坐标。
其中,第一着色器为几何着色器。
通过步骤S31和步骤S32,由几何着色器基于原网格模型新增顶点。由于几何着色器创建顶点的操作在图形处理器(Graphics Processing Unit,GPU)中进行,不占用CPU性能开销。
但是,几何着色器的顶点缓冲器输出是由大小限制的,如不可超过1024个浮点数(float),即对输出顶点的数量有限制。另外,大部分移动端设备不支持几何着色器,使得体积云无法在移动端渲染。
(2)通过GPU-Instance技术进行渲染
图7为本申请另一实施例提供的一种体积云渲染方法的流程图。如图7所示,步骤S14中,根据光照信息对绘制模型进行渲染,包括以下步骤:
步骤S41,将原网格模型的顶点数据缓存至显存中;
步骤S42,将每层网格模型对应的绘制命令进行排序并合批后,将得到的合批命令添加至命令缓冲区;
步骤S43,由图形处理器从命令缓冲区读取合批命令,基于合批命令及原网格模型的顶点数据执行渲染操作。
其中,图形渲染过程中所产生的开销包括在CPU上执行的开销及在GPU上执行的开销。其中,CPU上执行的开销主要包括以下三类:第一类,驱动提交渲染命令的开销;第二类,驱动提交状态命令导致的状态命令切换的开销;以及第三类,其他由于API被调用导致加载或是同步数据的驱动开销。
通过批次合并(即将合理的方式将渲染状态相同多个可渲染物的Draw绘制数据合并到一批绘制),以及实例渲染(即将诸多几何数据近似的可渲染物通过一次DrawInstance函数绘制,而将这些可渲染物的区别通过数组传入渲染命令中),可以显著降低第一类开销。通过对可渲染物进行有效的排序,将状态相同的部分的可渲染物尽可能依次渲染,从而减少状态的切换,可以较明显减少第二类开销。因此在执行渲染之前,可以通过上述两种方式对数据进行预处理,可以有效降低CPU在图形渲染过程中的性能开销。
上述步骤S41至步骤S43,由于体积云各层网格模型相同,因此,将多次调用的绘制命令(DrawCall)合批,通过一个DrawCall批渲染相同的多层网格模型。这样,通过减少DrawCall数量可以降低CPU性能开销。另外,由于体积云渲染的整体过程耗时相对较多,因此,CPU上额外增加的排序合批操作耗时可忽略不计,不会对整体过程产生明显性能影响。
可选的,在采用GPU-Instance技术进行渲染的过程中,CPU向GPU传递材质属性信息可以通过以下方式实现。
图8为本申请另一实施例提供的一种体积云渲染方法的流程图。如图8所示,步骤S14中,根据光照信息对绘制模型进行渲染,还包括以下步骤:
步骤S51,根据每层网格模型对应的噪声阈值及每层网格模型相对于原网格模型的偏移量,生成材质属性块;
步骤S52,将材质属性块作为第二输入参数输入图形处理器中的第二着色器;
上述步骤S43,包括:
步骤S53,由带第二输入参数的第二着色器,根据合批命令及原网格模型的顶点数据进行体积云的渲染。
本实施例中,由于各层网格模型的材质相同,区别仅在于相对于原网格模型的偏移量及Clip Value,因此,在传递材质属性信息是,可将每一层的偏移量及Clip Value,包装到材质属性块MaterialPropertyBlock,传递给GPU中的着色器。通过使用材质属性块,可以降低操作材质的耗时,提高材质操作的速度;另外,配合上述GPU-Instance技术,可以进一步的提高性能,省去实体对象本身的开销,减少DrawCall,降低CPU开销及内存开销。
本实施例中,由于体积云受太阳光影响很大,可以将太阳光作为主光源,基于多种光照参数计算体积云对应的光照信息。
首先,可以采用Lambert模型计算光照信息。
图9为本申请另一实施例提供的一种体积云渲染方法的流程图。如图9所示,步骤S13包括:
步骤S61,根据绘制模型各像素点的法线向量及光照方向向量计算各像素点对应的第一漫反射信息。
其中,第一漫反射信息可以为像素点对应的颜色强度系数的nl(NdotL),
float nl=max(0.0,dot(N,L)),或者,nl=saturate(dot(N,L));
其中,nl表示第一漫反射信息,N表示法线向量,L表示光照方向向量,dot()表示点积计算,NdotL表示N与L的点积结果。saturate函数在计算单位向量点积时与max函数的结果一致,但saturate函数效率更高一些。saturate(x)的作用是如果x取值小于0,则返回值为0。如果x取值大于1,则返回值为1。若x在0到1之间,则直接返回x的值。
步骤S62,将第一漫反射信息作为光照参数;
步骤S63,基于光照参数计算各像素点对应的像素颜色,得到光照信息。
通过Lambert模型计算的光照信息,体积云背光面的光照效果不理想,因此,可采用HalfLambert模型计算的光照信息。
图10为本申请另一实施例提供的一种体积云渲染方法的流程图。如图10所示,步骤S13还包括:
步骤S71,对第一漫反射信息进行半兰博计算,得到半兰博光照参数;
float HalfLambertnl=dot(N,L)*0.5+0.5;
其中,HalfLambertnl表示与nl相关的半兰博光照参数。
步骤S72,获取每层网格模型对应的噪声阈值;
步骤S73,根据噪声阈值及半兰博光照参数,拟合得到各像素点的第二漫反射信息;
float Smoothnl=saturate(pow(HalfLambertnl,2-ClipValue));
其中,smoothnl表示第二漫反射信息,为经过幂运算的平滑NdotL参数,ClipValue表示网格模型的噪声阈值,pow()表示幂运算。
步骤S74,将第二漫反射信息作为光照参数。
通过上述步骤S71,计算半兰博光照参数,以提高物体表面的漫反射光,尤其是可以提高体积云背光面的光照效果,提升体积云视觉效果的真实度。另外,通过上述步骤S73,将每层网格模型的噪声阈值拟合到漫反射信息中,可以使得体积云凸起的部分亮度增加,进一步提高体积云视觉效果的真实度。
另外,体积云的次表面散射情况对体积云视觉观感影响较大,因此,在计算体积云光照信息时添加次表面散射(Subsurface Scattering,SSS)参数。
图11为本申请另一实施例提供的一种体积云渲染方法的流程图。如图11所示,步骤S13还包括:
步骤S81,根据背光次表面散射参数及观察者视线方向向量计算各像素点的后向次表面散射信息;
float3 backLitDirection=-(lightDirection+(1-backSSSRange)*N);
float backsss=saturate(dot(viewDirection,backLitDirection));
backsss=saturate(pow(backsss,2+ClipValue*2)*1.5);
其中,backsss表示背光SSS光照的强度信息,backLitDirection表示SSS光照的背光方向向量,lightDirection 表示光线方向向量,backSSSRange表示背光SSS的散射范围,viewDirection表示观察者视线方向向量,ClipValue表示网格模型的噪声阈值。
步骤S82,根据向光次表面散射参数及观察者视线方向向量计算各像素点的前向次表面散射信息;
float frontsss=saturate(dot(viewDirection,frontLitDirection));
其中,frontsss表示向光SSS光照的强度信息,frontLitDirection表示SSS光照的向光方向向量。
步骤S83,获取前向次表面散射信息对应的影响因子。
步骤S84,根据前向次表面散射信息与影响因子的乘积,以及后向次表面散射信息,得到总次表面散射信息;
float sss=saturate(backsss+FrontSSSIntensity*frontsss);
其中,sss表示总次表面散射信息,FrontSSSIntensity表示前向SSS光照的敏感度(影响因子)。
步骤S85,将总次表面散射信息作为光照参数。
通过上述步骤S81中增加背光SSS信息,增加背光时体积云的通透感,通过步骤S82增加向光SSS信息,增加光子正面射入云,在云的内部散射,再从正面射出的效果。
可选的,由于向光SSS信息对体积云的观感影响不大,因此可以将上述影响因子FrontSSSIntensity设为0,即在计算体积云的光照信息时不考虑向光SSS信息。
为了使得体积云的效果更加真实,还要让体积云接受阴影。
图12为本申请另一实施例提供的一种体积云渲染方法的流程图。如图12所示,步骤S13还包括:
步骤S91,根据定义的光源阴影,对阴影纹理进行采样,得到阴影参数;
步骤S92,将阴影参数随着与相机距离的增加进行衰减计算,得到绘制模型各像素点对应的阴影信息;
步骤S93,将阴影信息作为光照参数。
具体让体积云接收阴影可通过下述方式实现:
float shadowAttenuation;
#if defined(_MAIN_LIGHT_SHADOWS)
ShadowAttenuation=MainLightRealtimeShadow(i.shadowCoord);
#else
ShadowAttenuation=1;
#endif
float shadow=saturate(lerp(shadowAttenuation,1,(distance(PositionWS.xyz,_worldSpaceCameraPos.xyz)-100)*0.1));
其中,shadowAttenuation用于表示实时阴影纹理经主光源的阴影位置采样之后得到的值,作为阴影信息。PositionWS表示像素点(片元)在世界空间的位置坐标,_worldSpaceCameraPos表示该相机在世界空间中的坐标,distance()为着色器中求距离的函数,通过distance()函数计算像素点与相机之间的距离。
在计算阴影时,以shadowAttenuation作为差值计算器Lerp的起始位置输入参数,1作为差值计算器Lerp的目标位置输入参数,像素点与相机之间的距离作为差值计算器Lerp的插值速度输入参数,将差值计算结果归于[0,1]得到最终的阴影参数。
通过上述步骤S91至步骤S93,通过让体积云接收阴影,且阴影随着与相机距离的增加而衰减,进一步提高体积云效果的真实性。
图13为本申请另一实施例提供的一种体积云渲染方法的流程图。如图13所示,步骤S13还包括:
步骤S101,根据绘制模型的表面法线向量及观察者视线方向向量计算各像素点的第一镜面反射信息;
float nv=saturate(dot(N,viewDirection.xyz));
其中,nv表示第一镜面反射信息,为法线向量N和观察者视线方向向量viewDirection(V)的点乘结果,即NdotV;viewDir.xyz表示观察者视线方向向量的xyz分量。
步骤S102,根据噪声阈值及第一镜面反射信息,拟合得到各像素点的第二镜面反射信息;
float smoothnv=saturate(pow(nv,2- ClipValue));
其中,smoothnv表示第二镜面反射信息,为经过幂运算之后的平滑nv参数。
步骤103,将第一镜面反射信息和第二镜面反射信息作为光照参数。
可选的,可以使用上述所有信息作为光照参数来计算总光照参数finalLit,
float finalLit=
saturate(smoothnv*0.5+lerp(1,shadow,nl)*saturate(smoothnl+sss)*(1-nv*0.5))。
图14为本申请另一实施例提供的一种体积云渲染方法的流程图。如图14所示,步骤S13包括:
步骤S111,获取环境光参数和主光源参数;
其中,环境光参数可以包括经球谐光照采样得到的环境光颜色。主光源参数可以包括主光源颜色。
步骤S112,基于光照参数、环境光参数及主光源参数计算各像素点对应的像素颜色,得到光照信息。
float3 SH=SampleSH(i,N)*_AmbientContrast;
float4 finalColor=
float4(lerp(DarkColor.rgb+SH,Color.rgb,finalLit),1)*MainLightColor*0.8;
其中,SH表示经球谐光照采样得到的环境光颜色,_AmbientContrast表示环境光颜色的影响因数(对比度),_DarkColor.rgb表示云最内层暗色部分的颜色,_Color.rgb表示云最外层亮色部分的颜色,MainLightColor表示主光源颜色。
在上述实施例中,在体积云的光照计算中,可以提供多种光照参数,随时调整体积云的光照效果,提高体积云显示的真实度。
在游戏中,通常会有在体积云中穿梭的物体,如人、飞行器、飞船、鸟类、龙等等。为了得到更加真实的效果,还需要将体积云与位于云中的物体做半透明混合。
图15为本申请另一实施例提供的一种体积云渲染方法的流程图。如图15所示,步骤S14包括:
步骤S121,根据渲染前各像素点的深度值及体积云的深度值,进行边缘检测;
步骤S122,根据边缘检测结果确定与体积云重合的待混合物体;
步骤S123,将待混合物体及体积云进行半透明混合,基于半透明混合结果得到待显示体积云。
其中,物体可能部分位于体积云中,因此,需要确定该物体位于体积云中的部分来进行半透明混合。由于体积云具有一定的半透明效果,因此半透明混合后的物体,位于体积云中的部分呈现若隐若现的效果,进一步提高体积云及物体显示效果的真实度。
具体地,体积云与物体的半透明混合可以在体积云渲染完成后的后效阶段实现,也可在体积云的渲染阶段实现。下面分别对这两个阶段实现半透明混合的方式进行详细说明。
(一)后效阶段的半透明混合
图16为本申请另一实施例提供的一种体积云渲染方法的流程图。如图16所示,步骤S14中,在根据光照信息对绘制模型进行渲染之后,得到待显示体积云之前,步骤S123包括:
步骤S131,确定待混合物体与体积云的重合像素点;
步骤S132,采样得到重合像素点渲染前的第一颜色缓冲值和第一深度缓冲值,以及重合像素点渲染后的第二颜色缓冲值和第二深度缓冲值;
步骤S133,将第一颜色缓冲值作为插值计算器的起始位置输入参数,第二颜色缓冲值作为插值计算器的目标位置输入参数,第一深度缓冲值与第二深度缓冲值的差值作为插值计算器的插值速度输入参数,得到插值计算器计算得到的线性插值结果,作为重合像素点的最终像素颜色;
步骤S134,基于重合像素点的最终像素颜色得到待显示体积云。
在后效阶段,可以从渲染管线中获得体积云渲染前和渲染后的颜色缓冲贴图和深度缓冲贴图,从2张深度缓冲贴图中采样到重合像素点的第一深度缓冲值ZBuffer1和第二深度缓冲值ZBuffer2,从2张颜色缓冲贴图中采样得到重合像素点的第一颜色缓冲值ColorBuffer1和第二颜色缓冲值ColorBuffer2。
计算得到重合像素点的最终像素颜色FinalColor如下:
FinalColor=lerp(ColorBuffer1,ColorBuffer2,Zbuffer1–Zbuffer2)。
在半透明混合过程中,需要调用渲染管线的2个Pass进行颜色拷贝和深度拷贝:Copy Color Pass和Copy DepthPass,通过颜色拷贝和深度拷贝得到颜色缓冲值和深度缓冲值。
(二)渲染阶段的半透明混合
图17为本申请另一实施例提供的一种体积云渲染方法的流程图。如图17所示,步骤S14中,在根据光照信息对绘制模型进行渲染的过程中,上述步骤S123包括:
步骤S141,确定待混合物体与体积云的重合像素点;
步骤S142,采样得到重合像素点渲染前的颜色缓冲值和深度缓冲值,以及重合像素点当前颜色值及当前深度值;
步骤S143,将深度缓冲值及当前深度值的差值作为源混合因子,将颜色缓冲值作为源颜色,将当前颜色值作为目标颜色,进行混合运算,将混合后的像素颜色作为重合像素点的最终像素颜色;
FinalColor=ColorBuffer×(Z-Zbuffer)+Color×(1-Z+Zbuffer);
其中,FinalColor表示最终像素颜色,ColorBuffer表示颜色缓冲值,Z表示当前深度值,Zbuffer表示深度缓冲值,Color表示当前颜色值。
步骤S144,基于重合像素点的最终像素颜色对绘制模型进行渲染,得到待显示体积云。
在渲染阶段,可以使用Alpha Blend方式进行半透明混合,具体计算方式并不限于上述公式,可以采用其他Alpha Blend公式,在此不再赘述。
另外,如果在渲染阶段做半透明混合,如果还从内向外逐层渲染网格模型,则可能出现过度绘制(Over Draw),即在对当前层的网格模型进行渲染时,其内层网格模型被重复Alpha Blend,产生大量的额外开销,显示效果也较差。因此,需要将体积云的渲染顺序反过来,即从外向内逐层渲染网格模型。因此,上述步骤S143中,基于重合像素点的最终像素颜色对绘制模型进行渲染,包括:按照从外向内的顺序将绘制模型的各网格模型进行逐层渲染。这样,可以有效避免Over Draw,减少额外开销,提升最终显示效果。
下述为本申请装置实施例,可以用于执行本申请方法实施例。
图18为本申请实施例提供的一种体积云渲染装置的框图,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。如图18所示,该体积云渲染装置包括:
绘制模块1,用于将体积云的原网格模型按照顶点法线向量向外绘制至少一层网格模型;
筛选模块2,用于基于每层网格模型对应的噪声阈值对网格模型的像素点进行筛选,得到绘制模型;
计算模块3,用于根据光照参数计算绘制模型对应的光照信息;
处理模块4,用于根据光照信息对绘制模型进行渲染,得到待显示体积云。
可选的,筛选模块2,用于获取每层所述网格模型对应的噪声阈值;基于每层所述网格模型对预设噪声图进行采样,得到噪声值;对每层所述网格模型筛选所述噪声阈值小于和等于所述噪声值的像素点,得到所述绘制模型。
可选的,筛选模块2,用于获取每层所述网格模型对应的噪声函数,所述噪声函数为以所述像素点的坐标为变量的线性函数;根据所述噪声函数得到每层所述网格模型像素点对应的噪声边界值;对所述噪声边界值进行幂运算,得到所述噪声阈值。
可选的,该装置还包括:
输入模块,用于在根据光照参数计算所述绘制模型对应的光照信息之前,将所述原网格模型的顶点坐标作为第一输入参数输入图形处理器中的第一着色器;
第一着色器,用于根据所述第一输入参数得到所述绘制模型的顶点坐标。
可选的,处理模块4,用于将所述原网格模型的顶点数据缓存至显存中;将每层所述网格模型对应的绘制命令进行排序并合批后,将得到的合批命令添加至命令缓冲区;由图形处理器从所述命令缓冲区读取所述合批命令,基于所述合批命令及所述原网格模型的顶点数据执行渲染操作。
可选的,处理模块4,还用于根据每层所述网格模型对应的噪声阈值及每层所述网格模型相对于所述原网格模型的偏移量,生成材质属性块;将所述材质属性块作为第二输入参数输入所述图形处理器中的第二着色器;
该装置还包括:第二着色器;
第二着色器,用于根据所述第二输入参数、所述合批命令及所述原网格模型的顶点数据进行所述体积云的渲染。
可选的,计算模块3,用于根据所述绘制模型各像素点的法线向量及光照方向向量计算各所述像素点对应的第一漫反射信息;将所述第一漫反射信息作为所述光照参数;基于所述光照参数计算各所述像素点对应的像素颜色,得到所述光照信息。
可选的,计算模块3,还用于对所述第一漫反射信息进行半兰博计算,得到半兰博光照参数;获取每层所述网格模型对应的噪声阈值;根据所述噪声阈值及所述半兰博光照参数,拟合得到各所述像素点的第二漫反射信息;将所述第二漫反射信息作为所述光照参数。
可选的,计算模块3,还用于根据背光次表面散射参数及观察者视线方向向量计算各所述像素点的后向次表面散射信息;根据向光次表面散射参数及所述观察者视线方向向量计算各所述像素点的前向次表面散射信息;获取所述前向次表面散射信息对应的影响因子;根据所述前向次表面散射信息与所述影响因子的乘积,以及所述后向次表面散射信息,得到总次表面散射信息;将所述总次表面散射信息作为所述光照参数。
可选的,计算模块3,还用于根据定义的光源阴影,对阴影纹理进行采样,得到阴影参数;将所述阴影参数随着与相机距离的增加进行衰减计算,得到所述绘制模型各像素点对应的阴影信息;将所述阴影信息作为所述光照参数。
可选的,计算模块3,还用于根据所述绘制模型的表面法线向量及观察者视线方向向量计算各所述像素点的第一镜面反射信息;根据所述噪声阈值及所述第一镜面反射信息,拟合得到各所述像素点的第二镜面反射信息;将所述第一镜面反射信息和所述第二镜面反射信息作为所述光照参数。
可选的,计算模块3,用于获取环境光参数和主光源参数;基于所述光照参数、环境光参数及主光源参数计算各所述像素点对应的像素颜色,得到所述光照信息。
可选的,处理模块4,用于根据渲染前各像素点的深度值及所述体积云的深度值,进行边缘检测;根据边缘检测结果确定与所述体积云重合的待混合物体;将所述待混合物体及体积云进行半透明混合,基于半透明混合结果得到所述待显示体积云。
可选的,处理模块4包括:
混合子模块,用于在根据所述光照信息对所述绘制模型进行渲染之后,得到待显示体积云之前,确定所述待混合物体与体积云的重合像素点;采样得到所述重合像素点渲染前的第一颜色缓冲值和第一深度缓冲值,以及所述重合像素点渲染后的第二颜色缓冲值和第二深度缓冲值;将所述第一颜色缓冲值作为插值计算器的起始位置输入参数,所述第二颜色缓冲值作为所述插值计算器的目标位置输入参数,所述第一深度缓冲值与所述第二深度缓冲值的差值作为所述插值计算器的插值速度输入参数,得到所述插值计算器计算得到的线性插值结果,作为所述重合像素点的最终像素颜色;基于所述重合像素点的最终像素颜色得到所述待显示体积云。
可选的,处理模块4包括:
渲染子模块,用于在所述根据所述光照信息对所述绘制模型进行渲染的过程中,确定所述待混合物体与体积云的重合像素点;采样得到所述重合像素点渲染前的颜色缓冲值和深度缓冲值,以及所述重合像素点当前颜色值及当前深度值;将所述深度缓冲值及当前深度值的差值作为源混合因子,将所述颜色缓冲值作为源颜色,将所述当前颜色值作为目标颜色,进行混合运算,将混合后的像素颜色作为所述重合像素点的最终像素颜色;基于所述重合像素点的最终像素颜色对所述绘制模型进行渲染,得到所述待显示体积云。
可选的,渲染子模块,用于按照从外向内的顺序将所述绘制模型的各网格模型进行逐层渲染。
本申请实施例还提供一种电子设备,如图19所示,电子设备可以包括:处理器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 (19)

1.一种体积云渲染方法,其特征在于,包括:
将体积云的原网格模型按照顶点法线方向向外绘制至少一层网格模型;
基于每层所述网格模型对应的噪声阈值对所述网格模型的像素点进行筛选,得到绘制模型;
根据光照参数计算所述绘制模型对应的光照信息;
根据所述光照信息对所述绘制模型进行渲染,得到待显示体积云。
2.根据权利要求1所述的方法,其特征在于,所述基于每层所述网格模型对应的噪声阈值对所述网格模型的像素点进行筛选,得到绘制模型,包括:
获取每层所述网格模型对应的噪声阈值;
基于每层所述网格模型对预设噪声图进行采样,得到噪声值;
对每层所述网格模型筛选所述噪声阈值小于和等于所述噪声值的像素点,得到所述绘制模型。
3.根据权利要求2所述的方法,其特征在于,所述获取每层所述网格模型对应的噪声阈值,包括:
获取每层所述网格模型对应的噪声函数,所述噪声函数为以所述像素点的坐标为变量的线性函数;
根据所述噪声函数得到每层所述网格模型像素点对应的噪声边界值;
对所述噪声边界值进行幂运算,得到所述噪声阈值。
4.根据权利要求1所述的方法,其特征在于,所述根据光照参数计算所述绘制模型对应的光照信息之前,所述方法还包括:
将所述原网格模型的顶点坐标作为第一输入参数输入图形处理器中的第一着色器;
通过带所述第一输入参数的第一着色器,得到所述绘制模型的顶点坐标。
5.根据权利要求2所述的方法,其特征在于,所述根据所述光照信息对所述绘制模型进行渲染,包括:
将所述原网格模型的顶点数据缓存至显存中;
将每层所述网格模型对应的绘制命令进行排序并合批后,将得到的合批命令添加至命令缓冲区;
由图形处理器从所述命令缓冲区读取所述合批命令,基于所述合批命令及所述原网格模型的顶点数据执行渲染操作。
6.根据权利要求5所述的方法,其特征在于,所述根据所述光照信息对所述绘制模型进行渲染,还包括:
根据每层所述网格模型对应的噪声阈值及每层所述网格模型相对于所述原网格模型的偏移量,生成材质属性块;
将所述材质属性块作为第二输入参数输入所述图形处理器中的第二着色器;
所述由图形处理器从所述命令缓冲区读取所述合批命令,基于所述合批命令及所述原网格模型的顶点数据执行渲染操作,包括:
由带所述第二输入参数的第二着色器,根据所述合批命令及所述原网格模型的顶点数据进行所述体积云的渲染。
7.根据权利要求1所述的方法,其特征在于,所述根据光照参数计算所述绘制模型对应的光照信息,包括:
根据所述绘制模型各像素点的法线向量及光照方向向量计算各所述像素点对应的第一漫反射信息;
将所述第一漫反射信息作为所述光照参数;
基于所述光照参数计算各所述像素点对应的像素颜色,得到所述光照信息。
8.根据权利要求7所述的方法,其特征在于,所述根据光照参数计算所述绘制模型对应的光照信息,还包括:
对所述第一漫反射信息进行半兰博计算,得到半兰博光照参数;
获取每层所述网格模型对应的噪声阈值;
根据所述噪声阈值及所述半兰博光照参数,拟合得到各所述像素点的第二漫反射信息;
将所述第二漫反射信息作为所述光照参数。
9.根据权利要求7所述的方法,其特征在于,所述根据光照参数计算所述绘制模型对应的光照信息,还包括:
根据背光次表面散射参数及观察者视线方向向量计算各所述像素点的后向次表面散射信息;
根据向光次表面散射参数及所述观察者视线方向向量计算各所述像素点的前向次表面散射信息;
获取所述前向次表面散射信息对应的影响因子;
根据所述前向次表面散射信息与所述影响因子的乘积,以及所述后向次表面散射信息,得到总次表面散射信息;
将所述总次表面散射信息作为所述光照参数。
10.根据权利要求7所述的方法,其特征在于,所述根据光照参数计算所述绘制模型对应的光照信息,还包括:
根据定义的光源阴影,对阴影纹理进行采样,得到阴影参数;
将所述阴影参数随着与相机距离的增加进行衰减计算,得到所述绘制模型各像素点对应的阴影信息;
将所述阴影信息作为所述光照参数。
11.根据权利要求7所述的方法,其特征在于,所述根据光照参数计算所述绘制模型对应的光照信息,还包括:
根据所述绘制模型的表面法线向量及观察者视线方向向量计算各所述像素点的第一镜面反射信息;
根据所述噪声阈值及所述第一镜面反射信息,拟合得到各所述像素点的第二镜面反射信息;
将所述第一镜面反射信息和所述第二镜面反射信息作为所述光照参数。
12.根据权利要求1所述的方法,其特征在于,所述根据光照参数计算所述绘制模型对应的光照信息,包括:
获取环境光参数和主光源参数;
基于所述光照参数、环境光参数及主光源参数计算各所述像素点对应的像素颜色,得到所述光照信息。
13.根据权利要求1所述的方法,其特征在于,所述根据所述光照信息对所述绘制模型进行渲染,得到待显示体积云,包括:
根据渲染前各像素点的深度值及所述体积云的深度值,进行边缘检测;
根据边缘检测结果确定与所述体积云重合的待混合物体;
将所述待混合物体及体积云进行半透明混合,基于半透明混合结果得到所述待显示体积云。
14.根据权利要求13所述的方法,其特征在于,所述根据所述光照信息对所述绘制模型进行渲染之后,得到待显示体积云之前,所述将所述待混合物体及体积云进行半透明混合,基于半透明混合结果得到所述待显示体积云,包括:
确定所述待混合物体与体积云的重合像素点;
采样得到所述重合像素点渲染前的第一颜色缓冲值和第一深度缓冲值,以及所述重合像素点渲染后的第二颜色缓冲值和第二深度缓冲值;
将所述第一颜色缓冲值作为插值计算器的起始位置输入参数,所述第二颜色缓冲值作为所述插值计算器的目标位置输入参数,所述第一深度缓冲值与所述第二深度缓冲值的差值作为所述插值计算器的插值速度输入参数,得到所述插值计算器计算得到的线性插值结果,作为所述重合像素点的最终像素颜色;
基于所述重合像素点的最终像素颜色得到所述待显示体积云。
15.根据权利要求13所述的方法,其特征在于,在所述根据所述光照信息对所述绘制模型进行渲染的过程中,所述将所述待混合物体及体积云进行半透明混合,基于半透明混合结果得到所述待显示体积云,包括:
确定所述待混合物体与体积云的重合像素点;
采样得到所述重合像素点渲染前的颜色缓冲值和深度缓冲值,以及所述重合像素点当前颜色值及当前深度值;
将所述深度缓冲值及当前深度值的差值作为源混合因子,将所述颜色缓冲值作为源颜色,将所述当前颜色值作为目标颜色,进行混合运算,将混合后的像素颜色作为所述重合像素点的最终像素颜色;
基于所述重合像素点的最终像素颜色对所述绘制模型进行渲染,得到所述待显示体积云。
16.根据权利要求15所述的方法,其特征在于,所述基于所述重合像素点的最终像素颜色对所述绘制模型进行渲染,包括:
按照从外向内的顺序将所述绘制模型的各网格模型进行逐层渲染。
17.一种体积云渲染装置,其特征在于,包括:
绘制模块,用于将体积云的原网格模型按照顶点法线方向向外绘制至少一层网格模型;
筛选模块,用于基于每层所述网格模型对应的噪声阈值对所述网格模型的像素点进行筛选,得到绘制模型;
计算模块,用于根据光照参数计算所述绘制模型对应的光照信息;
处理模块,用于根据所述光照信息对所述绘制模型进行渲染,得到待显示体积云。
18.一种电子设备,其特征在于,包括:处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行所述计算机程序时,实现权利要求1-16任一项所述的方法步骤。
19.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1-16任一项所述的方法步骤。
CN202011388910.3A 2020-12-02 2020-12-02 一种体积云渲染方法、装置、电子设备及存储介质 Active CN112200900B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202011388910.3A CN112200900B (zh) 2020-12-02 2020-12-02 一种体积云渲染方法、装置、电子设备及存储介质
PCT/CN2021/121097 WO2022116659A1 (zh) 2020-12-02 2021-09-27 一种体积云渲染方法、装置、程序和可读介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011388910.3A CN112200900B (zh) 2020-12-02 2020-12-02 一种体积云渲染方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN112200900A CN112200900A (zh) 2021-01-08
CN112200900B true CN112200900B (zh) 2021-02-26

Family

ID=74033650

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011388910.3A Active CN112200900B (zh) 2020-12-02 2020-12-02 一种体积云渲染方法、装置、电子设备及存储介质

Country Status (2)

Country Link
CN (1) CN112200900B (zh)
WO (1) WO2022116659A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI816433B (zh) * 2022-06-14 2023-09-21 英業達股份有限公司 渲染方法、三維繪圖軟體及三維繪圖系統

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112200900B (zh) * 2020-12-02 2021-02-26 成都完美时空网络技术有限公司 一种体积云渲染方法、装置、电子设备及存储介质
CN113223131B (zh) * 2021-04-16 2022-05-31 完美世界(北京)软件科技发展有限公司 一种模型的渲染方法、装置、存储介质以及计算设备
CN113144613A (zh) * 2021-05-08 2021-07-23 成都乘天游互娱网络科技有限公司 基于模型的体积云生成的方法
CN113313798B (zh) * 2021-06-23 2022-05-03 完美世界(北京)软件科技发展有限公司 云图的制作方法及装置、存储介质、计算机设备
CN113470161B (zh) * 2021-06-30 2022-06-07 完美世界(北京)软件科技发展有限公司 虚拟环境中容积云的光照确定方法、相关设备及存储介质
CN113256779B (zh) * 2021-07-05 2021-11-19 广州中望龙腾软件股份有限公司 一种基于OpenGL指令的渲染运行方法及系统
CN113658315B (zh) * 2021-08-17 2023-09-29 广州光锥元信息科技有限公司 基于分形噪声的光影特效制作方法和装置
CN113936097B (zh) * 2021-09-30 2023-10-20 完美世界(北京)软件科技发展有限公司 体积云渲染方法、设备及存储介质
CN114332311B (zh) * 2021-12-05 2023-08-04 北京字跳网络技术有限公司 一种图像生成方法、装置、计算机设备及存储介质
CN115294251A (zh) * 2022-06-13 2022-11-04 无人智境(北京)技术有限公司 一种海量集装箱批量渲染方法和设备
CN116630486B (zh) * 2023-07-19 2023-11-07 山东锋士信息技术有限公司 一种基于Unity3D渲染的半自动化动画制作方法
CN117269940B (zh) * 2023-11-17 2024-03-15 北京易控智驾科技有限公司 点云数据生成方法、激光雷达的感知能力验证方法
CN117274473B (zh) * 2023-11-21 2024-02-02 北京渲光科技有限公司 一种多重散射实时渲染的方法、装置及电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111145326A (zh) * 2019-12-26 2020-05-12 网易(杭州)网络有限公司 三维虚拟云模型的处理方法、存储介质、处理器及电子装置
CN111968215A (zh) * 2020-07-29 2020-11-20 完美世界(北京)软件科技发展有限公司 一种体积光渲染方法、装置、电子设备及存储介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107093203A (zh) * 2010-06-30 2017-08-25 巴里·林恩·詹金斯 图形信息的基于导航的预取发送或接收的控制方法和系统
JP6732439B2 (ja) * 2015-12-03 2020-07-29 株式会社バンダイナムコエンターテインメント プログラム及び画像生成システム
CN107481312B (zh) * 2016-06-08 2020-02-14 腾讯科技(深圳)有限公司 一种基于体绘制的图像渲染方法及装置
CN106570929B (zh) * 2016-11-07 2020-02-07 北京大学(天津滨海)新一代信息技术研究院 一种动态体积云的构建与绘制方法
KR20200082601A (ko) * 2018-12-31 2020-07-08 한국전자통신연구원 다층 볼륨 구름 렌더링 장치 및 방법
CN110827391B (zh) * 2019-11-12 2021-02-12 腾讯科技(深圳)有限公司 图像渲染方法、装置、设备及存储介质
CN111968216B (zh) * 2020-07-29 2024-03-22 完美世界(北京)软件科技发展有限公司 一种体积云阴影渲染方法、装置、电子设备及存储介质
CN112200900B (zh) * 2020-12-02 2021-02-26 成都完美时空网络技术有限公司 一种体积云渲染方法、装置、电子设备及存储介质

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111145326A (zh) * 2019-12-26 2020-05-12 网易(杭州)网络有限公司 三维虚拟云模型的处理方法、存储介质、处理器及电子装置
CN111968215A (zh) * 2020-07-29 2020-11-20 完美世界(北京)软件科技发展有限公司 一种体积光渲染方法、装置、电子设备及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Real-Time Rendering of Volumetric Clouds;Olajos,Rikard;《LUP Student Papers》;20161011;1-73 *
动态体积云的建模_实时渲染及移动端加速方法;兰未;《中国优秀硕士学位论文全文数据库 信息科技辑》;20200815(第8期);I138-618 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI816433B (zh) * 2022-06-14 2023-09-21 英業達股份有限公司 渲染方法、三維繪圖軟體及三維繪圖系統

Also Published As

Publication number Publication date
WO2022116659A1 (zh) 2022-06-09
CN112200900A (zh) 2021-01-08

Similar Documents

Publication Publication Date Title
CN112200900B (zh) 一种体积云渲染方法、装置、电子设备及存储介质
CN111508052B (zh) 三维网格体的渲染方法和装置
US9135743B2 (en) Visualize the obscure object in 3D space
US7583264B2 (en) Apparatus and program for image generation
CN110728740B (zh) 虚拟摄影测量
US8947430B1 (en) System and method for rendering a particle-based fluid surface
CN114581589A (zh) 图像处理方法及相关装置
CN111899325B (zh) 晶石模型的渲染方法、装置、电子设备及存储介质
US20170124754A1 (en) Point and click lighting for image based lighting surfaces
CN113674389B (zh) 场景渲染方法、装置、电子设备及存储介质
US6791544B1 (en) Shadow rendering system and method
US7327364B2 (en) Method and apparatus for rendering three-dimensional images of objects with hand-drawn appearance in real time
CN112884874A (zh) 在虚拟模型上贴花的方法、装置、设备及介质
KR101507776B1 (ko) 3차원 지도의 외곽선 표현 방법
US7064753B2 (en) Image generating method, storage medium, image generating apparatus, data signal and program
CN112819941A (zh) 渲染水体面的方法、装置、设备和计算机可读存储介质
CN111986303A (zh) 流体渲染方法、装置、存储介质及终端设备
US8248405B1 (en) Image compositing with ray tracing
CN112446943A (zh) 图像渲染的方法、装置及计算机可读存储介质
CN112465941B (zh) 一种体积云处理方法、装置、电子设备及存储介质
US20030025706A1 (en) System and method for rendering a texture map utilizing an illumination modulation value
US11321889B1 (en) Multi-layer lighting source with textured lighting gel layer
US20230274493A1 (en) Direct volume rendering apparatus
Di Koa et al. Interactive rendering of translucent materials under area lights using voxels and Poisson disk samples
Jansson Ambient Occlusion for Dynamic Objects and Procedural Environments

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