掌桥专利:专业的专利平台
掌桥专利
首页

烟雾生成方法、装置、计算机可读存储介质和电子装置

文献发布时间:2024-04-18 19:58:21


烟雾生成方法、装置、计算机可读存储介质和电子装置

技术领域

本申请涉及图像处理技术领域,具体而言,涉及一种烟雾生成方法、装置、计算机可读存储介质和电子装置。

背景技术

在游戏的图像渲染过程中,经常有渲染烟雾流体效果的需求,例如需要制作烟雾缭绕的技能特效,或是生成一缕悠长的飘渺青烟。目前,在游戏的图像渲染过程中,三维(three-dimensional,3D)空间的烟雾渲染通常采用光线步进(Raymarching)等体积渲染手段来完成。

但采用上述方法进行烟雾渲染需要较高的显存消耗和带宽消耗,对终端的性能有一定要求,在低性能的终端上无法使用该方法。

针对上述的问题,目前尚未提出有效的解决方案。

发明内容

本申请至少部分实施例提供了一种烟雾生成方法、装置、计算机可读存储介质和电子装置,以至少解决相关技术中采用光线步进等体积渲染手段进行烟雾渲染,导致显存消耗和带宽消耗较高的技术问题。

根据本申请其中一实施例,提供了一种烟雾生成方法,该方法包括:获取第一条状面片、材质球、第一贴图和第二贴图,其中,第一条状面片为用于模拟烟雾形状的面片,第一贴图为遮罩贴图,第二贴图为噪声贴图;根据材质球渲染第一条状面片,得到第二条状面片,其中,第二条状面片为用于模拟烟雾形状和烟雾质地的面片;根据第二条状面片、第一贴图和第二贴图,得到第三条状面片,其中,第三条状面片的顶点坐标基于时间进行改变;根据第三条状面片、第一贴图和第二贴图,得到烟雾飘散特效,其中,烟雾飘散特效的顶点坐标和纹理坐标均基于时间进行改变。

根据本申请其中一实施例,还提供了一种烟雾生成装置,该装置包括:获取模块,获取模块用于获取第一条状面片、材质球、第一贴图和第二贴图,其中,第一条状面片为用于模拟烟雾形状的面片,第一贴图为遮罩贴图,第二贴图为噪声贴图;渲染模块,渲染模块用于根据材质球渲染第一条状面片,得到第二条状面片,其中,第二条状面片为用于模拟烟雾形状和烟雾质地的面片;第一确定模块,第一确定模块用于根据第二条状面片、第一贴图和第二贴图,得到第三条状面片,其中,第三条状面片的顶点坐标基于时间进行改变;第二确定模块,第二确定模块用于根据第三条状面片、第一贴图和第二贴图,得到烟雾飘散特效,其中,烟雾飘散特效的顶点坐标和纹理坐标均基于时间进行改变。

根据本申请其中一实施例,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,计算机程序被设置为在计算机或处理器上运行时执行上述实施例中的烟雾生成方法。

根据本申请其中一实施例,还提供了一种电子装置,包括存储器和处理器,存储器中存储有计算机程序,处理器被设置为运行计算机程序以执行上述实施例中的烟雾生成方法。

在本申请至少部分实施例中,通过获取第一条状面片、材质球、第一贴图和第二贴图,其中,第一条状面片为用于模拟烟雾形状的面片,第一贴图为遮罩贴图,第二贴图为噪声贴图;根据材质球渲染第一条状面片,得到第二条状面片,其中,第二条状面片为用于模拟烟雾形状和烟雾质地的面片;根据第二条状面片、第一贴图和第二贴图,得到第三条状面片,其中,第三条状面片的顶点坐标基于时间进行改变;根据第三条状面片、第一贴图和第二贴图,得到烟雾飘散特效,其中,烟雾飘散特效的顶点坐标和纹理坐标均基于时间进行改变。达到了通过简易的模型制作配合着色器计算的方式,生成动态的烟雾流体图像的目的,从而能够实现无需使用光线步进技术,通过低性能消耗的方式渲染出烟雾流体特效的技术效果,此外,生成的烟雾流体特效真实,且支持在低性能终端上运行,应用范围广,进而解决了相关技术中采用光线步进等体积渲染手段进行烟雾渲染,导致显存消耗和带宽消耗较高的技术问题。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1是本申请实施例的一种烟雾生成方法的移动终端的硬件结构框图;

图2是根据本申请其中一实施例的烟雾生成方法的流程图;

图3是根据本申请其中一实施例的第一条状面片的示意图;

图4是根据本申请其中一实施例的遮罩贴图的示意图;

图5是根据本申请其中一实施例的噪声贴图的示意图;

图6是根据本申请其中一实施例的第二条状面片的示意图;

图7是根据本申请其中一实施例的屏幕坐标系示意图;

图8是根据本申请其中一实施例的第三条状面片的示意图;

图9是根据本申请其中一实施例的扭曲图像的示意图;

图10是根据本申请其中一实施例的烟雾扭曲图像的示意图;

图11是根据本申请其中一实施例的透明度图像的示意图;

图12是根据本申请其中一实施例的烟雾飘散特效的示意图;

图13是根据本申请其中一可选实施例的烟雾生成装置的结构框图;

图14是根据本申请实施例的一种电子装置的示意图。

具体实施方式

为了便于理解,示例性地给出了部分与本申请实施例相关概念的说明以供参考。

如下所示:

光线步进(Raymarching):一种常见的渲染方式,根据与摄像机的距离来步进,决定像素的最终渲染的颜色值。

Unity:一个跨平台的游戏开发引擎,用于开发二维(two-dimensional,2D)和三维(three-dimensional,3D)游戏。

实时渲染纹理(RenderTexture):用于表示游戏引擎中后台正在实时渲染的图像纹理。

顶点着色器:是图形渲染管线中的一个重要阶段,也是最基础的着色器类型之一。其主要作用是对输入的几何体(如三角形、四边形等)进行处理,并输出每个顶点在屏幕上的位置和颜色信息。顶点除了有最基本的位置属性,还可能包含很多其他属性,比如纹理,法线等等。通过顶点着色器,显卡就知道顶点应该绘制在具体什么位置。

像素着色器:也称片元着色器,是一种运行在图形处理器上的程序代码,用于描述如何将颜色或纹理坐标等信息应用到每个像素上。像素着色器通常接收输入参数包括顶点信息、纹理坐标和用户自定义变量等,使用这些输入参数进行计算后,它会输出一个确定的颜色值作为该像素最终呈现的颜色。

材质球:一个包含了纹理、颜色、高光等信息的对象,用于将这些属性应用到模型上。面片是构成模型的基本单元,可以被赋予不同的材质球来呈现不同的效果,每个面片都可以被指定为使用哪个材质球来进行渲染。

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。

需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

