首页 / 一种天气粒子渲染方法、装置、计算机设备及存储介质

一种天气粒子渲染方法、装置、计算机设备及存储介质有效专利 发明

技术领域

[0001] 本申请涉及图像处理技术领域,具体而言,涉及一种天气粒子渲染方法、装置、计算机设备及存储介质。

相关背景技术

[0002] 粒子渲染在三维渲染中常常用于实现虚拟场景中的一些大量不规则的物体,例如云、烟雾、灰尘、雨雪、飞沙走石、焰火等。以雨滴天气粒子为例,每一个雨滴都会被视作一个粒子,并在其位于虚拟相机的可视范围内时,被渲染在对应的显示画面中,以实现虚拟天气场景的显示。
[0003] 在游戏中对天气粒子进行渲染时,由于天气粒子不仅数量巨大,不同种类天气粒子之间应用逻辑差别也较大。不同天气粒子的相关数据写在对应的软件程序中,导致天气粒子的渲染执行逻辑不易迭代。

具体实施方式

[0106] 为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0107] 本申请提供了一种用于呈现游戏中不同天气情景的天气粒子渲染装置及方法,能够在满足天气情景更换条件时,将目标天气的天气粒子对应的粒子数据传入到粒子处理模块;粒子处理模块将粒子数据进行格式转换后,提交至图形处理模块,以使图形处理模块能够基于虚拟相机的实时位置信息和进行了格式转换后的粒子数据生成并渲染粒子实例,以在游戏场景中呈现目标天气对应的天气情景。在该方案中,由于各种目标天气的天气粒子都被保存在粒子生成脚本中,只有在需要渲染的时候才会传入到图形处理模块中,而粒子生成脚本则能够方便的进行修改,进而能够更容易的对天气粒子的渲染执行逻辑进行迭代。
[0108] 下面将结合本申请中附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0109] 应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
[0110] 为便于对本实施例进行理解,首先对本申请实施例所公开的一种天气粒子渲染装置进行详细介绍。该天气粒子渲染装置安装于计算机设备中。该计算机设备一般为客户端设备。该计算机设备安装有与游戏对应的软件程序。
[0111] 实施例一
[0112] 参见图1所示,为本申请实施例一提供的天气粒子渲染装置的结构示意图,包括:脚本执行模块11、粒子处理模块12、以及图形处理模块13。
[0113] 下面分别对上述本执行模块11、粒子处理模块12、以及图形处理模块13加以说明。
[0114] I:脚本执行模块11,用于在满足天气情景更换条件时,触发一天气情景变更信号,执行粒子生成脚本中与目标天气对应的目标代码,以将与所述目标天气的天气粒子对应的粒子数据传入到粒子处理模块。
[0115] 在具体实施中,随着游戏进度的发展,可能会遇到需要更换天气情景的情况。在本申请中,将天气情景更换前的天气称为原天气,将天气情景更换后的天气称为目标天气。
[0116] 在一些情况下,例如若目标天气为晴天、刮风等天气,若这种天气不存在对应的天气粒子,因此也不需要基于本申请实施例提供的天气粒子渲染装置进行天气粒子的渲染;在另一些情况下,例如若目标天气为雨天、雪天,由于存在对应的天气粒子如雨滴粒子、雪花粒子,因而可以基于本申请实施例提供的天气粒子渲染装置进行天气粒子的渲染。
[0117] 对应的,在粒子生成脚本中写有能够将目标天气的天子粒子对应的粒子数据传入粒子处理模块的代码。
[0118] 其中,粒子数据可以写在粒子生成脚本中,也可以单独的文件进行保存;当粒子数据以单独的文件进行保存时,能够在执行粒子生成脚本时被调用。
[0119] 在满足天气情景更换条件时,脚本执行模块11会触发一天气情景变更信号,执行粒子生成脚本中与目标天气对应的目标代码。
[0120] 示例性的,若存在与目标天气对应的天气粒子,则脚本执行模块11在执行目标代码时,能够将目标天气的天气粒子对应的粒子数据传入到粒子处理模块。
[0121] 具体地,天气情景更换条件,包括但不限于达到以下条件中的至少一种:
[0122] M1:到达与目标天气对应的预设转换时间。
[0123] 在具体实施中,与目标天气对应的预设转换时间是预先设定的;例如游戏中举办某种对天气情景有要求的活动时,例如“堆雪人”活动,需要在游戏场景中渲染雪花粒子;活动会在某个时刻开启,则可以将该活动开启时刻确定为预设转换时间;在该预设转换时间达到时,确认从原天气转换至目标天气。
[0124] M2:游戏的游戏场景发生转化,且转化前的游戏场景与转化后的游戏场景对应的天气不同。
[0125] 此处,游戏场景是指可操控的虚拟游戏角色所在的场景;例如游戏包括多张地图,每张地图对应一个游戏场景。不同游戏场景可以对应相同的天气,也可以对应不同的天气;例如游戏场景包括“长安城”和“天山”,在“天山”场景中,其天气情景为落雪天气;而“长安城”的天气情景为晴天,因此当用户可操控的虚拟游戏角色从“长安城”切换至“天山”后,除了要在图形用户界面上渲染“天山”场景外,还需要将雪花粒子渲染至图形用户界面,以使图形用户界面呈现“天山”对应的落雪天气。
[0126] M3:接收到天气转换指令。
[0127] 在一些游戏中,游戏客户端会运行业务逻辑脚本,该业务逻辑脚本能够基于一定的天气算法,随机的调整游戏中的天气情景。当调整天气情景时,业务逻辑脚本会生成对应的天气转换指令,并将该游戏转换指令传递给脚本执行模块。在该天气转换指令中,携带有目标天气的标识信息。脚本执行模块在接收到天气转换指令后,确定需要更换天气情景,并基于天气转换指令中携带的目标天气的标识信息,执行对应的目标代码,将对应天气粒子的粒子数据传递给粒子处理模块。
[0128] 这里需要注意的是,针对同一渲染执行逻辑的天气粒子,粒子数据传入图形处理模块13的过程只需要执行一次即可;
[0129] 在通常情况下,若在图形处理模块中已经存在了对应的粒子数据,则不需要再传输一次。
[0130] 若天气粒子的渲染执行逻辑发生了变化,粒子数据需要重新传入图形处理模块13,并替换图形处理模块13之前存储的针对同一天气的天气粒子数据。
[0131] Ⅱ:粒子处理模块12,用于在接收到脚本执行模块传输的粒子数据后,将粒子数据进行格式转换,并将进行了格式转换的粒子数据提交至图形处理模块。
[0132] 在具体实施中,粒子处理模块12可以采用下述方式对粒子数据进行格式转换:
[0133] 粒子处理模块12开始工作后,会加载一个主线程单元。
[0134] 该主线程单元与脚本执行模块11进行数据交互,其能够接收脚本执行模块11传输的粒子数据。
[0135] 通过该主线程单元接收到脚本执行模块传输的粒子数据后,粒子处理模块12加载第一子线程单元;通过加载的第一子线程单元对主线程单元传递的粒子数据进行格式转换。
[0136] 此处,在通过第一子线程单元对粒子数据进行格式转换时,该第一子线程单元能够执行数据解析任务;在执行解析任务时,完成对主线程单元传递的粒子数据的格式转换。
[0137] 粒子处理模块12在完成对粒子数据的格式转换后,可以采用下述方式将进行了格式转换的粒子数据提交至图形处理模块:
[0138] 通过加载的第一子线程单元在对主线程单元传递的粒子数据进行格式转换结束后,向主线程单元发送执行完成指令;
[0139] 通过主线程单元在接收到第一子线程单元发送的执行完成指令后,调用第二子线程单元,以使第二子线程单元将进行了格式转换的粒子数据提交至图形处理模块。
[0140] 示例性的,可以采用例如下述步骤a1~a6将进行了格式转换的粒子数据提交至图形处理模块:
[0141] 步骤a1:基于编程语言Python,使用粒子数据生成脚本生成粒子数据,所生成的粒子数据以Python数组的形式保存。
[0142] 步骤a2:脚本执行模块11在执行目标代码时,能够调用与目标代码对应的粒子数据,并将对应粒子数据传递至粒子处理模块12的主线程。
[0143] 步骤a3:主线程在接收到粒子数据后,启动第一线程,并向该第一线程下达数据解析任务指令。
[0144] 步骤a4:第一线程基于主线程下达的数据解析任务指令后,对脚本执行模块11传入的粒子数据执行数据解析任务,将以Python数组的形式保存粒子数据解析到C++中的一个安装顶点缓冲区Instancing Vertex Buffer中,完成数据格式的转化;后,第一线程调用主线程回调函数,也即第一线程通知主线程其已经执行完毕数据解析任务。
[0145] 步骤a5:主线程在接收到第一线程的回调后,调用第二线程的接口,该第二线程主要用于将经过格式转换的粒子数据传递至图形处理模块。
[0146] 步骤a6:第二线程将Instancing Vertex Buffer中保存的经过格式转换后的粒子数据传递至图形处理模块。
[0147] Ⅲ:图形处理模块13又称图形处理器(Graphics Processing Unit,GPU),用于基于虚拟相机实时位置信息,以及进行了格式转换的粒子数据,生成并渲染粒子实例,以在游戏场景中呈现所述目标天气对应的天气情景。
[0148] 示例性的,图形处理模块13在接收到转换了格式的粒子数据后,将转换了格式的粒子数据保存在粒子容器对象中,例如EnvParticles对象。
[0149] 图形处理模块13中的主线程在进行渲染之前,会将粒子容器对象中的粒子数据取出,与预先设定的参数声明进行比对,以实现对粒子数据的验证。在验证通过后,提交到图形处理模块13中对应的统一数据Uniform data中,以供图形处理模块13执行渲染过程。
[0150] 在对天气粒子的渲染执行逻辑进行维护和迭代时,例如要增加一个参数,来控制天气粒子的渐隐,只需要基于补丁Patch或热修复Hotfix修改粒子生成脚本和参数声明,就可以完成相应功能的开发。
[0151] 示例性的,在对天气粒子的渲染执行逻辑进行更改时,客户端设备接收服务器下发的修改文件;该修改文件中携带有渲染执行逻辑更改后的相关信息;更新程序使用修改文件更新粒子生成脚本。
[0152] 若需要对图形处理模块13中的参数声明也进行修改,更新程序将目标参数传入至粒子处理模块12,由粒子处理模块12将目标参数传递给图形处理模块;图形处理模块13在接收到目标参数后,对参数声明进行更新。
[0153] 此时,若图形处理模块13基于原有的粒子数据进行渲染,由于原有的粒子数据与更新后的参数声明不匹配,因此也就无法通过验证,进而要求脚本执行模块传递更新后的粒子数据。
[0154] 在生成粒子实例时,随着用户对游戏虚拟角色的操控,例如前进、后腿、左右移动、转换视角等,都会更改虚拟相机的位置,虚拟相机所捕捉的画面,即为通过图形用户界面呈现给用户的画面。因此图形处理模块在将粒子实例渲染至图形用户界面中之前,首先要获得虚拟相机实时位置信息。
[0155] 在一种实施例中,该虚拟相机实时位置信息可以由游戏引擎传递给粒子处理模块,并由粒子处理模块传递至图形处理模块13。
[0156] 这里需要注意的是,粒子处理模块本身可以为游戏引擎中的一部分。
[0157] 在另一种实施例中,也可以由脚本执行模块周期性获取虚拟相机实时位置信息,并将虚拟相机实时位置信息传入粒子处理模块12;粒子处理模块12在接收到脚本执行模块传入的虚拟相机实时位置信息后,将虚拟相机实时位置信息传递给图形处理模块13。
[0158] 示例性的,脚本执行模块11可以周期性执行获取虚拟相机实时位置信息的获取代码,主动从游戏引擎获取虚拟相机实时位置信息。该获取代码,可以写入粒子生成脚本中,也可以写入到另外一个实时位置信息获取脚本中。
[0159] 获取虚拟相机实时位置信息的周期可以根据需要进行设定。
[0160] 粒子数据至少包括:天气粒子的初始位置信息、天气粒子的移动速度信息、天气粒子的初始大小信息、天气粒子的运动轨迹信息中一种或者多种。
[0161] 图形处理模块13在执行渲染过程时,可以采用下述步骤b1~b3生成粒子实例:
[0162] 步骤b1:基于进行了格式转换的粒子数据,以及虚拟相机实时位置信息,确定各个天气粒子与虚拟相机的相对位置信息。
[0163] 此处,粒子数据是从Uniform data中读取的。
[0164] 图形处理模块13在确定各个天气粒子与虚拟相机的相对位置信息时:
[0165] ①:首先要采用下述方式确定天气粒子在游戏场景中的绝对位置信息:
[0166] 基于初始位置信息、移动速度信息、各个天气粒子对应的当前显示时间、各个天气粒子的初始显示时间,确定各个天气粒子在游戏场景中的绝对位置信息。
[0167] 其中,游戏场景一般为三维场景,游戏场景中的任何一个位置点都能够基于一个三维坐标来表示出来。天气粒子在游戏场景中的绝对位置信息,也即天气粒子所在的位置在游戏场景中的三维坐标。
[0168] 此处,各个天气粒子对应的当前显示时间,是指在将天气粒子渲染至图形用户界面的时间。而随着时间的推移、游戏情景的变化,图形用户界面中显示的内容会不断发生变化。
[0169] ②:基于各个天气粒子在游戏场景中的绝对位置信息,以及虚拟相机实时位置信息,确定各个天气粒子与虚拟相机的相对位置信息。
[0170] 随着时间的推移,天气粒子的位置会不断发生变化,例如雨滴会不断从天空落下,进而,即时虚拟相机的位置没有发生任何的移动,在不同时刻渲染到图形用户界面的天气粒子也会出现位置的变化。该位置是天气粒子与虚拟相机的相对位置信息。
[0171] 步骤b2:基于相对位置信息以及虚拟相机的曝光区域信息,从天气粒子中,确定需要渲染的目标天气粒子。
[0172] 这里,由于天气粒子的范围是比较广的,而虚拟相机的曝光区域有限,因此并不是所有的天气粒子都会渲染至图形用户界面中。对于不会被渲染至图形用户界面中的天气粒子,是不需要生成对应的粒子实例的。
[0173] 因而,要基于相对位置信息和虚拟相机的曝光区域信息,从所有天气粒子中,将要在图形用户界面中渲染的目标天气粒子筛选出来。
[0174] 步骤b3:基于目标天气粒子与虚拟相机的相对位置信息,生成与各个目标天气粒子对应的粒子实例。
[0175] 这里,粒子数据至还包括:天气粒子的初始大小信息。
[0176] 粒子实例,是指将天气粒子实例化。每个天气粒子都可以看作是一个模型,与模型对应有各种参数。部分参数是模型的固有参数,例如形状、材质等;有些参数则是在显示是需要即时计算的参数,例如大小、在图形用户界面中的显示位置、朝向、反光等信息。将模型实例化,即将即时计算的参数计算后,得到的能够完整描述一个粒子的数据。
[0177] 因此,在生成粒子实例时,可以采用下述方法:基于目标天气粒子与虚拟相机的相对位置信息,以及天气粒子的初始大小信息,确定目标天气粒子的显示大小以及显示位置,并基于显示大小以及显示位置,生成与目标天气粒子对应的粒子实例。
[0178] 图形处理模块13在生成粒子实例后,将粒子实例渲染至图形用户界面。
[0179] 具体地,在将粒子实例渲染至图形用户界面中时,可以采用下述步骤c1~c3方式:
[0180] 步骤c1:检测图形处理器GPU的性能参数信息当前是否满足预设性能要求。
[0181] 步骤c2:如果满足,则基于硬件批量渲染方式(Hardware Instancing)渲染所述粒子实例。
[0182] 步骤c3:如果不满足,则基于单例模型渲染方式渲染所述粒子实例。
[0183] 此处,在基于单例模型渲染方式进行粒子实例渲染时,可以基于粒子数据生成单例模型。在该单例模型中包括各个天气粒子对应的面片。在渲染时,直接对单例模型进行渲染即可。
[0184] 本申请实施例能够在满足天气情景更换条件时,触发一天气情景变更信号,将目标天气的天气粒子对应的粒子数据传入到粒子处理模块;粒子处理模块将粒子数据进行格式转换后,提交至图形处理模块,以使图形处理模块能够基于虚拟相机的实时位置信息和进行了格式转换后的粒子数据生成并渲染粒子实例,以在游戏场景中呈现目标天气对应的天气情景。在该方案中,由于各种目标天气的天气粒子都被保存在粒子生成脚本中,只有在需要渲染的时候才会传入到图形处理模块中,而粒子生成脚本则能够方便的进行修改,进而能够更容易的对天气粒子的渲染执行逻辑进行迭代。
[0185] 基于同一发明构思,本申请实施例中还提供了与天气粒子渲染装置对应的天气粒子渲染方法,由于本申请实施例中的方法解决问题的原理与本申请实施例上述天气粒子渲染装置相似,因此装置的实施可以参见装置法的实施,重复之处不再赘述。
[0186] 实施例二
[0187] 参照图2所示,为本申请实施例二提供的一种天气粒子渲染方法的流程图,用于呈现游戏中不同的天气情景,该天气粒子渲染方法用于包括脚本执行模块、粒子处理模块以及图形处理模块的天气粒子渲染方法中;所述天气粒子渲染方法包括:
[0188] S201:所述脚本执行模块在满足天气情景更换条件时,触发一天气情景变更信号,执行粒子生成脚本中与目标天气对应的目标代码,以将与所述目标天气的天气粒子对应的粒子数据传入到粒子处理模块;
[0189] S202:所述粒子处理模块在接收到所述脚本执行模块传输的所述粒子数据后,将所述粒子数据进行格式转换,并将进行了格式转换的粒子数据提交至图形处理模块;
[0190] S203:所述图形处理模块基于虚拟相机实时位置信息,以及所述进行了格式转换的粒子数据,生成并渲染粒子实例,以在游戏场景中呈现所述目标天气对应的天气情景。
[0191] 本申请实施例能够在满足天气情景更换条件时,触发一天气情景变更信号,将目标天气的天气粒子对应的粒子数据传入到粒子处理模块;粒子处理模块将粒子数据进行格式转换后,提交至图形处理模块,以使图形处理模块能够基于虚拟相机的实时位置信息和进行了格式转换后的粒子数据生成并渲染粒子实例,以在游戏场景中呈现目标天气对应的天气情景。在该方案中,由于各种目标天气的天气粒子都被保存在粒子生成脚本中,只有在需要渲染的时候才会传入到图形处理模块中,而粒子生成脚本则能够方便的进行修改,进而能够更容易的对天气粒子的渲染执行逻辑进行迭代。
[0192] 一种可选实施方式中,还包括:脚本执行模块周期性获取所述虚拟相机实时位置信息,并将所述虚拟相机实时位置信息传入所述粒子处理模块;
[0193] 所述粒子处理模块将所述脚本执行模块传输的所述虚拟相机实时位置信息传递给所述图形处理模块。
[0194] 一种可选实施方式中,所述天气情景更换条件包括以下至少一种:
[0195] 到达与所述目标天气对应的预设转换时间;
[0196] 所述游戏的游戏场景发生转化,且转化前的游戏场景与转化后的游戏场景对应的天气不同;
[0197] 接收到天气转换指令。
[0198] 一种可选实施方式中,所述粒子处理模块包括主线程单元和加载的子线程单元;
[0199] 所述粒子处理模块将所述粒子数据进行格式转换,具体包括:
[0200] 通过所述主线程单元接收到所述脚本执行模块传输的所述粒子数据后,加载第一子线程单元;
[0201] 通过加载的所述第一子线程单元对所述主线程单元传递的所述粒子数据进行格式转换。
[0202] 一种可选实施方式中,所述粒子处理模块将进行了格式转换的所述粒子数据提交至图形处理模块,具体包括:
[0203] 通过加载的所述第一子线程单元在对所述主线程单元传递的所述粒子数据进行格式转换结束后,向所述主线程单元发送执行完成指令;
[0204] 通过所述主线程单元在接收到所述第一子线程单元发送的所述执行完成指令后,调用第二子线程单元,以使所述第二子线程单元将进行了格式转换的所述粒子数据提交至所述图形处理模块。
[0205] 一种可选实施方式中,所述图形处理模块基于虚拟相机实时位置信息,以及进行了格式转换的所述粒子数据,生成粒子实例,具体包括:
[0206] 基于进行了格式转换的所述粒子数据,以及所述虚拟相机实时位置信息,确定各个天气粒子与虚拟相机的相对位置信息;
[0207] 基于所述相对位置信息以及所述虚拟相机的曝光区域信息,从所述天气粒子中,确定需要渲染的目标天气粒子;
[0208] 基于所述目标天气粒子与所述虚拟相机的相对位置信息,生成与各个所述目标天气粒子对应的粒子实例。
[0209] 一种可选实施方式中,所述粒子数据包括:所述天气粒子的初始位置信息、以及所述天气粒子的移动速度信息;
[0210] 所述图形处理模块确定各个天气粒子与虚拟相机的相对位置信息,具体包括:
[0211] 基于所述初始位置信息、所述移动速度信息、所述各个天气粒子对应的当前显示时间、各个所述天气粒子的初始显示时间,确定各个所述天气粒子在游戏场景中的绝对位置信息;
[0212] 基于所述各个所述天气粒子在所述游戏场景中的绝对位置信息,以及所述虚拟相机实时位置信息,确定各个天气粒子与所述虚拟相机的相对位置信息。
[0213] 一种可选实施方式中,所述粒子数据还包括:所述天气粒子的初始大小信息;
[0214] 所述图形处理模块基于所述目标天气粒子与所述虚拟相机的相对位置信息,生成与各个所述目标天气粒子对应的粒子实例,具体包括:
[0215] 基于所述目标天气粒子与所述虚拟相机的相对位置信息,以及所述天气粒子的初始大小信息,确定所述目标天气粒子的显示大小以及显示位置,并基于所述显示大小以及显示位置,生成与所述目标天气粒子对应的粒子实例。
[0216] 一种可选实施方式中,所述图形处理模块渲染所述粒子实例,具体包括:
[0217] 所述图形处理模块检测图形处理器GPU的性能参数信息当前是否满足预设性能要求;
[0218] 如果满足,则基于硬件批量渲染方式Hardware Instancing渲染所述粒子实例;
[0219] 如果不满足,则基于单例模型渲染方式渲染所述粒子实例。
[0220] 一种可选实施方式中,还包括:
[0221] 所述图形处理模块在获取到所述粒子处理模块提交的进行了格式转换的粒子数据后,将所述进行了格式转换的粒子数据保存在粒子容器对象中;
[0222] 在需要生成所述粒子实例时,将保存在所述粒子容器对象中的所述进行了格式转换的粒子数据,与预先设定的参数声明进行比对;当比对一致后,将保存在所述粒子容器对象中的所述进行了格式转换的粒子数据提交至统一数据Uniform data中;
[0223] 所述图形处理模块在于虚拟相机实时位置信息,以及所述进行了格式转换的粒子数据,生成粒子实例,具体包括:
[0224] 从所述Uniform data中提取所述进行了格式转换的粒子数据;
[0225] 基于虚拟相机实时位置信息,以及提取的所述进行了格式转换的粒子数据,生成所述粒子实例。
[0226] 实施例三
[0227] 参照图3所示,为本申请实施例三提供的一种天气粒子渲染方法的流程图,该方法的执行主体为计算机设备;所述天气粒子渲染方法包括:
[0228] S301:在满足天气情景更换条件时,触发一天气情景变更信号,执行粒子生成脚本中与目标天气对应的目标代码,以将与所述目标天气的天气粒子对应的粒子数据传入到三维图像渲染引擎;
[0229] S302:调用所述三维图像渲染引擎对所述粒子数据进行格式转换,并将进行了格式转换的粒子数据提交至图形处理器GPU;
[0230] S303:调用所述GPU基于虚拟相机实时位置信息,以及所述进行了格式转换的粒子数据,生成并渲染粒子实例,以在游戏场景中呈现所述目标天气对应的天气情景。
[0231] 本申请实施例能够在满足天气情景更换条件时,触发一天气情景变更信号,将目标天气的天气粒子对应的粒子数据传入到粒子处理模块;粒子处理模块将粒子数据进行格式转换后,提交至图形处理模块,以使图形处理模块能够基于虚拟相机的实时位置信息和进行了格式转换后的粒子数据生成并渲染粒子实例,以在游戏场景中呈现目标天气对应的天气情景。在该方案中,由于各种目标天气的天气粒子都被保存在粒子生成脚本中,只有在需要渲染的时候才会传入到图形处理模块中,而粒子生成脚本则能够方便的进行修改,进而能够更容易的对天气粒子的渲染执行逻辑进行迭代。
[0232] 一种可能的实施方式中,所述调用所述GPU基于虚拟相机实时位置信息,以及所述进行了格式转换的粒子数据,生成粒子实例,包括:
[0233] 基于进行了格式转换的所述粒子数据,以及所述虚拟相机实时位置信息,确定各个天气粒子与虚拟相机的相对位置信息;
[0234] 基于所述相对位置信息以及所述虚拟相机的曝光区域信息,从所述天气粒子中,确定需要渲染的目标天气粒子;
[0235] 基于所述目标天气粒子与所述虚拟相机的相对位置信息,生成与各个所述目标天气粒子对应的粒子实例。
[0236] 一种可能的实施方式中,所述粒子数据包括:所述天气粒子的初始位置信息、以及所述天气粒子的移动速度信息;
[0237] 所述确定各个天气粒子与虚拟相机的相对位置信息,包括:
[0238] 基于所述初始位置信息、所述移动速度信息、所述各个天气粒子对应的当前显示时间、各个所述天气粒子的初始显示时间,确定各个所述天气粒子在所述游戏场景中的绝对位置信息;
[0239] 基于所述各个所述天气粒子在所述游戏场景中的绝对位置信息,以及所述虚拟相机实时位置信息,确定各个天气粒子与所述虚拟相机的相对位置信息。
[0240] 一种可能的实施方式中,所述粒子数据还包括:所述天气粒子的初始大小信息;
[0241] 所述基于所述目标天气粒子与所述虚拟相机的相对位置信息,生成与各个所述目标天气粒子对应的粒子实例,包括:
[0242] 基于所述目标天气粒子与所述虚拟相机的相对位置信息,以及所述天气粒子的初始大小信息,确定所述目标天气粒子的显示大小以及显示位置,并基于所述显示大小以及显示位置,生成与所述目标天气粒子对应的粒子实例。
[0243] 关于方法中的各步骤的详细处理流程描述可以参照上述装置实施例中的相关说明,这里不再详述。
[0244] 参见图4所示,本申请实施例还提供了一种计算机设备400,包括:
[0245] 处理器41、存储器42、和总线43;存储器42用于存储执行指令,包括内存421和外部存储器422;这里的内存421也称内存储器,用于暂时存放处理器41中的运算数据,以及与硬盘等外部存储器422交换的数据,处理器41通过内存421与外部存储器422进行数据交换,当所述计算机设备400运行时,所述处理器41与所述存储器42之间通过总线43通信,处理器41中包括:脚本执行模块411、粒子处理模块412以及图形处理模块413。所述处理器41在用户态执行以下指令:
[0246] 所述脚本执行模块在满足天气情景更换条件时,触发一天气情景变更信号,执行粒子生成脚本中与目标天气对应的目标代码,以将与所述目标天气的天气粒子对应的粒子数据传入到粒子处理模块;
[0247] 所述粒子处理模块在接收到所述脚本执行模块传输的所述粒子数据后,将所述粒子数据进行格式转换,并将进行了格式转换的粒子数据提交至图形处理模块;
[0248] 所述图形处理模块基于虚拟相机实时位置信息,以及所述进行了格式转换的粒子数据,生成粒子实例,并将所述粒子实例渲染至图形用户界面中,以使图形用户界面呈现所述目标天气对应的天气情景。
[0249] 一种可能的实施方式中,处理器41执行的指令中,还包括:脚本执行模块周期性获取所述虚拟相机实时位置信息,并将所述虚拟相机实时位置信息传入所述粒子处理模块;
[0250] 所述粒子处理模块将所述脚本执行模块传输的所述虚拟相机实时位置信息传递给所述图形处理模块。
[0251] 一种可能的实施方式中,处理器41执行的指令中,所述天气情景更换条件包括以下至少一种:
[0252] 到达与所述目标天气对应的预设转换时间;
[0253] 所述游戏的游戏场景发生转化,且转化前的游戏场景与转化后的游戏场景对应的天气不同;
[0254] 接收到天气转换指令。
[0255] 一种可能的实施方式中,处理器41执行的指令中,所述粒子处理模块包括主线程单元和加载的子线程单元;
[0256] 所述粒子处理模块将所述粒子数据进行格式转换,具体包括:
[0257] 通过所述主线程单元接收到所述脚本执行模块传输的所述粒子数据后,加载第一子线程单元;
[0258] 通过加载的所述第一子线程单元对所述主线程单元传递的所述粒子数据进行格式转换。
[0259] 一种可能的实施方式中,处理器41执行的指令中,所述粒子处理模块将进行了格式转换的所述粒子数据提交至图形处理模块,具体包括:
[0260] 通过加载的所述第一子线程单元在对所述主线程单元传递的所述粒子数据进行格式转换结束后,向所述主线程单元发送执行完成指令;
[0261] 通过所述主线程单元在接收到所述第一子线程单元发送的所述执行完成指令后,调用第二子线程单元,以使所述第二子线程单元将进行了格式转换的所述粒子数据提交至所述图形处理模块。
[0262] 一种可能的实施方式中,处理器41执行的指令中,所述图形处理模块基于虚拟相机实时位置信息,以及进行了格式转换的所述粒子数据,生成粒子实例,具体包括:
[0263] 基于进行了格式转换的所述粒子数据,以及所述虚拟相机实时位置信息,确定各个天气粒子与虚拟相机的相对位置信息;
[0264] 基于所述相对位置信息以及所述虚拟相机的曝光区域信息,从所述天气粒子中,确定需要渲染的目标天气粒子;
[0265] 基于所述目标天气粒子与所述虚拟相机的相对位置信息,生成与各个所述目标天气粒子对应的粒子实例。
[0266] 一种可能的实施方式中,处理器41执行的指令中,所述粒子数据包括:所述天气粒子的初始位置信息、以及所述天气粒子的移动速度信息;
[0267] 所述图形处理模块确定各个天气粒子与虚拟相机的相对位置信息,具体包括:
[0268] 基于所述初始位置信息、所述移动速度信息、所述各个天气粒子对应的当前显示时间、各个所述天气粒子的初始显示时间,确定各个所述天气粒子在游戏场景中的绝对位置信息;
[0269] 基于所述各个所述天气粒子在所述游戏场景中的绝对位置信息,以及所述虚拟相机实时位置信息,确定各个天气粒子与所述虚拟相机的相对位置信息。
[0270] 一种可能的实施方式中,处理器41执行的指令中,所述粒子数据还包括:所述天气粒子的初始大小信息;
[0271] 所述图形处理模块基于所述目标天气粒子与所述虚拟相机的相对位置信息,生成与各个所述目标天气粒子对应的粒子实例,具体包括:
[0272] 基于所述目标天气粒子与所述虚拟相机的相对位置信息,以及所述天气粒子的初始大小信息,确定所述目标天气粒子的显示大小以及显示位置,并基于所述显示大小以及显示位置,生成与所述目标天气粒子对应的粒子实例。
[0273] 一种可能的实施方式中,处理器41执行的指令中,所述图形处理模块将所述粒子实例渲染至图形用户界面中,具体包括:
[0274] 检测图形处理器GPU的性能参数信息当前是否满足预设性能要求;
[0275] 如果满足,则基于硬件批量渲染方式Hardware Instancing渲染所述粒子实例;
[0276] 如果不满足,则基于单例模型渲染方式渲染所述粒子实例。
[0277] 一种可能的实施方式中,处理器41执行的指令中,还包括:
[0278] 所述图形处理模块在获取到所述粒子处理模块提交的进行了格式转换的粒子数据后,将所述进行了格式转换的粒子数据保存在粒子容器对象中;
[0279] 在需要生成所述粒子实例时,将保存在所述粒子容器对象中的所述进行了格式转换的粒子数据,与预先设定的参数声明进行比对;当比对一致后,将保存在所述粒子容器对象中的所述进行了格式转换的粒子数据提交至统一数据Uniform data中;
[0280] 所述图形处理模块在于虚拟相机实时位置信息,以及所述进行了格式转换的粒子数据,生成粒子实例,具体包括:
[0281] 从所述Uniform data中提取所述进行了格式转换的粒子数据;
[0282] 基于虚拟相机实时位置信息,以及提取的所述进行了格式转换的粒子数据,生成所述粒子实例。
[0283] 本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的天气粒子渲染方法的步骤。
[0284] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0285] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0286] 另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0287] 所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0288] 最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。

当前第1页 第1页 第2页 第3页
相关技术
存储介质相关技术
方法装置相关技术
蔡坤雨发明人的其他相关专利技术