CN114115873A - 着色器数据处理方法、装置、设备及存储介质 - Google Patents

着色器数据处理方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN114115873A
CN114115873A CN202111367790.3A CN202111367790A CN114115873A CN 114115873 A CN114115873 A CN 114115873A CN 202111367790 A CN202111367790 A CN 202111367790A CN 114115873 A CN114115873 A CN 114115873A
Authority
CN
China
Prior art keywords
macro
shader
combination
equal
game
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.)
Pending
Application number
CN202111367790.3A
Other languages
English (en)
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.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network 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 Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN202111367790.3A priority Critical patent/CN114115873A/zh
Publication of CN114115873A publication Critical patent/CN114115873A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/60Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • Image Generation (AREA)

Abstract

本申请提供一种着色器数据处理方法、装置、设备及存储介质。该方法包括:获取M个终端设备的操作系统的标识和M个宏集合,每个终端设备对应一个宏集合,每个宏集合包括N个宏组合,每个宏组合是每个终端设备基于源代码运行游戏时所需的多个用于着色的宏设置宏取值得到的,M≥2,N≥1,M和N均为整数;根据M个操作系统的标识对M个宏集合分类,得到P个分类结果,每个分类结果中包括相同操作系统的标识对应的X个宏集合,1≤X≤M,X为整数,2≤P≤M,P为整数;将X个宏集合中每个宏集合的N个宏组合对应的源代码进行编译,得到包括Y个目标着色器数据的着色器缓存,Y为M与X的乘积。

Description