在一种可能的实施方式中,针对图像处理技术领域下,在游戏的图像渲染过程中,渲染烟雾流体特效时,通常通过对屏幕空间构建3D空间坐标,向光源方向采用Raymarching技术步进积分光照强度,从而生成烟雾流体特效。

发明人经过实践并仔细研究后,发现上述方法仍然存在需要申请RenderTexture,导致显存消耗大,以及需要进行多次贴图采样,导致带宽消耗大的问题,即需要较高的显存消耗和带宽消耗,且无法在低性能的终端上使用该技术。基于此,本申请实施例应用的游戏场景可以是游戏中图像处理领域,提出了一种烟雾生成方法,通过获取第一条状面片、材质球、第一贴图和第二贴图,其中,第一条状面片为用于模拟烟雾形状的面片,第一贴图为遮罩贴图,第二贴图为噪声贴图;根据材质球渲染第一条状面片,得到第二条状面片,其中,第二条状面片为用于模拟烟雾形状和烟雾质地的面片;根据第二条状面片、第一贴图和第二贴图,得到第三条状面片,其中,第三条状面片的顶点坐标基于时间进行改变;根据第三条状面片、第一贴图和第二贴图,得到烟雾飘散特效,其中,烟雾飘散特效的顶点坐标和纹理坐标均基于时间进行改变。达到了通过简易的模型制作配合着色器计算的方式,生成动态的烟雾流体图像的目的,从而能够实现无需使用光线步进技术,通过低性能消耗的方式渲染出烟雾流体特效的技术效果,此外,生成的烟雾流体特效真实,且支持在低性能终端上运行,应用范围广,进而解决了相关技术中采用光线步进等体积渲染手段进行烟雾渲染,导致显存消耗和带宽消耗较高的技术问题。

本申请涉及到的上述方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,该移动终端可以是智能手机、掌上电脑以及移动互联网设备、平板电脑(Personal Access Display,PAD)、游戏机等终端设备。图1是本申请实施例的一种烟雾生成方法的移动终端的硬件结构框图。如图1所示,移动终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于中央处理器(centralprocessing unit,CPU)、图形处理器(graphics processing unit,GPU)、数字信号处理(digital signal processing,DSP)芯片、微处理器(microcontroller unit,MCU)、可编程逻辑器件(field-programmable gate array,FPGA)、神经网络处理器(neural networkprocessing unit,NPU)、张量处理器(tensor processing unit,TPU)、人工智能(artificial intelligent,AI)类型处理器等的处理装置)和用于存储数据的存储器104,在本申请其中一实施例中,还可以包括:传输设备106、输入输出设备108以及显示设备110。

在一些以游戏场景为主的可选实施例中,上述设备还可以提供具有触摸触敏表面的人机交互界面,该人机交互界面可以感应手指接触和/或手势来与图形用户界面(Graphical User Interface,GUI)进行人机交互,该人机交互功能可以包括如下交互:创建网页、绘图、文字处理、制作电子文档、游戏、视频会议、即时通信、收发电子邮件、通话界面、播放数字视频、播放数字音乐和/或网络浏览等、用于执行上述人机交互功能的可执行指令被配置/存储在一个或多个处理器可执行的计算机程序产品或可读存储介质中。

本领域技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。

根据本申请其中一实施例,提供了一种烟雾生成方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

在一种可能的实施方式中,本申请实施例提供了一种烟雾生成方法,图2是根据本申请其中一实施例的烟雾生成方法的流程图,如图2所示,该方法包括如下步骤:

步骤S20,获取第一条状面片、材质球、第一贴图和第二贴图。

其中,第一条状面片为用于模拟烟雾形状的面片,第一贴图为遮罩贴图,第二贴图为噪声贴图。

在进行烟雾渲染时,首先需要制作烟雾模型,步骤S20中的第一条状面片可以理解为制作出来的用于模拟烟雾形状的面片,其可以由预设数量的条状面片组合构成。

示例性地,可以在3Dmax/Maya等建模软件中制作与烟雾路径匹配的第一条状面片,如图3所示,图3是根据本申请其中一实施例的第一条状面片的示意图,图3中以第一条状面片由3条条状面片组合构成为例,在制作第一条状面片时,第一条状面片的纹理坐标可以从下到上展开接至边缘,为后续上下平移纹理动画可循环做准备。图3所示的第一条状面片纹理坐标可以从左到右排布为3列,为后续采样遮罩贴图区分不同条状面片赋予不同采样参数做准备。

可以理解的是,预设数量的条状面片可以根据实际美术需求设定,本申请实施例不予限制。

材质球可以理解为用于赋予第一条状面片质地的对象,示例性地,可以在Unity引擎中创建自定义着色器“Smoke”,并用此着色器创建材质球,本申请实施例不予限制。

第一贴图为遮罩贴图,可以记为MaskTex,在本申请实施例中,用于确定第一条状面片的纹理显示范围和纹理颜色强度,从而能够更加真实的模拟烟雾。

示例性地,如图4所示,图4是根据本申请其中一实施例的遮罩贴图的示意图,可以将MaskTex的R通道作为烟雾的总体形状遮罩,MaskTex的G通道和B通道用于对第一条状面片从左到右排布的3列纹理坐标做区分,以便后续为不同的条状面片确定对应的采样参数,从而达到更丰富随机的采样结果,优化视觉表现。

可以理解的是,不同的条状面片对应的采样参数可以相同或者不同,根据实际美术需求设定,本申请实施例不予限制。

第二贴图为噪声贴图,可以记为NoiseTex,是通过伪随机的算法生成的一个看起来像随机的、无规律分布的图案,在本申请实施例中,用于确定第一条状面片的纹理细节,增加第一条状面片的纹理复杂度和真实感,从而能够更加真实的模拟烟雾。

示例性地,如图5所示,图5是根据本申请其中一实施例的噪声贴图的示意图,可以将NoiseTex的R通道和G通道作为着色器中用来扭曲偏移顶点坐标或纹理坐标用的图案,B通道作为烟雾形状纹理图案,本申请实施例不予限制。

上述第一贴图和第二贴图可以根据实际美术需求在制图软件中制作。

步骤S22,根据材质球渲染第一条状面片,得到第二条状面片。

其中,第二条状面片为用于模拟烟雾形状和烟雾质地的面片。

材质球可以为具有烟雾属性的材质球,基于获取到的材质球渲染第一条状面片,从而使得到的第二条状面片被赋予烟雾效果。示例性地,如图6所示,图6是根据本申请其中一实施例的第二条状面片的示意图。

步骤S24,根据第二条状面片、第一贴图和第二贴图,得到第三条状面片。

其中,第三条状面片的顶点坐标基于时间进行改变。

该步骤S24可以在顶点着色器中实现,基于第二条状面片对第一贴图和第二贴图进行采样,从而得到顶点坐标基于时间进行改变的第三条状面片。也即在顶点着色器中,通过在裁剪空间中对烟雾模型的顶点进行偏移,从而形成型体波动的顶点动画,模拟烟雾飘荡的效果。