着色器数据处理方法、装置、设备及存储介质
技术领域
本申请涉及游戏技术领域,尤其涉及一种着色器数据处理方法、装置、设备及存储介质。
背景技术
着色器(Shader)是用于实现图像渲染和替代固定渲染管线的可编辑程序。
在游戏运行过程中,玩家的终端设备在使用着色器时,需要将源代码编译为终端设备能够识别的代码,从而进行游戏画面的渲染。而游戏画面渲染过程中该编译过程会耗费时间,导致玩家在游戏运行过程中出现卡顿。针对该问题,目前是在开发阶段通过预先将源代码中的宏进行组合,并基于所有宏组合生成着色器缓存,之后,将根据着色器缓存生成的游戏安装包下发至玩家的终端设备。如此,玩家可以省去编译的过程,达到游戏运行流畅的效果。
然而,玩家的终端设备是不同操作系统的,预先指定宏组合的方式在面对不同操作系统都需要编译的情形时,会存在着色器缓存的生成效率低的问题,进而影响游戏开发效率。
发明内容
本申请提供一种着色器数据处理方法、装置、设备及存储介质,用以解决着色器缓存的生成效率低问题。
第一方面,本申请提供一种着色器数据处理方法,应用于服务器,所述方法包括:获取M个终端设备的操作系统的标识和M个宏集合,每个终端设备对应一个宏集合,每个宏集合包括N个宏组合,每个所述宏组合是每个所述终端设备基于源代码运行所述游戏时所需的多个用于着色的宏设置宏取值得到的组合,所述M为大于或等于2的整数,所述N为大于或等于1的整数;根据所述M个操作系统的标识对所述M个宏集合进行分类,得到P个分类结果,每个所述分类结果中包括相同操作系统的标识对应的X个宏集合,所述X为大于或等于1且小于或等于M的整数,所述P为大于或等于2且小于或等于M的整数;将所述X个宏集合中每个宏集合的N个宏组合对应的源代码进行编译,得到所述游戏的着色器缓存,所述着色器缓存包括:Y个目标着色器数据,所述Y为所述M与所述X的乘积。
第二方面,本申请提供一种着色器缓存生成方法,应用于终端设备,所述方法包括:在基于源代码运行游戏时,根据所述游戏所需的多个用于着色的宏设置宏取值得到的组合,构建宏集合,所述宏集合包括:N个宏组合,所述N为大于或等于1的整数;向服务器发送所述宏集合,所述宏集合用于生成着色器缓存。
第三方面,本申请提供一种着色器数据处理装置,应用于服务器,所述装置包括:获取模块,用于获取M个终端设备的操作系统的标识和M个宏集合,每个终端设备对应一个宏集合,每个宏集合包括N个宏组合,每个所述宏组合是每个所述终端设备基于源代码运行所述游戏时所需的多个用于着色的宏设置宏取值得到的组合,所述M为大于或等于2的整数,所述N为大于或等于1的整数;分类模块,用于根据所述M个操作系统的标识对所述M个宏集合进行分类,得到P个分类结果,每个所述分类结果中包括相同操作系统的标识对应的X个宏集合,所述X为大于或等于1且小于或等于M的整数,所述P为大于或等于2且小于或等于M的整数;编译模块,用于将所述X个宏集合中每个宏集合的N个宏组合对应的源代码进行编译,得到所述游戏的着色器缓存,所述着色器缓存包括:Y个目标着色器数据,所述Y为所述M与所述X的乘积。
第四方面,本申请提供一种着色器缓存生成装置,应用于终端设备,所述装置包括:构建模块,用于在基于源代码运行游戏时,根据所述游戏所需的多个用于着色的宏设置宏取值得到的组合,构建宏集合,所述宏集合包括:N个宏组合,所述N为大于或等于1的整数;发送模块,用于向服务器发送所述宏集合,所述宏集合用于生成着色器缓存。
第五方面,本申请提供一种电子设备,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如第一方面或第二方面所述的方法。
第六方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如第一方面或第二方面所述的方法。
本申请提供的着色器数据处理方法、装置、设备及存储介质,通过获取M个终端设备的操作系统的标识和M个宏集合,每个终端设备对应一个宏集合,每个宏集合包括N个宏组合,每个宏组合是每个终端设备基于源代码运行游戏时所需的多个用于着色的宏设置宏取值得到的,M≥2,N≥1,M和N均为整数;根据M个操作系统的标识对M个宏集合分类,得到P个分类结果,每个分类结果中包括相同操作系统的标识对应的X个宏集合,1≤X≤M,X为整数,2≤P≤M,P为整数;将X个宏集合中每个宏集合的N个宏组合对应的源代码进行编译,得到包括Y个目标着色器数据的游戏的着色器缓存,Y为M与X的乘积。由于宏组合是每个终端设备基于源代码运行游戏时所需的多个用于着色的宏设置宏取值得到的组合,而基于源代码运行游戏时所需的宏组合为有效宏组合,也即在玩家运行游戏时实际会用到的宏组合,因此,在跨平台的编译过程中,能够减少编译的数据量,降低编译的耗时,提高着色器缓存的生成效率,也不会出现遗漏。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请实施例提供的应用场景示意图;
图2为本申请实施例提供的着色器数据处理方法的流程图一;
图3为本申请实施例提供的着色器数据处理方法的流程图二;
图4为本申请实施例提供的一个应用场景的示意图;
图5为本申请实施例提供的另一种应用场景图;
图6为本申请实施例提供的一种着色器数据处理装置的结构示意图;
图7为本申请实施例提供的一种着色器数据处理装置的结构示意图;
图8为本申请实施例提供的电子设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
游戏画面的渲染需要依赖着色器(Shader)来实现,Shader是一段用于对游戏画面进行渲染的程序代码,能够指示图形处理器(Graphics Processing Unit,GPU)在什么位置进行渲染以及如何渲染。可以理解为着色器是GPU将针对其必须渲染的目标模型的每个顶点和像素执行的一段代码,其中,目标模型可以是游戏角色、建筑物、落叶、草地等三维模型。
在相关技术中,着色器在开发过程中,是采用高级着色器语言(High LevelShader Language,HLSL)编写着色器源代码,生成HLSL格式的文件。HLSL文件能够直接被Windows操作系统所识别。而玩家的终端设备可能是ios或android操作系统,这些操作系统即为不同的平台。因此,玩家的终端设备需要将HLSL文件编译为玩家的终端设备的操作系统能够识别的格式,例如ios操作系统所支持的metal格式,android操作系统所支持的glsl格式。而该编译过程比较耗时,若是在玩家的终端设备上进行编译,则会造成游戏卡顿,对玩家带来不好的游戏体验。因此,目前是在游戏引擎中增加着色器缓存(Shader Cache)机制。Shader Cache机制是指在Shader开发过程中测试人员的终端设备上预先对HLSL文件进行编译,以生成Shader Cache,并将Shader Cache打包生成待发布的游戏包,玩家在下载游戏客户端时,Shader Cache会跟随游戏客户端一起安装至玩家的终端设备上。如此,玩家的终端设备就可以省去编译过程,节省编译的耗时,在游戏运行过程中不会造成卡顿。
相关技术中,在生成Shader Cache时,是由开发人员编辑着色器文件,并指定着色器文件的宏取值,并生成着色器缓存。宏是在一段Shader代码中的一个代码片段,用来实现一个功能。通过给宏指定不同的值,可以用来选择将Shader代码的不同片段组合起来。宏组合可以理解为,多个宏不同取值的组合。举例来说,编辑着色器文件是指对每个宏设置可能的取值,例如着色器文件中包括宏A,则编辑着色器文件可以理解为是对宏A设置0和1的取值,而0和1的取值分别对应不同的代码逻辑。指定着色器文件的宏开关是指确定每个宏开关的取值。之后根据每个宏开关的取值来实现将Shader代码的不同片段进行组合。每个组合对应一个着色器文件,存储在Shader Cache中。
宏开关组合目前有两种方式,一种方式是全量组合,即假设着色器文件中包括n个宏开关,则全量组合会产生2n种宏开关组合,若宏开关数量很多,就会出现宏开关组合爆炸的情形。
另外一种方式为手动指定的过程,若宏开关数量很多,这对于开发人员来说是一个很大的工作量,费时费力。
而上述两种方式针对动态宏,动态宏需要根据游戏逻辑来动态设置,例如游戏中游戏角色被击打之后,全身变为红色,这个需要根据游戏实际的运行情况,即游戏角色是否被击打才能确定宏的取值,所以无法预先进行全量组合或者手动指定。
而在跨平台的编译过程中,即将源代码编译为不同格式的目标着色器数据时,会进一步增加编译的数据量,增加耗时,降低着色器缓存的生成效率低,可能还会存在遗漏。并且,会导致游戏的安装包较大,以及每增加一个宏时补丁安装包的更新量较大。
另外,在开发过程中静态设置宏组合的方式还存在无效宏组合的问题,即假设有两个宏MACRO_1和MACRO_2,其取值均可以是0或1,则所有的宏组合就是如下4种宏组合:{MACRO_1:0,MACRO_2:0},{MACRO_1:0,MACRO_2:1},{MACRO_1:1,MACRO_2:0},{MACRO_1:1,MACRO_2:1}。而实际的游戏运行过程中,可能只存在一种情况{MACRO_1:0,MACRO_2:1},{MACRO_1:0,MACRO_2:1}即为有效宏组合,其余的3种宏组合是无效的。而手动指定有效宏开关在面对大量宏时,很难从中找出有效宏组合。
针对上述技术问题,本申请的技术构思为:在游戏运行过程中基于源代码运行游戏时所需的多个宏进行宏取值的设置之后,得到设置好的宏组合,通过动态收集这些宏组合,并对这些宏组合进行分类,从而生成不同操作系统下的着色器缓存,以实现在玩家的终端设备上省去编译的过程,解决玩家的终端设备在编译时造成的游戏卡顿的问题,提高游戏运行的流畅度。
图1为本申请实施例提供的应用场景示意图。如图1所示,该应用场景包括M个终端设备11和服务器12;其中,每个终端设备11可以是智能手机、个人计算机(PersonalComputer,PC)等可以运行游戏的设备。服务器12可以是单台服务器,也可以是包括多台服务器的服务器集群。其中,终端设备11为开发人员所在的终端设备。
下面基于图1所示的场景,对本申请实施例提供的着色器数据处理方法进行详细介绍。
图2为本申请实施例提供的着色器数据处理方法的流程图一。如图2所示,该着色器数据处理方法,包括如下步骤:
S201、终端设备在基于源代码运行游戏时,根据游戏所需的多个用于着色的宏设置宏取值得到的组合,构建宏集合,宏集合包括N个宏组合,N为大于或等于1的整数。
其中,N个宏组合中每个宏组合是终端设备基于源代码运行游戏时对所需的多个用于着色的宏设置宏取值得到的组合。
图3为本申请实施例提供的着色器数据处理方法的流程图二。如图3所示,根据游戏所需的多个用于着色的宏设置宏取值得到的组合,构建宏集合,包括:
步骤a、获取终端设备基于源代码运行游戏时针对所需的多个宏设置宏取值得到的宏组合。
在本实施例中,源代码可以为开发人员编写的HLSL格式的着色器文件中的代码,该着色器文件使用HLSL语言编写,终端设备CPU拿到的是HLSL格式的源代码,终端设备无法直接运行源代码,还需要将源代码编译为终端设备能够识别的格式,例如Metal格式、GLSL格式。应理解,HLSL格式的着色器文件仅为示例性说明,凡是需要GPU进行编译才可以使用的代码都可以称之为源代码。
本实施例中的终端设备为游戏开发过程中测试人员的终端设备。测试人员的终端设备上运行有游戏,在游戏运行过程中,终端设备根据游戏逻辑或者材质等静态文件,指定终端设备在基于源代码运行游戏时所需要的多个宏中每个宏的取值,从而得到宏组合。也可以理解为是在游戏运行过程中,终端设备根据游戏的实际运行情况设置当前运行情况所需的多个宏中每个宏的取值,从而得到宏组合。
举例来说,游戏运行过程中需要两个宏,即宏MACRO_1和宏MACRO_2,该两个宏的取值都是0或1。则是针对宏MACRO_1和宏MACRO_2设置其取值为0或者取值为1,假设针对宏MACRO_1设置其取值为0,针对宏MACRO_2设置其取值为1,则得到的宏组合即为:{MACRO_1:0,MACRO_2:1}。
在一个具体的示例中,假设游戏运行过程中,在特定时间进入特定场景,打了特定的怪兽,需要出现一种特效,例如冒烟成焦炭,则冒烟的显示位置、焦炭的显示位置、冒烟的颜色和焦炭的颜色可以分别对应一个宏,这些宏组合起来就可以得到宏组合。
步骤b、根据宏组合在着色器缓存中查找是否存在宏组合对应的着色器数据,着色器缓存中存储至少一个宏组合对应的目标着色器数据。
步骤c、若在着色器缓存中未查找到宏组合对应的着色器数据,则获取终端设备的操作系统的标识,并生成终端设备的操作系统的标识与宏组合的对应关系。
仍然以上述特效为例,若该特效在之前的游戏运行过程中已出现过,则着色器缓存中会缓存有该特效对应的着色器数据。若该特效是第一次出现,则着色器缓存中不存在该特效对应的着色器数据,就需要终端设备根据该宏组合的源代码进行编译,得到该宏组合的目标着色器数据,并将该宏组合的目标着色器数据存储至着色器缓存中,以便下次在需要使用该宏组合的目标着色器数据时,可以直接从着色器缓存中获取到,即若在着色器缓存中查找到宏组合对应的着色器数据,则根据宏组合对应的着色器数据进行着色。经过一段时间的运行游戏,着色器缓存中就会存储有越来越多的宏组合的目标着色器数据。
步骤d、将终端设备的操作系统的标识与宏组合的对应关系存储至空集合中。
步骤e、判断是否达到预设条件;
步骤f1、若未达到预设条件时返回步骤a。
步骤f2、若达到预设条件,将宏集合发送至服务器,宏集合是根据达到预设条件时空集合中包括的终端设备的操作系统的标识与宏组合的对应关系得到的,其中,预设条件为当前时间达到预定时间,或者,空集合中终端设备的操作系统的标识与宏组合的对应关系的数量达到预设数量。
本实施例中,各个终端设备所生成的着色器缓存都是在终端设备本地的,且内存很大,如果各个终端设备将自身生成的着色器缓存直接发送至服务器,发送的数据量将会很大,而且还容易存在遗漏。因而本实施例将终端设备的操作系统的标识与宏组合的对应关系存储至空集合中,直至达到预设时间或者空集合中存储的着色器数据达到一定数量时,将其发送至服务器。
在一些实施例中,图1中的服务器12还可以由M个终端设备中的其中一个终端设备来代替。即M个终端设备中每个终端设备都进行宏集合的收集,且前M-1个终端设备将所收集到的宏集合全部发送至第M个终端设备,第M个终端设备执行服务器所实现的功能对应的方法步骤。
S202、终端设备向服务器发送宏集合,宏集合用于生成游戏的着色器缓存。
在本实施例中,可以是多个终端设备同时执行步骤S201和步骤S202,并将各自收集到的宏集合发送至服务器。服务器根据每个终端设备的宏集合可以生成游戏的着色器缓存。
S203、服务器获取M个终端设备的操作系统的标识和M个宏集合,每个终端设备对应一个宏集合,每个宏集合包括N个宏组合,每个宏组合是每个终端设备基于源代码运行游戏时所需的多个用于着色的宏设置宏取值得到的组合,M为大于或等于2的整数,N为大于或等于1的整数。
本步骤中,M个终端设备的每个宏集合中宏组合的数量可以相等,也可以不相等。
可选的,终端设备的操作系统的标识用于表示该操作系统是安卓系统、IOS系统或者windows系统。
具体的,获取M个终端设备的操作系统的标识和M个宏集合,包括:接收M个终端设备发送的M个宏集合和M个终端设备的操作系统的标识。
在步骤S201至步骤S203中,是由M个终端设备收集各自在基于源代码运行游戏时生成的宏组合,以构建宏集合。在一些具体的实施例中,可以是M个终端设备各自将收集的宏组合记录在日志(log)中,并将日志上传至服务器。可选地,各个终端设备还可以是定时将收集的宏集合上传至服务器。
S204、服务器根据M个操作系统的标识对M个宏集合进行分类,得到P个分类结果,每个分类结果中包括相同操作系统的标识对应的X个宏集合,X为大于或等于1且小于或等于M的整数,P为大于或等于2且小于或等于M的整数。
具体的,根据M个操作系统的标识对M个宏集合进行分类,得到P个分类结果,包括:针对M个宏集合,将M个宏集合中相同操作系统的标识的宏集合划分至一个分类结果中,得到P个分类结果。
举例来说,服务器接收到100个宏集合,该100个宏集合中来自安卓操作系统的宏集合的数量为30个,来自IOS操作系统的宏集合的数量为50个,来自鸿蒙操作系统的宏集合的数量为20个。则本步骤是将30个来自安卓操作系统的宏集合划分至一个分类结果中,将50个来自IOS操作系统的宏集合划分至一个分类结果中,以及将20个来自鸿蒙操作系统的宏集合划分至一个分类结果中。
S205、服务器将X个宏集合中每个宏集合的N个宏组合对应的源代码进行编译,得到游戏的着色器缓存,着色器缓存包括:Y个目标着色器数据,Y为M与X的乘积。
具体的,服务器是针对N个宏组合中每个宏组合对应的源代码进行编译,得到每个宏组合对应的目标着色器数据,GPU可以直接使用该目标着色器数据进行渲染,而不再需要进行编译。
需要说明的是,本步骤中是针对每种类型的操作系统都生成一着色器缓存,该着色器缓存将会生成不同操作系统的安装包,用于供不同操作系统的玩家的终端设备下载安装游戏的客户端。
在步骤S205之后,还可以包括如下步骤S206:
S206、服务器根据着色器缓存生成游戏的安装包。
图4为本申请实施例提供的一个应用场景的示意图。
如图4所示,该应用场景中包括开发端、服务器和用户端,其中,开发端可以是图1中示出的终端设备11,服务器可以是图1中示出的服务器12,用户端为玩家的终端设备,可以是智能手机、平板电脑和台式电脑等。当服务器生成游戏的安装包之后,玩家可以直接将该安装包下载至玩家的终端设备,并在运行游戏过程中,直接从着色器缓存中查找到宏组合的着色器数据,不需要再进行编译,从而节省编译的时间,解决游戏卡顿的问题,达到提高游戏运行流畅度的效果。
本实施例通过获取M个终端设备的操作系统的标识和M个宏集合,每个终端设备对应一个宏集合,每个宏集合包括N个宏组合,每个宏组合是每个终端设备基于源代码运行游戏时所需的多个用于着色的宏设置宏取值得到的,M≥2,N≥1,M和N均为整数;根据M个操作系统的标识对M个宏集合分类,得到P个分类结果,每个分类结果中包括相同操作系统的标识对应的X个宏集合,1≤X≤M,X为整数,2≤P≤M,P为整数;将所述X个宏集合中每个宏集合的N个宏组合对应的源代码进行编译,得到包括Y个目标着色器数据的游戏的着色器缓存,Y为M与X的乘积。由于宏组合是每个终端设备基于源代码运行游戏时所需的多个用于着色的宏设置宏取值得到的组合,而基于源代码运行游戏时所需的宏组合为有效宏组合,也即在玩家运行游戏时实际会用到的宏组合,因此,在跨平台的编译过程中,能够减少编译的数据量,降低编译的耗时,提高着色器缓存的生成效率,也不会出现遗漏。另外,也可以减少补丁安装包中着色器缓存的着色器数据的内存,提高安装包的更新效率。而玩家在游戏运行过程中,在着色器缓存中查找宏组合对应的着色器数据时,查找到的也是有效宏组合,提高玩家的游戏运行过程中在着色器缓存中查找所需宏组合的命中率。
在上述实施例中,服务器需要根据不同类型的操作系统的分类结果生成着色器缓存,若不同类型的操作系统的分类结果中宏集合的数量较多,则会造成服务器的计算压力。为了降低服务器压力,本申请的实施例还可以提供一种并行处理方式,即针对每种类型的操作系统增加至少一个第二终端设备,至少一个第二终端设备用于根据每种类型的操作系统的分类结果中的宏集合生成着色器缓存。具体的实施方式如下步骤A至步骤F的介绍:
步骤A、M个第一终端设备在基于源代码运行游戏时,根据游戏所需的多个用于着色的宏设置宏取值得到的组合,构建M个宏集合,每个宏集合包括N个宏组合。
具体的,每个第一终端设备根据游戏所需的多个用于着色的宏设置宏取值得到的组合,构建宏集合,包括:
步骤a、第一终端设备获取第一终端设备基于源代码运行游戏时针对所需的多个宏设置宏取值得到的宏组合。
步骤b、第一终端设备根据宏组合在着色器缓存中查找是否存在宏组合对应的着色器数据,着色器缓存中存储至少一个宏组合对应的目标着色器数据。
步骤c、第一终端设备在着色器缓存中未查找到宏组合对应的着色器数据时,则获取终端设备的操作系统的标识,并生成终端设备的操作系统的标识与宏组合的对应关系。
步骤d、第一终端设备将第一终端设备的操作系统的标识与宏组合的对应关系存储至空集合中,并返回步骤a,直至达到预设条件时,将宏集合发送至服务器,宏集合是根据达到预设条件时空集合中包括的终端设备的操作系统的标识与宏组合的对应关系得到的,其中,预设条件为当前时间达到预定时间,或者,空集合中终端设备的操作系统的标识与宏组合的对应关系的数量达到预设数量。
步骤B、各个第一终端设备向服务器发送宏集合,宏集合用于生成游戏的着色器缓存。
步骤C、服务器获取M个第一终端设备的操作系统的标识和M个宏集合,每个第一终端设备对应一个宏集合,每个宏集合包括N个宏组合,每个宏组合是每个第一终端设备基于源代码运行游戏时所需的多个用于着色的宏设置宏取值得到的组合,M为大于或等于2的整数,N为大于或等于1的整数。
具体的,获取M个第一终端设备的操作系统的标识和M个宏集合,包括:接收M个第一终端设备发送的M个宏集合和M个第一终端设备的操作系统的标识。
步骤D、服务器根据M个操作系统的标识对M个宏集合进行分类,得到P个分类结果,每个分类结果中包括相同操作系统的标识对应的X个宏集合,X为大于或等于1且小于或等于M的整数,P为大于或等于2且小于或等于M的整数。
其中,对于步骤A至步骤E可以参见图2所示的实施例中相类似的步骤的具体实施方式的介绍,此处不再重复介绍。
步骤E、服务器将P个分类结果发送至P个第二终端设备,每个第二终端设备用于对一个分类结果进行处理。
本实施例中,是由一个第二终端设备处理一种类型的操作系统的宏集合,即每个第二终端设备根据一种类型的操作系统对应的宏集合生成着色器缓存。
图5为本申请实施例提供的另一种应用场景图。如图5所示,该应用场景包括M个第一终端设备51、服务器52和3个第二终端设备53;其中,第一终端设备51可以是智能手机、个人计算机(Personal Computer,PC)等可以运行游戏的设备。服务器52可以是单台服务器,也可以是包括多台服务器的服务器集群。第二终端设备53可以是台式电脑、笔记本电脑、平板电脑等。
3个第二终端设备分别称为第二终端设备A、第二终端设备B和第二终端设备C,则第二终端设备A、第二终端设备B和第二终端设备C分别用于根据来自安卓操作系统、IOS操作系统、鸿蒙操作系统的分类结果生成着色器缓存。
应理解,图5中仅示出了3种类型的操作系统,实际中,可以不限于该3种操作系统,而第二终端设备的数量也可以根据实际的操作系统的类型来设置。
另外,需要说明的是,图5中针对每种类型的操作系统的宏集合分别设置了一个第二终端设备,而实际应用中,每种类型的操作系统的宏集合并不限制为一个,可以是至少两个第二终端设备。
而在一些可选的实施例中,还可以是将图5中M个第一终端设备分别与各自对应的操作系统的第二终端设备相连接,从而使每个第一终端设备直接将收集到的宏集合发送至与自身的操作系统类型相同的第二终端设备,以生成着色器缓存。举例来说,第一终端设备的操作系统为安卓,则第一终端设备是将自身收集到的宏集合发送至操作系统为安卓系统的第二终端设备,此时,第二终端设备可以直接根据该宏集合生成着色器缓存,并进一步生成游戏的安装包。
步骤F、每个第二终端设备将X个宏集合中每个宏集合的N个宏组合对应的源代码进行编译,得到游戏的着色器缓存,着色器缓存包括:Y个目标着色器数据,Y为M与X的乘积。
在步骤E之后,还可以包括如下步骤F:
步骤F、每个第二终端设备根据着色器缓存生成游戏的安装包。
其中,步骤F可以参见上述实施例中步骤S206的具体实施方式的介绍。
本实施例通过针对来自不同类型的操作系统的宏集合分别设置至少一个终端设备,以使该至少一个终端设备基于一种类型的操作系统的宏集合生成着色器缓存,从而实现并行生成着色器缓存,提高着色器缓存的生成效率的效果。
在上述实施例的基础上,为了避免服务器同时接收到M个宏集合时,无法及时处理的情形,可以是针对每一种类型的操作系统设置一预定时间,则该种类型的操作系统的终端设备将在预定时间上传宏集合至服务器,而每种类型的操作系统对应的终端设备的预定时间之间具有时间间隔,该时间间隔应当设置为使服务器能够对该种类型的操作系统的宏集合进行处理所需的最大时间。
举例来说,终端设备A和终端设备B为安卓操作系统,终端设备C和终端设备D为IOS操作系统,则可以设置终端设备A和终端设备B上传宏集合的时间,与终端设备C和终端设备D上传宏集合的时间之间间隔10分钟,以便服务器能够对终端设备A和终端设备B的宏集合进行处理。
在上述方法实施例的基础上,图6为本申请实施例提供的一种着色器数据处理装置的结构示意图,如图6所示,该装置包括:获取模块61、分类模块62和编译模块63;
其中,获取模块61,用于获取M个终端设备的操作系统的标识和M个宏集合,每个终端设备对应一个宏集合,每个宏集合包括N个宏组合,每个所述宏组合是每个所述终端设备基于源代码运行所述游戏时所需的多个用于着色的宏设置宏取值得到的组合,所述M为大于或等于2的整数,所述N为大于或等于1的整数;
分类模块62,用于根据所述M个操作系统的标识对所述M个宏集合进行分类,得到P个分类结果,每个所述分类结果中包括相同操作系统的标识对应的X个宏集合,所述X为大于或等于1且小于或等于M的整数,所述P为大于或等于2且小于或等于M的整数;
编译模块63,用于将所述X个宏集合中每个宏集合的N个宏组合对应的源代码进行编译,得到所述游戏的着色器缓存,所述着色器缓存包括:Y个目标着色器数据,所述Y为所述M与所述X的乘积。
在一些实施例中,分类模块62根据所述M个操作系统的标识对所述M个宏集合进行分类,得到P个分类结果,具体包括:针对所述M个宏集合,将所述M个宏集合中相同操作系统的标识的宏集合划分至一个分类结果中,得到P个分类结果。
在一些实施例中,获取模块61获取M个终端设备的操作系统的标识和M个宏集合,具体包括:接收M个终端设备发送的M个宏集合和M个终端设备的操作系统的标识。
在一些实施例中,该装置还包括:生成模块64,用于根据所述着色器缓存生成所述游戏的安装包。
本申请实施例提供的着色器数据处理装置,可用于执行上述实施例中着色器数据处理方法的技术方案,其实现原理和技术效果类似,在此不再赘述。
在上述方法实施例的基础上,图7为本申请实施例提供的一种着色器数据处理装置的结构示意图,如图7所示,该装置包括:构建模块71和发送模块72;
构建模块71,用于在基于源代码运行游戏时,根据所述游戏所需的多个用于着色的宏设置宏取值得到的组合,构建宏集合,所述宏集合包括:N个宏组合,所述N为大于或等于1的整数;
发送模块72,用于向服务器发送所述宏集合,所述宏集合用于生成着色器缓存。
在一些实施例中,构建模块71根据所述游戏所需的多个用于着色的宏设置宏取值得到的组合,构建宏集合,具体包括:
步骤a、获取宏组合,所述宏组合是终端设备针对游戏运行时所需的多个宏设置宏取值得到的组合;
步骤b、根据所述宏组合在着色器缓存中查找是否存在所述宏组合对应的着色器数据,所述着色器缓存中存储至少一个宏组合对应的目标着色器数据;
步骤c、若在着色器缓存中未查找到所述宏组合对应的目标着色器数据,则获取所述终端设备的操作系统的标识,并生成所述终端设备的操作系统的标识与所述宏组合的对应关系;
步骤d、将所述终端设备的操作系统的标识与所述宏组合的对应关系存储至空集合中,并返回步骤a,直至达到预设条件时,将宏集合发送至服务器,所述宏集合是根据达到预设条件时所述空集合中包括的所述终端设备的操作系统的标识与所述宏组合的对应关系得到的,其中,所述预设条件为当前时间达到预定时间,或者,所述空集合中所述终端设备的操作系统的标识与所述宏组合的对应关系的数量达到预设数量。
在一些实施例中,该装置还包括:接收模块73,用于接收开发端的终端设备发送的宏组合对应的源代码。
本申请实施例提供的着色器数据处理装置,可用于执行上述实施例中着色器数据处理方法的技术方案,其实现原理和技术效果类似,在此不再赘述。
需要说明的是,应理解以上装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。例如,分类模块62可以为单独设立的处理元件,也可以集成在上述装置的某一个芯片中实现,此外,也可以以程序代码的形式存储于上述装置的存储器中,由上述装置的某一个处理元件调用并执行以上分类模块62的功能。其它模块的实现与之类似。此外这些模块全部或部分可以集成在一起,也可以独立实现。这里的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
图8为本申请实施例提供的电子设备的结构示意图。如图8所示,该电子设备可以包括:收发器81、处理器82、存储器83。
处理器82执行存储器存储的计算机执行指令,使得处理器82执行上述实施例中的方案。处理器82可以是通用处理器,包括中央处理器CPU、网络处理器(network processor,NP)等;还可以是数字信号处理器DSP、专用集成电路ASIC、现场可编程门阵列FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
存储器83通过系统总线与处理器82连接并完成相互间的通信,存储器83用于存储计算机程序指令。
收发器81可以用于接收宏集合和操作系统的标识。
系统总线可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。系统总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。收发器用于实现数据库访问装置与其他计算机(例如客户端、读写库和只读库)之间的通信。存储器可能包含随机存取存储器(randomaccess memory,RAM),也可能还包括非易失性存储器(non-volatile memory)。
本申请实施例提供的电子设备,可以是上述实施例的终端设备或服务器。
本申请实施例还提供一种运行指令的芯片,该芯片用于执行上述实施例中着色器数据处理方法的技术方案。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,当该计算机指令在计算机上运行时,使得计算机执行上述实施例着色器数据处理方法的技术方案。
本申请实施例还提供一种计算机程序产品,该计算机程序产品包括计算机程序,其存储在计算机可读存储介质中,至少一个处理器可以从计算机可读存储介质读取计算机程序,至少一个处理器执行计算机程序时可实现上述实施例中着色器数据处理方法的技术方案。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由上面的权利要求书指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。