步骤S26,根据第三条状面片、第一贴图和第二贴图,得到烟雾飘散特效。

其中,烟雾飘散特效的顶点坐标和纹理坐标均基于时间进行改变。

该步骤S26可以在像素着色器中实现,基于已经实现顶点偏移的第三条状面片对第一贴图和第二贴图进行采样,从而得到顶点坐标和纹理坐标均基于时间进行改变的烟雾飘散特效。也即在像素着色器中,通过对纹理坐标进行偏移形成烟雾图像流动的纹理动画,叠加顶点动画与纹理动画的效果,最终得到用于模拟烟雾流体特效的动画,从而实现低消耗模拟烟雾流体特效。

通过上述步骤,通过获取第一条状面片、材质球、第一贴图和第二贴图,其中,第一条状面片为用于模拟烟雾形状的面片,第一贴图为遮罩贴图,第二贴图为噪声贴图;根据材质球渲染第一条状面片,得到第二条状面片,其中,第二条状面片为用于模拟烟雾形状和烟雾质地的面片;根据第二条状面片、第一贴图和第二贴图,得到第三条状面片,其中,第三条状面片的顶点坐标基于时间进行改变;根据第三条状面片、第一贴图和第二贴图,得到烟雾飘散特效,其中,烟雾飘散特效的顶点坐标和纹理坐标均基于时间进行改变。达到了通过简易的模型制作配合着色器计算的方式,生成动态的烟雾流体图像的目的,从而能够实现无需使用光线步进技术,通过低性能消耗的方式渲染出烟雾流体特效的技术效果,此外,生成的烟雾流体特效真实,且支持在低性能终端上运行,应用范围广,进而解决了相关技术中采用光线步进等体积渲染手段进行烟雾渲染,导致显存消耗和带宽消耗较高的技术问题。

在一种可能的实施方式中,第一条状面片由预设数量的条状面片组成,步骤S24中,根据第二条状面片、第一贴图和第二贴图,得到第三条状面片可以包括以下执行步骤:

步骤S241,在顶点着色器中,利用三角函数和时间变量对第二条状面片的第一顶点坐标进行偏移处理,得到屏幕偏移量。

第一顶点坐标为第二条状面片在屏幕空间的顶点坐标,屏幕偏移量可以理解为顶点坐标处于抖动状态的图像。

在屏幕纹理坐标中,通过三角函数和时间变量对第一顶点坐标进行偏移处理,得到屏幕偏移量,该屏幕偏移量是基于平面空间位置利用三角函数生成的。

步骤S242,基于预设数量的条状面片分别对应的至少一个第一采样参数、时间变量和第二条状面片的第一纹理坐标,对第二贴图进行采样,得到噪声偏移量。

其中,至少一个第一采样参数根据第一贴图确定。

组成第一条状面片的预设数量的条状面片中的每个条状面片都有对应的第一采样参数,该第一采样参数可以通过对第一贴图进行采样处理和插值处理确定。每个条状面片的第一采样参数可以相同或不同。

根据至少一个第一采样参数、时间变量和第二条状面片的第一纹理坐标,对第二贴图进行采样,从而得到噪声偏移量,该噪声偏移量是基于平移采样NoiseTex得到的。

步骤S243,根据屏幕偏移量、噪声偏移量和第二条状面片确定第三条状面片。

通过将屏幕偏移量和噪声偏移量两者结合,与第二条状面片共同输出,可以得到飘动效果更加生动自然的第三条状面片。

可以理解的是,在实际使用中,屏幕偏移量和噪声偏移量这两者的强度是可以分别独立调整的,方便美术制作者灵活的控制效果。如果确定某一个偏移量的强度为0,则可在实际应用中跳过该偏移量的计算过程,从而节约算力。

在一种可能的实施方式中,步骤S241中,利用三角函数和时间变量对第二条状面片的第一顶点坐标进行偏移处理,得到屏幕偏移量可以包括以下执行步骤:

步骤S2411,将第二条状面片的第二顶点坐标从对象空间转换到裁剪空间,得到第三顶点坐标;

步骤S2412,将第三顶点坐标从裁剪空间转换到屏幕空间,得到第四顶点坐标;

步骤S2413,利用正弦三角函数和时间变量对第四顶点坐标进行偏移处理,得到屏幕偏移量。

其中,屏幕偏移量在横向和纵向上偏移。

在屏幕空间中进行顶点坐标偏移,首先需要将顶点坐标转换到屏幕空间,通过获取对象空间的第二条状面片的第二顶点坐标,然后再将第二顶点坐标从对象空间转换到裁剪空间,得到第三顶点坐标,再将裁剪空间的第三顶点坐标转换到屏幕空间,从而得到第一顶点坐标。最后利用正弦三角函数和时间变量Time对屏幕空间的第一顶点坐标进行偏移处理,得到屏幕偏移量。

示例性地,可以通过float4 pos=UnityObjectToClipPos(v.vertex)语句将第二顶点坐标从对象空间转换到裁剪空间,得到第三顶点坐标。

再通过float2 ScreenUV=pos.xy/pos.w*0.5+0.5语句将裁剪空间的第三顶点坐标转换到屏幕空间,从而得到第一顶点坐标。

最后通过float ScreenPattern=sin(ScreenUV.y*20+_Time.y*2)*sin(ScreenUV.x*10+_Time.y*2)和float4 ScreenTwist=float4(ScreenPattern,ScreenPattern,0,0)语句对屏幕实现扭曲效果。可以看出,利用sin函数和时间变量Time生成了波浪状的纹理ScreenPattern,且为了不偏移Z轴,保证深度正确,最终生成的屏幕偏移量ScreenTwist只在X和Y两个方向进行扭曲,Z和W都赋值为0。

示例性地,如图7所示,图7是根据本申请其中一实施例的屏幕坐标系示意图,通常,屏幕坐标系的原点位于屏幕的左上角,X轴方向是水平方向(即横向),从屏幕的左侧向右侧延伸,X轴正方向指向屏幕的右侧。Y轴方向是垂直方向(即纵向),Y轴正方向指向屏幕的下方,从屏幕的上方向下方延伸。

需要注意的是,屏幕坐标系的原点和轴方向可能会根据具体的平台、图形库或渲染引擎的要求而有所不同。例如,有些平台或工具可能将屏幕坐标系的原点放在左下角,而Y轴正方向指向上方,本申请实施例不予限制。

在本申请实施例中,屏幕偏移量在横向上偏移可以理解为顶点坐标在图7中X轴方向上进行扭曲,屏幕偏移量在纵向上偏移可以理解为顶点坐标在图7中Y轴方向上进行扭曲,也即本申请实施例中的顶点坐标能够在X轴和Y轴方向上同时实现扭曲效果,从而更真实地模拟烟雾扭曲的效果。

在一种可能的实施方式中,步骤S242中,基于预设数量的条状面片分别对应的至少一个第一采样参数、时间变量和第二条状面片的第一纹理坐标,对第二贴图进行采样,得到噪声偏移量可以包括以下执行步骤:

步骤S2421,基于第一纹理坐标对第一贴图进行采样,得到第一遮罩强度;

步骤S2422,根据线性插值函数和第一遮罩强度的第一通道值,确定至少一个第一采样参数;

步骤S2423,基于至少一个第一采样参数、时间变量和第一纹理坐标,对第二贴图进行采样,得到噪声偏移量。

其中,第一采样参数包括纹理坐标的平铺参数、平移速度参数以及强度系数,噪声偏移量在横向和纵向上偏移。

首先基于第二条状面片的第一纹理坐标对MaskTex进行采样,得到第一遮罩强度,然后通过MaskTex的G通道和B通道作为区分,赋予每条条状面片不同的纹理坐标平铺参数、平移速度参数TileSpeed(XY用于表示平铺参数,ZW用于表示平移速度参数),以及不同的强度系数Strength。最后使用不同的采样参数,配合时间变量Time对NoiseTex进行采样,得到噪声偏移量。

示例性地,可以通过float4 Mask=tex2Dlod(_MaskTex,float4(v.uv.xy,0,0))语句对MaskTex进行采样,得到第一遮罩强度Mask。

再通过float4 TileSpeed=lerp(lerp(float4(1.0,2.0,0.1,-0.2),float4(1.0,1.0,0.3,-0.15),Mask.g),float4(1.0,2.0,0.2,-0.3),Mask.b)和float Strength=lerp(lerp(4.0,1.5,Mask.g),-2.0,Mask.b)语句,利用第一遮罩强度Mask的G通道和B通道,通过线性插值函数lerp对三个float4向量之间进行两次插值,得到用于表示纹理坐标的平铺参数、平移速度参数的TileSpeed。再通过float Strength=lerp(lerp(4.0,1.5,Mask.g),-2.0,Mask.b)语句,利用第一遮罩强度Mask的G通道和B通道,通过线性插值函数lerp进行两次插值得到强度系数Strength。

最后通过float4 Noise=tex2Dlod(_NoiseTex,float4(v.uv.xy*TileSpeed.xy+TileSpeed.zw*_Time.y,0,0))和float4 NoiseTwist=float4(Noise.g*Strength,Noise.r*Strength,0,0)语句,通过TileSpeed控制噪声纹理在XY轴上的平铺速度和ZW轴上的滚动速度,配合时间变量采样NoiseTex,得到uv坐标上的值Noise。再将Noise.g和Noise.r分别于Strength相乘,得到噪声偏移量NoiseTwist。

示例性地,以图7所示的屏幕坐标系为例,噪声偏移量在横向上偏移可以理解为噪声纹理在图7中X轴方向上进行扭曲,噪声偏移量在纵向上偏移可以理解为噪声纹理在图7中Y轴方向上进行扭曲,也即本申请实施例中的噪声纹理能够在X轴和Y轴方向上同时实现扭曲效果,从而更真实地模拟烟雾扭曲的效果。

在一种可能的实施方式中,步骤S243中,根据屏幕偏移量、噪声偏移量和第二条状面片确定第三条状面片可以包括以下执行步骤:

步骤S2431,叠加屏幕偏移量和噪声偏移量,得到目标偏移量;

步骤S2432,根据目标偏移量和第二条状面片,得到第三条状面片。

通过将屏幕偏移量和噪声偏移量叠加,得到总的目标偏移量,再基于目标偏移量和第二条状面片共同输出,得到第三条状面片。

示例性地,可以通过float4 output=(ScreenTwist+NoiseTwist)*0.01语句,将屏幕偏移量和噪声偏移量叠加,并与自定义的强度弱化因子相乘,得到目标偏移量。

再通过o.vertex=pos+output语句将原始裁剪空间的顶点坐标pos,叠加目标偏移量output作为输出,得到新的顶点坐标o.vertex,也即得到第三条状面片,该第三条状面片能够实现顶点坐标的扭曲效果。

如图8所示,图8是根据本申请其中一实施例的第三条状面片的示意图,可以理解的是,该图8是一种顶点处于扭动状态的动态图像。

在一种可能的实施方式中,步骤S26中,根据第三条状面片、第一贴图和第二贴图,得到烟雾飘散特效可以包括以下执行步骤:

步骤S261,在像素着色器中,基于预设数量的条状面片分别对应的至少一个第二采样参数、时间变量和第三条状面片的第二纹理坐标,对第二贴图进行采样,得到扭曲图像。

其中,至少一个第二采样参数根据第一贴图确定,扭曲图像为对第三条状面片叠加扭曲效果的图像。

第二采样参数的确定过程可以参见前述对第一采样参数的确定过程的描述,此处不过多赘述。可以理解的是,第二采样参数和第一采样参数均为根据第一贴图确定的采样参数,区别仅在于通过改变float4类型的向量的分量值来得到不同的采样参数值。

基于每条条状面片的第二采样参数、时间变量和第三条状面片的第二纹理坐标,对第二贴图进行采样,得到扭曲图像,该扭曲图像能够真实地模拟出烟雾的扭动状态。

此外,可以通过调整第二采样参数的参数值,得到扭动程度不同的多个扭动图像,从而使得生成的烟雾流动特效更具有真实性。

步骤S262,基于预设数量的条状面片分别对应的至少一个第三采样参数、时间变量、第二纹理坐标和扭曲图像,对第二贴图进行采样,得到烟雾扭曲图像。

其中,至少一个第三采样参数根据第一贴图确定,烟雾扭曲图像为对扭曲图像叠加烟雾效果的图像。

第三采样参数的确定过程可以参见前述对第一采样参数和第二采样参数的确定过程的描述,此处不过多赘述。

基于每条条状面片的第三采样参数、时间变量、第二纹理坐标和上述得到的扭曲图像,对第二贴图进行采样,得到烟雾扭曲图像,即通过将上述扭曲图像叠加扭曲的烟雾。

此外,可以通过调整第三采样参数的参数值,得到多个烟雾扭曲图像,从而使得生成的烟雾流动特效更具有真实性。

步骤S263,基于烟雾扭曲图像和透明度图像确定烟雾飘散特效。

其中,透明度图像用于确定烟雾扭曲图像的透明度。

通过确定烟雾扭曲图像的透明度,基于烟雾扭曲图像和透明度图像确定烟雾飘散特效,从而能够使生成的烟雾飘散特效的在屏幕上的显示效果是“顶点运动”和“纹理流动+扰动”两者的结合,从而更具有真实性。

在一种可能的实施方式中,步骤S261中,基于预设数量的条状面片分别对应的至少一个第二采样参数、时间变量和第三条状面片的第二纹理坐标,对第二贴图进行采样,得到扭曲图像可以包括以下执行步骤:

步骤S2611,基于第二纹理坐标对第一贴图进行采样,得到第二遮罩强度;

步骤S2612,根据线性插值函数和第二遮罩强度的第二通道值,确定至少一个第二采样参数;

步骤S2613,基于至少一个第二采样参数、时间变量和第二纹理坐标,对第二贴图进行采样,得到扭曲图像。

其中,第二采样参数包括纹理坐标的平铺参数和平移速度参数。

首先基于第三条状面片的第二纹理坐标i.uv对MaskTex进行采样,得到第二遮罩强度Mask,然后根据线性插值函数lerp和第二遮罩强度Mask的第二通道值,确定至少一个第二采样参数TileSpeed,最后基于第二采样参数TileSpeed、时间变量Time和第二纹理坐标i.uv,对第二贴图NoiseTex进行采样,得到扭曲图像Twist。

示例性地,可以通过float4 Mask=tex2D(_MaskTex,i.uv)语句对MaskTex进行采样,得到第二遮罩强度Mask。

根据float4 TileSpeed1=lerp(lerp(float4(2.0,1.0,0.05,-0.2),float4(1.0,1.0,0.1,-0.02),Mask.g),float4(1.0,2.0,0.1,-0.1),Mask.b)语句,利用第二遮罩强度Mask的G通道和B通道,通过线性插值函数lerp对三个float4向量之间进行两次插值,得到包括纹理坐标的平铺参数和平移速度参数的第二采样参数TileSpeed1。

再通过float4 Twist1=tex2D(_NoiseTex,i.uv*TileSpeed1.xy+TileSpeed1.zw*_Time.y)语句,基于第二采样参数TileSpeed1、时间变量Time和第二纹理坐标i.uv,对第二贴图NoiseTex进行采样,得到扭曲图像Twist1。

可以理解的是,通过改变第二采样参数可以获取不同的扭曲图像。例如通过float4 TileSpeed2=lerp(lerp(float4(1.0,3.0,0.05,-0.1),float4(1.0,2.0,0.1,-0.05),Mask.g),float4(1.0,1.0,0.1,-0.2),Mask.b);float4 Twist2=tex2D(_NoiseTex,i.uv*TileSpeed2.xy+TileSpeed2.zw*_Time.y)语句,得到另一个扭曲图像Twist2。

如图9所示,图9是根据本申请其中一实施例的扭曲图像的示意图,图9中(a)图可以为扭曲图像Twist1,图9中(b)图可以为扭曲图像Twist2。

在一种可能的实施方式中,步骤S262中,基于预设数量的条状面片分别对应的至少一个第三采样参数、时间变量、第二纹理坐标和扭曲图像,对第二贴图进行采样,得到烟雾扭曲图像可以包括以下执行步骤:

S2621,根据线性插值函数和第二通道值,确定至少一个第三采样参数;

S2622,基于至少一个第三采样参数、时间变量、第二纹理坐标和扭曲图像,对第二贴图进行采样,得到烟雾扭曲图像。

根据线性插值函数lerp和第二遮罩强度Mask的第二通道值,确定至少一个第三采样参数TileSpeed,基于至少一个第三采样参数TileSpeed、时间变量Time、第二纹理坐标i.uv和扭曲图像Twist,对第二贴图NoiseTex进行采样,得到烟雾扭曲图像Smoke。

示例性地,可以通过float4 TileSpeed3=lerp(lerp(float4(1.0,3.0,0.05,-0.1),float4(1.0,4.0,0.1,-0.0),Mask.g),float4(1.0,3.0,0.05,-0.0),Mask.b)语句,利用第二遮罩强度Mask的G通道和B通道,通过线性插值函数lerp对三个float4向量之间进行两次插值,得到包括纹理坐标的平铺参数和平移速度参数的第二采样参数TileSpeed3。

再通过float4 Smoke1=tex2D(_NoiseTex,i.uv*TileSpeed3.xy+TileSpeed3.zw*_Time.y+Twist1.g*0.3)语句,基于第三采样参数TileSpeed3、时间变量Time、第二纹理坐标i.uv和扭曲图像Twist1,对第二贴图NoiseTex进行采样,得到烟雾扭曲图像Smoke1。

可以理解的是,通过改变第三采样参数可以获取不同的扭曲图像。例如通过float4 TileSpeed4=lerp(lerp(float4(3.0,8.0,0.15,-0.5),float4(2.0,6.0,0.1,-0.4),Mask.g),float4(4.0,7.0,0.2,-0.3),Mask.b);float4 Smoke2=tex2D(_NoiseTex,i.uv*TileSpeed4.xy+TileSpeed4.zw*_Time.y+Twist2.g*0.3)语句,得到另一个烟雾扭曲图像Smoke2,其中,该Smoke2基于前述生成的Twist2得到。

如图10所示,图10是根据本申请其中一实施例的烟雾扭曲图像的示意图,图10中(a)图可以为烟雾扭曲图像Smoke1,图10中(b)图可以为烟雾扭曲图像Smoke2。

在一种可能的实施方式中,烟雾扭曲图像包括第一烟雾扭曲图像和第二烟雾扭曲图像,步骤S263中,基于烟雾扭曲图像和透明度图像确定烟雾飘散特效可以包括以下执行步骤:

步骤S2631,叠加第一烟雾扭曲图像和第二烟雾扭曲图像,得到目标烟雾扭曲图像;

步骤S2632,根据目标烟雾扭曲图像和第二通道值,确定透明度图像;

步骤S2633,基于目标烟雾扭曲图像的透明度图像,确定烟雾飘散特效。

当前述生成了两个烟雾扭曲图像,分别为第一烟雾扭曲图像Smoke1和第二烟雾扭曲图像Smoke2,通过将第一烟雾扭曲图像Smoke1和第二烟雾扭曲图像Smoke2叠加,得到目标烟雾扭曲图像,再根据目标烟雾扭曲图像和第二遮罩强度Mask的第二通道值,确定烟雾扭曲图像的透明度Opacity,最后基于目标烟雾扭曲图像的透明度图像Opacity,得到烟雾飘散特效。

示例性地,可以通过float Opacity=(Smoke1.b+Smoke2.b)*Mask.r语句将第一烟雾扭曲图像Smoke1和第二烟雾扭曲图像Smoke2进行叠加,并与第二遮罩强度Mask的R通道相乘,得到透明度Opacity。

再通过float4 OutputColor=float4(1,1,1,Opacity)语句,输出烟雾飘散特效。可以看出,此处将OutputColor的红色、绿色和蓝色都被设置为1,即表示输出的颜色是白色,而透明度则由变量Opacity决定。

如图11和图12所示,图11是根据本申请其中一实施例的透明度图像的示意图,图12是根据本申请其中一实施例的烟雾飘散特效的示意图。通过将图10中的第一烟雾扭曲图像Smoke1和第二烟雾扭曲图像Smoke2叠加,并设置颜色值以及通过图11所示的透明度图像调整透明度,最终确定图12所示的烟雾飘散特效,可以理解的是,该图12为动态的烟雾流体特效。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。