Claims (11)

1.一种着色器数据处理方法,其特征在于,应用于服务器,所述方法包括:
获取M个终端设备的操作系统的标识和M个宏集合,每个终端设备对应一个宏集合,每个宏集合包括N个宏组合,每个所述宏组合是每个所述终端设备基于源代码运行游戏时所需的多个用于着色的宏设置宏取值得到的组合,所述M为大于或等于2的整数,所述N为大于或等于1的整数;
根据所述M个操作系统的标识对所述M个宏集合进行分类,得到P个分类结果,每个所述分类结果中包括相同操作系统的标识对应的X个宏集合,所述X为大于或等于1且小于或等于M的整数,所述P为大于或等于2且小于或等于M的整数;
将所述X个宏集合中每个宏集合的N个宏组合对应的源代码进行编译,得到所述游戏的着色器缓存,所述着色器缓存包括:Y个目标着色器数据,所述Y为所述M与所述X的乘积。
2.根据权利要求1所述的方法,其特征在于,所述根据所述M个操作系统的标识对所述M个宏集合进行分类,得到P个分类结果,包括:
针对所述M个宏集合,将所述M个宏集合中相同操作系统的标识的宏集合划分至一个分类结果中,得到P个分类结果。
3.根据权利要求1或2所述的方法,其特征在于,所述获取M个终端设备的操作系统的标识和M个宏集合,包括:
接收M个终端设备发送的M个宏集合和M个终端设备的操作系统的标识。
4.根据权利要求1或2所述的方法,其特征在于,所述将所述X个宏集合中每个宏集合的N个宏组合对应的源代码进行编译,得到Y个目标着色器数据之后,还包括:
根据所述着色器缓存生成所述游戏的安装包。
5.一种着色器缓存生成方法,其特征在于,应用于终端设备,所述方法包括:
在基于源代码运行游戏时,根据所述游戏所需的多个用于着色的宏设置宏取值得到的组合,构建宏集合,所述宏集合包括:N个宏组合,所述N为大于或等于1的整数;
向服务器发送所述宏集合,所述宏集合用于生成着色器缓存。
6.根据权利要求5所述的方法,其特征在于,所述根据所述游戏所需的多个用于着色的宏设置宏取值得到的组合,构建宏集合,包括:
步骤a、获取宏组合,所述宏组合是终端设备针对游戏运行时所需的多个宏设置宏取值得到的组合;
步骤b、根据所述宏组合在着色器缓存中查找是否存在所述宏组合对应的着色器数据,所述着色器缓存中存储至少一个宏组合对应的目标着色器数据;
步骤c、若在着色器缓存中未查找到所述宏组合对应的目标着色器数据,则获取所述终端设备的操作系统的标识,并生成所述终端设备的操作系统的标识与所述宏组合的对应关系;
步骤d、将所述终端设备的操作系统的标识与所述宏组合的对应关系存储至空集合中,并返回步骤a,直至达到预设条件时,将宏集合发送至服务器,所述宏集合是根据达到预设条件时所述空集合中包括的所述终端设备的操作系统的标识与所述宏组合的对应关系得到的,其中,所述预设条件为当前时间达到预定时间,或者,所述空集合中所述终端设备的操作系统的标识与所述宏组合的对应关系的数量达到预设数量。
7.根据权利要求6所述的方法,其特征在于,所述根据接收到的所述宏组合对应的源代码,对所述宏组合对应的源代码进行编译,得到所述宏组合的目标着色器数据之前,还包括:
接收开发端的终端设备发送的所述宏组合对应的源代码。
8.一种着色器数据处理装置,其特征在于,应用于服务器,所述装置包括:
获取模块,用于获取M个终端设备的操作系统的标识和M个宏集合,每个终端设备对应一个宏集合,每个宏集合包括N个宏组合,每个所述宏组合是每个所述终端设备基于源代码运行游戏时所需的多个用于着色的宏设置宏取值得到的组合,所述M为大于或等于2的整数,所述N为大于或等于1的整数;
分类模块,用于根据所述M个操作系统的标识对所述M个宏集合进行分类,得到P个分类结果,每个所述分类结果中包括相同操作系统的标识对应的X个宏集合,所述X为大于或等于1且小于或等于M的整数,所述P为大于或等于2且小于或等于M的整数;
编译模块,用于将所述X个宏集合中每个宏集合的N个宏组合对应的源代码进行编译,得到所述游戏的着色器缓存,所述着色器缓存包括:Y个目标着色器数据,所述Y为所述M与所述X的乘积。
9.一种着色器缓存生成装置,其特征在于,应用于终端设备,所述装置包括:
构建模块,用于在基于源代码运行游戏时,根据所述游戏所需的多个用于着色的宏设置宏取值得到的组合,构建宏集合,所述宏集合包括:N个宏组合,所述N为大于或等于1的整数;
发送模块,用于向服务器发送所述宏集合,所述宏集合用于生成着色器缓存。
10.一种电子设备,其特征在于,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1-7中任一项所述的方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1-7中任一项所述的方法。
CN202111367790.3A 2021-11-18 2021-11-18 着色器数据处理方法、装置、设备及存储介质 Pending CN114115873A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111367790.3A CN114115873A (zh) 2021-11-18 2021-11-18 着色器数据处理方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111367790.3A CN114115873A (zh) 2021-11-18 2021-11-18 着色器数据处理方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN114115873A true CN114115873A (zh) 2022-03-01