在本实施例中还提供了一种烟雾生成装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图13是根据本申请其中一实施例的烟雾生成装置的结构框图,如图13所示,以烟雾生成装置1300为例,该烟雾生成装置1300包括获取模块1301,获取模块1301用于获取第一条状面片、材质球、第一贴图和第二贴图,其中,第一条状面片为用于模拟烟雾形状的面片,第一贴图为遮罩贴图,第二贴图为噪声贴图;渲染模块1302,渲染模块1302用于根据材质球渲染第一条状面片,得到第二条状面片,其中,第二条状面片为用于模拟烟雾形状和烟雾质地的面片;第一确定模块1303,第一确定模块1303用于根据第二条状面片、第一贴图和第二贴图,得到第三条状面片,其中,第三条状面片的顶点坐标基于时间进行改变;第二确定模块1304,第二确定模块1304用于根据第三条状面片、第一贴图和第二贴图,得到烟雾飘散特效,其中,烟雾飘散特效的顶点坐标和纹理坐标均基于时间进行改变。

可选地,第一条状面片由预设数量的条状面片组成,第一确定模块1303还用于:在顶点着色器中,利用三角函数和时间变量对第二条状面片的第一顶点坐标进行偏移处理,得到屏幕偏移量;基于预设数量的条状面片分别对应的至少一个第一采样参数、时间变量和第二条状面片的第一纹理坐标,对第二贴图进行采样,得到噪声偏移量,其中,至少一个第一采样参数根据第一贴图确定;根据屏幕偏移量、噪声偏移量和第二条状面片确定第三条状面片。

可选地,第一确定模块1303还用于:将第二条状面片的第二顶点坐标从对象空间转换到裁剪空间,得到第三顶点坐标;将第三顶点坐标从裁剪空间转换到屏幕空间,得到第一顶点坐标;利用正弦三角函数和时间变量对第一顶点坐标进行偏移处理,得到屏幕偏移量,其中,屏幕偏移量在横向和纵向上偏移。

可选地,第一确定模块1303还用于:基于第一纹理坐标对第一贴图进行采样,得到第一遮罩强度;根据线性插值函数和第一遮罩强度的第一通道值,确定至少一个第一采样参数,其中,第一采样参数包括纹理坐标的平铺参数、平移速度参数以及强度系数;基于至少一个第一采样参数、时间变量和第一纹理坐标,对第二贴图进行采样,得到噪声偏移量,其中,噪声偏移量在横向和纵向上偏移。

可选地,第一确定模块1303还用于:叠加屏幕偏移量和噪声偏移量,得到目标偏移量;根据目标偏移量和第二条状面片,得到第三条状面片。

可选地,第一条状面片由预设数量的条状面片组成,第二确定模块1304还用于:在像素着色器中,基于预设数量的条状面片分别对应的至少一个第二采样参数、时间变量和第三条状面片的第二纹理坐标,对第二贴图进行采样,得到扭曲图像,其中,至少一个第二采样参数根据第一贴图确定,扭曲图像为对第三条状面片叠加扭曲效果的图像;基于预设数量的条状面片分别对应的至少一个第三采样参数、时间变量、第二纹理坐标和扭曲图像,对第二贴图进行采样,得到烟雾扭曲图像,其中,至少一个第三采样参数根据第一贴图确定,烟雾扭曲图像为对扭曲图像叠加烟雾效果的图像;基于烟雾扭曲图像和透明度图像确定烟雾飘散特效,其中,透明度图像用于确定烟雾扭曲图像的透明度。

可选地,第二确定模块1304还用于:基于第二纹理坐标对第一贴图进行采样,得到第二遮罩强度;根据线性插值函数和第二遮罩强度的第二通道值,确定至少一个第二采样参数,其中,第二采样参数包括纹理坐标的平铺参数和平移速度参数;基于至少一个第二采样参数、时间变量和第二纹理坐标,对第二贴图进行采样,得到扭曲图像。

可选地,第二确定模块1304还用于:根据线性插值函数和第二通道值,确定至少一个第三采样参数;基于至少一个第三采样参数、时间变量、第二纹理坐标和扭曲图像,对第二贴图进行采样,得到烟雾扭曲图像。

可选地,烟雾扭曲图像包括第一烟雾扭曲图像和第二烟雾扭曲图像,第二确定模块1304还用于:叠加第一烟雾扭曲图像和第二烟雾扭曲图像,得到目标烟雾扭曲图像;根据目标烟雾扭曲图像和第二通道值,确定透明度图像;基于目标烟雾扭曲图像的透明度图像,确定烟雾飘散特效。

需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。

本申请的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。

可选地,在本实施例中,上述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。

可选地,在本实施例中,上述计算机可读存储介质可以位于计算机网络中计算机终端群中的任意一个计算机终端中,或者位于移动终端群中的任意一个移动终端中。

可选地,在本实施例中,上述计算机可读存储介质可以被设置为存储用于执行以下步骤的计算机程序:

步骤S20,获取第一条状面片、材质球、第一贴图和第二贴图,其中,第一条状面片为用于模拟烟雾形状的面片,第一贴图为遮罩贴图,第二贴图为噪声贴图;

步骤S22,根据材质球渲染第一条状面片,得到第二条状面片,其中,第二条状面片为用于模拟烟雾形状和烟雾质地的面片;

步骤S24,根据第二条状面片、第一贴图和第二贴图,得到第三条状面片,其中,第三条状面片的顶点坐标基于时间进行改变;

步骤S26,根据第三条状面片、第一贴图和第二贴图,得到烟雾飘散特效,其中,烟雾飘散特效的顶点坐标和纹理坐标均基于时间进行改变。

可选地,第一条状面片由预设数量的条状面片组成,上述计算机可读存储介质还被设置为存储用于执行以下步骤的程序代码:在顶点着色器中,利用三角函数和时间变量对第二条状面片的第一顶点坐标进行偏移处理,得到屏幕偏移量;基于预设数量的条状面片分别对应的至少一个第一采样参数、时间变量和第二条状面片的第一纹理坐标,对第二贴图进行采样,得到噪声偏移量,其中,至少一个第一采样参数根据第一贴图确定;根据屏幕偏移量、噪声偏移量和第二条状面片确定第三条状面片。

可选地,上述计算机可读存储介质还被设置为存储用于执行以下步骤的程序代码:将第二条状面片的第二顶点坐标从对象空间转换到裁剪空间,得到第三顶点坐标;将第三顶点坐标从裁剪空间转换到屏幕空间,得到第一顶点坐标;利用正弦三角函数和时间变量对第一顶点坐标进行偏移处理,得到屏幕偏移量,其中,屏幕偏移量在横向和纵向上偏移。

可选地,上述计算机可读存储介质还被设置为存储用于执行以下步骤的程序代码:基于第一纹理坐标对第一贴图进行采样,得到第一遮罩强度;根据线性插值函数和第一遮罩强度的第一通道值,确定至少一个第一采样参数,其中,第一采样参数包括纹理坐标的平铺参数、平移速度参数以及强度系数;基于至少一个第一采样参数、时间变量和第一纹理坐标,对第二贴图进行采样,得到噪声偏移量,其中,噪声偏移量在横向和纵向上偏移。

可选地,上述计算机可读存储介质还被设置为存储用于执行以下步骤的程序代码:叠加屏幕偏移量和噪声偏移量,得到目标偏移量;根据目标偏移量和第二条状面片,得到第三条状面片。

可选地,第一条状面片由预设数量的条状面片组成,上述计算机可读存储介质还被设置为存储用于执行以下步骤的程序代码:在像素着色器中,基于预设数量的条状面片分别对应的至少一个第二采样参数、时间变量和第三条状面片的第二纹理坐标,对第二贴图进行采样,得到扭曲图像,其中,至少一个第二采样参数根据第一贴图确定,扭曲图像为对第三条状面片叠加扭曲效果的图像;基于预设数量的条状面片分别对应的至少一个第三采样参数、时间变量、第二纹理坐标和扭曲图像,对第二贴图进行采样,得到烟雾扭曲图像,其中,至少一个第三采样参数根据第一贴图确定,烟雾扭曲图像为对扭曲图像叠加烟雾效果的图像;基于烟雾扭曲图像和透明度图像确定烟雾飘散特效,其中,透明度图像用于确定烟雾扭曲图像的透明度。

可选地,上述计算机可读存储介质还被设置为存储用于执行以下步骤的程序代码:基于第二纹理坐标对第一贴图进行采样,得到第二遮罩强度;根据线性插值函数和第二遮罩强度的第二通道值,确定至少一个第二采样参数,其中,第二采样参数包括纹理坐标的平铺参数和平移速度参数;基于至少一个第二采样参数、时间变量和第二纹理坐标,对第二贴图进行采样,得到扭曲图像。

可选地,上述计算机可读存储介质还被设置为存储用于执行以下步骤的程序代码:根据线性插值函数和第二通道值,确定至少一个第三采样参数;基于至少一个第三采样参数、时间变量、第二纹理坐标和扭曲图像,对第二贴图进行采样,得到烟雾扭曲图像。

可选地,烟雾扭曲图像包括第一烟雾扭曲图像和第二烟雾扭曲图像,上述计算机可读存储介质还被设置为存储用于执行以下步骤的程序代码:叠加第一烟雾扭曲图像和第二烟雾扭曲图像,得到目标烟雾扭曲图像;根据目标烟雾扭曲图像和第二通道值,确定透明度图像;基于目标烟雾扭曲图像的透明度图像,确定烟雾飘散特效。

在该实施例的计算机可读存储介质中,提供了一种烟雾生成的技术方案,通过获取第一条状面片、材质球、第一贴图和第二贴图,其中,第一条状面片为用于模拟烟雾形状的面片,第一贴图为遮罩贴图,第二贴图为噪声贴图;根据材质球渲染第一条状面片,得到第二条状面片,其中,第二条状面片为用于模拟烟雾形状和烟雾质地的面片;根据第二条状面片、第一贴图和第二贴图,得到第三条状面片,其中,第三条状面片的顶点坐标基于时间进行改变;根据第三条状面片、第一贴图和第二贴图,得到烟雾飘散特效,其中,烟雾飘散特效的顶点坐标和纹理坐标均基于时间进行改变。达到了通过简易的模型制作配合着色器计算的方式,生成动态的烟雾流体图像的目的,从而能够实现无需使用光线步进技术,通过低性能消耗的方式渲染出烟雾流体特效的技术效果,此外,生成的烟雾流体特效真实,且支持在低性能终端上运行,应用范围广,进而解决了相关技术中采用光线步进等体积渲染手段进行烟雾渲染,导致显存消耗和带宽消耗较高的技术问题。

通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个计算机可读存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本申请实施方式的方法。

在本申请的示例性实施例中,计算机可读存储介质上存储有能够实现本实施例上述方法的程序产品。在一些可能的实施方式中,本申请实施例的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本实施例上述“示例性方法”部分中描述的根据本申请各种示例性实施方式的步骤。

根据本申请的实施方式的用于实现上述方法的程序产品,其可以采用便携式紧凑盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本申请实施例的程序产品不限于此,在本申请实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

上述程序产品可以采用一个或多个计算机可读介质的任意组合。该计算机可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列举)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(Electrically Programmable Read-Only Memory,EPROM)或闪存、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。

需要说明的是,计算机可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、射频(Radio Frequency,RF)等等,或者上述的任意合适的组合。

本申请的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。

可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。

可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:

步骤S20,获取第一条状面片、材质球、第一贴图和第二贴图,其中,第一条状面片为用于模拟烟雾形状的面片,第一贴图为遮罩贴图,第二贴图为噪声贴图;

步骤S22,根据材质球渲染第一条状面片,得到第二条状面片,其中,第二条状面片为用于模拟烟雾形状和烟雾质地的面片;

步骤S24,根据第二条状面片、第一贴图和第二贴图,得到第三条状面片,其中,第三条状面片的顶点坐标基于时间进行改变;

步骤S26,根据第三条状面片、第一贴图和第二贴图,得到烟雾飘散特效,其中,烟雾飘散特效的顶点坐标和纹理坐标均基于时间进行改变。

可选地,第一条状面片由预设数量的条状面片组成,上述处理器还可以被设置为通过计算机程序执行以下步骤:在顶点着色器中,利用三角函数和时间变量对第二条状面片的第一顶点坐标进行偏移处理,得到屏幕偏移量;基于预设数量的条状面片分别对应的至少一个第一采样参数、时间变量和第二条状面片的第一纹理坐标,对第二贴图进行采样,得到噪声偏移量,其中,至少一个第一采样参数根据第一贴图确定;根据屏幕偏移量、噪声偏移量和第二条状面片确定第三条状面片。

可选地,上述处理器还可以被设置为通过计算机程序执行以下步骤:将第二条状面片的第二顶点坐标从对象空间转换到裁剪空间,得到第三顶点坐标;将第三顶点坐标从裁剪空间转换到屏幕空间,得到第一顶点坐标;利用正弦三角函数和时间变量对第一顶点坐标进行偏移处理,得到屏幕偏移量,其中,屏幕偏移量在横向和纵向上偏移。

可选地,上述处理器还可以被设置为通过计算机程序执行以下步骤:基于第一纹理坐标对第一贴图进行采样,得到第一遮罩强度;根据线性插值函数和第一遮罩强度的第一通道值,确定至少一个第一采样参数,其中,第一采样参数包括纹理坐标的平铺参数、平移速度参数以及强度系数;基于至少一个第一采样参数、时间变量和第一纹理坐标,对第二贴图进行采样,得到噪声偏移量,其中,噪声偏移量在横向和纵向上偏移。