Family

ID=80397339

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111367790.3A Pending CN114115873A (zh) 2021-11-18 2021-11-18 着色器数据处理方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN114115873A (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030020741A1 (en) * 2001-07-16 2003-01-30 Boland Michele B. Systems and methods for providing intermediate targets in a graphics system
CN107133909A (zh) * 2017-03-30 2017-09-05 北京奇艺世纪科技有限公司 一种着色器重组的方法及装置
CN109893855A (zh) * 2019-03-19 2019-06-18 网易(杭州)网络有限公司 着色器的数据处理方法、装置、存储介质和电子装置
CN110609688A (zh) * 2019-09-19 2019-12-24 网易(杭州)网络有限公司 着色器的处理方法及处理装置、储存介质和处理器
CN111417978A (zh) * 2018-04-10 2020-07-14 谷歌有限责任公司 游戏渲染中的内存管理
CN111767046A (zh) * 2020-05-18 2020-10-13 福建天晴数码有限公司 一种着色器代码复用方法及终端
CN111831273A (zh) * 2019-04-30 2020-10-27 厦门雅基软件有限公司 基于着色器的数据处理方法、装置及电子设备

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030020741A1 (en) * 2001-07-16 2003-01-30 Boland Michele B. Systems and methods for providing intermediate targets in a graphics system
CN107133909A (zh) * 2017-03-30 2017-09-05 北京奇艺世纪科技有限公司 一种着色器重组的方法及装置
CN111417978A (zh) * 2018-04-10 2020-07-14 谷歌有限责任公司 游戏渲染中的内存管理
CN109893855A (zh) * 2019-03-19 2019-06-18 网易(杭州)网络有限公司 着色器的数据处理方法、装置、存储介质和电子装置
CN111831273A (zh) * 2019-04-30 2020-10-27 厦门雅基软件有限公司 基于着色器的数据处理方法、装置及电子设备
CN110609688A (zh) * 2019-09-19 2019-12-24 网易(杭州)网络有限公司 着色器的处理方法及处理装置、储存介质和处理器
CN111767046A (zh) * 2020-05-18 2020-10-13 福建天晴数码有限公司 一种着色器代码复用方法及终端

Similar Documents

Publication Publication Date Title
CN111615716B (zh) 在客户端机器之间分配着色器来进行预缓存
CN110941424B (zh) 编译参数优化方法、装置及电子设备
US20110209157A1 (en) Resource allocation method, program, and resource allocation apparatus
CN108459964B (zh) 测试用例选择方法、装置、设备以及计算机可读存储介质
CN112948026A (zh) 热点代码处理方法、装置、服务器、电子设备及存储介质
CN114723033B (zh) 数据处理方法、装置、ai芯片、电子设备及存储介质
WO2021115177A1 (zh) 应用安装方法、装置、终端设备、服务器及存储介质
CN111552669A (zh) 数据处理方法、装置、计算设备和存储介质
US20190266094A1 (en) Data Prefetching Method, Apparatus, And System
CN105511962A (zh) 渲染方法和装置
CN112559088A (zh) 配置文件的优化方法、装置、服务器以及存储介质
US11138018B2 (en) Optimizing execution of computer programs using piecemeal profiles
US20200301676A1 (en) Framework for GPU Code Generation and Debugging
CN114115873A (zh) 着色器数据处理方法、装置、设备及存储介质
CN116524104B (zh) 渲染数据处理方法、装置、设备及存储介质
US10445218B2 (en) Execution of graphic workloads on a simulated hardware environment
CN114924947A (zh) 代码测试方法、装置、电子设备及存储介质
CN108830920B (zh) 一种创建常量缓冲区方法、装置及可读存储介质
CN113971072A (zh) 信息处理方法、装置、设备、存储介质及计算机程序产品
US20180089698A1 (en) Transmitting application data for on-device demos
TW202310586A (zh) 雲化系統效能評估方法及系統
CN113127055A (zh) 动态链接库文件的生成方法、应用校验方法、装置及设备
CN117258303B (zh) 一种模型对比方法及相关装置
CN107844309B (zh) 一种系统数据处理方法及装置
CN115840682B (zh) 基于sw64指令集的bios层级采样的运维监控方法及装置

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