可选地,上述处理器还可以被设置为通过计算机程序执行以下步骤:叠加屏幕偏移量和噪声偏移量,得到目标偏移量;根据目标偏移量和第二条状面片,得到第三条状面片。

可选地,第一条状面片由预设数量的条状面片组成,上述处理器还可以被设置为通过计算机程序执行以下步骤:在像素着色器中,基于预设数量的条状面片分别对应的至少一个第二采样参数、时间变量和第三条状面片的第二纹理坐标,对第二贴图进行采样,得到扭曲图像,其中,至少一个第二采样参数根据第一贴图确定,扭曲图像为对第三条状面片叠加扭曲效果的图像;基于预设数量的条状面片分别对应的至少一个第三采样参数、时间变量、第二纹理坐标和扭曲图像,对第二贴图进行采样,得到烟雾扭曲图像,其中,至少一个第三采样参数根据第一贴图确定,烟雾扭曲图像为对扭曲图像叠加烟雾效果的图像;基于烟雾扭曲图像和透明度图像确定烟雾飘散特效,其中,透明度图像用于确定烟雾扭曲图像的透明度。

可选地,上述处理器还可以被设置为通过计算机程序执行以下步骤:基于第二纹理坐标对第一贴图进行采样,得到第二遮罩强度;根据线性插值函数和第二遮罩强度的第二通道值,确定至少一个第二采样参数,其中,第二采样参数包括纹理坐标的平铺参数和平移速度参数;基于至少一个第二采样参数、时间变量和第二纹理坐标,对第二贴图进行采样,得到扭曲图像。

可选地,上述处理器还可以被设置为通过计算机程序执行以下步骤:根据线性插值函数和第二通道值,确定至少一个第三采样参数;基于至少一个第三采样参数、时间变量、第二纹理坐标和扭曲图像,对第二贴图进行采样,得到烟雾扭曲图像。

可选地,烟雾扭曲图像包括第一烟雾扭曲图像和第二烟雾扭曲图像,上述处理器还可以被设置为通过计算机程序执行以下步骤:叠加第一烟雾扭曲图像和第二烟雾扭曲图像,得到目标烟雾扭曲图像;根据目标烟雾扭曲图像和第二通道值,确定透明度图像;基于目标烟雾扭曲图像的透明度图像,确定烟雾飘散特效。

在该实施例的电子装置中,提供了一种烟雾生成的技术方案,通过获取第一条状面片、材质球、第一贴图和第二贴图,其中,第一条状面片为用于模拟烟雾形状的面片,第一贴图为遮罩贴图,第二贴图为噪声贴图;根据材质球渲染第一条状面片,得到第二条状面片,其中,第二条状面片为用于模拟烟雾形状和烟雾质地的面片;根据第二条状面片、第一贴图和第二贴图,得到第三条状面片,其中,第三条状面片的顶点坐标基于时间进行改变;根据第三条状面片、第一贴图和第二贴图,得到烟雾飘散特效,其中,烟雾飘散特效的顶点坐标和纹理坐标均基于时间进行改变。达到了通过简易的模型制作配合着色器计算的方式,生成动态的烟雾流体图像的目的,从而能够实现无需使用光线步进技术,通过低性能消耗的方式渲染出烟雾流体特效的技术效果,此外,生成的烟雾流体特效真实,且支持在低性能终端上运行,应用范围广,进而解决了相关技术中采用光线步进等体积渲染手段进行烟雾渲染,导致显存消耗和带宽消耗较高的技术问题。

图14是根据本申请实施例的一种电子装置的示意图。如图14所示,电子装置1400仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。

如图14所示,电子装置1400以通用计算设备的形式表现。电子装置1400的组件可以包括但不限于:上述至少一个处理器1410、上述至少一个存储器1420、连接不同系统组件(包括存储器1420和处理器1410)的总线1430和显示器1440。

其中,上述存储器1420存储有程序代码,所述程序代码可以被处理器1410执行,使得处理器1410执行本申请实施例的上述方法部分中描述的根据本申请各种示例性实施方式的步骤。

存储器1420可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)14201和/或高速缓存存储单元14202,还可以进一步包括只读存储单元(ROM)14203,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。

在一些实例中,存储器1420还可以包括具有一组(至少一个)程序模块14205的程序/实用工具14204,这样的程序模块14205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。存储器1420可进一步包括相对于处理器1410远程设置的存储器,这些远程存储器可以通过网络连接至电子装置1400。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

总线1430可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理器1410或者使用多种总线结构中的任意总线结构的局域总线。

显示器1440可以例如触摸屏式的液晶显示器(Liquid Crystal Display,LCD),该液晶显示器可使得用户能够与电子装置1400的用户界面进行交互。

可选地,电子装置1400也可以与一个或多个外部设备1500(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子装置1400交互的设备通信,和/或与使得该电子装置1400能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(Input/Output,I/O)接口1450进行。并且,电子装置1400还可以通过网络适配器1460与一个或者多个网络(例如局域网(Local Area Network,LAN),广域网(Wide Area Network,WAN)和/或公共网络,例如因特网)通信。如图14所示,网络适配器1460通过总线1430与电子装置1400的其它模块通信。应当明白,尽管图14中未示出,可以结合电子装置1400使用其它硬件和/或软件模块,可以包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、磁盘阵列(RedundantArray of Independent Disks,RAID)系统、磁带驱动器以及数据备份存储系统等。

上述电子装置1400还可以包括:键盘、光标控制设备(如鼠标)、输入/输出接口(I/O接口)、网络接口、电源和/或相机。

本领域普通技术人员可以理解,图14所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,电子装置1400还可包括比图14中所示更多或者更少的组件,或者具有与图1所示不同的配置。存储器1420可用于存储计算机程序及对应的数据,如本申请实施例中的烟雾生成方法对应的计算机程序及对应的数据。处理器1410通过运行存储在存储器1420内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的烟雾生成方法。

上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

相关技术
  • 网页生成方法、装置、电子设备及计算机可读存储介质
  • 诗词旋律生成方法、电子装置及计算机可读存储介质
  • 特征生成方法、装置、电子设备及计算机可读存储介质
  • 模型生成方法、装置、电子设备和计算机可读存储介质
  • 一种浴室加热装置和用于控制浴室加热装置的方法、设备、电子设备及计算机可读存储介质
  • 图像生成装置、图像生成方法、记录介质生成方法、学习模型生成装置、学习模型生成方法、学习模型、数据处理装置、数据处理方法、推断方法、电子装置、生成方法、程序和非暂时性计算机可读介质
  • 电子证照生成方法、装置、电子证照系统、计算机可读存储介质及电子设备
技术分类

06120116478731