CN112256273B - 应用程序打包方法、装置及电子设备 - Google Patents

应用程序打包方法、装置及电子设备 Download PDF

Info

Publication number
CN112256273B
CN112256273B CN202011128257.7A CN202011128257A CN112256273B CN 112256273 B CN112256273 B CN 112256273B CN 202011128257 A CN202011128257 A CN 202011128257A CN 112256273 B CN112256273 B CN 112256273B
Authority
CN
China
Prior art keywords
loader
variant
static
target
file
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
CN202011128257.7A
Other languages
English (en)
Other versions
CN112256273A (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.)
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 CN202011128257.7A priority Critical patent/CN112256273B/zh
Publication of CN112256273A publication Critical patent/CN112256273A/zh
Application granted granted Critical
Publication of CN112256273B publication Critical patent/CN112256273B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • General Factory Administration (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供了应用程序打包方法、装置及电子设备。其中,该方法包括:响应针对于目标材质的Shader特征定义操作,确定Shader特征对应的目标静态分支变体;响应针对于应用程序的打包操作,确定应用程序使用的目标材质;对于每个目标材质,均获取对应的目标静态分支变体的目标Shader变体文件,将目标材质的Shader文件替换为目标Shader变体文件;基于替换Shader文件后的目标材质,打包应用程序。本发明中,通过为每个材质配置不同的Shader变体文件,并利用该Shader变体文件替换材质中原Shader文件,与原Shader文件相比,Shader变体文件的存储量较小,从而提高了编译效率。

Description

应用程序打包方法、装置及电子设备
技术领域
本发明涉及应用程序制作技术领域,尤其是涉及一种应用程序打包方法、装置及电子设备。
背景技术
Unity是一种应用程序(例如,游戏)开发中常使用的创作引擎,通过Unity可以制作Shader(着色器)和meterial(材质)。Shader可以理解为一段小程序,负责将模型顶点数据以指定的方式和输入的贴图或颜色等组合起来,组合起来的数据可以在屏幕上进行绘制呈现。而组合起来的数据打包存储在一起,就是一个meterial(材质)。之后,便可以将材质赋予三维对象,实现对三维对象的渲染。
开发人员常使用Uber Shader来进行Shader开发。例如,某Uber Shader里面有“是否使用法线贴图”这个选项分支,则在材质编辑器上提供“是否使用法线贴图”这一勾选项以供美术选择,通过在材质编辑器上勾选对应选项,Shader会使用不同的分支路径。
上述“是否使用法线题图”即为一个Shader的静态分支,在Unity中叫做Shader特性(或Shader特征或shaderfeature)。Unity使用shaderfeature作为unity的静态打包方式,但是它要求材质和Shader在一个包体,这个要求与现有的打包策略(通常每个包仅包含有一定逻辑关系的文件)有冲突,导致Shader的静态分支在编译时只能全分支编译,而全分支编译方式占用的内存过大,影响了编译效率。
发明内容
有鉴于此,本发明的目的在于提供应用程序打包方法、装置及电子设备,以缓解上述问题,通过Shader变体文件替换材质中原Shader文件,减小了存储量,从而提高了编译效率。
第一方面,本发明实施例提供了一种应用程序打包方法,通过电子设备制作应用程序,电子设备预存有Shader变体文件,其中,Shader变体文件包含由Shader特征对应的静态分支组合得到的静态分支变体;该方法包括:响应针对于目标材质的Shader特征定义操作,确定目标材质的Shader特征对应的目标静态分支变体;其中,Shader特征包括至少两个Shader的静态分支;响应针对于应用程序的打包操作,确定应用程序使用的目标材质;对于每个目标材质,均获取目标材质对应的目标静态分支变体的目标Shader变体文件,将目标材质的Shader文件替换为目标Shader变体文件;基于替换Shader文件后的目标材质,打包应用程序。
上述方法还包括:响应针对于Shader特征的变体标识添加操作,为Shader特征对应的静态分支添加预设的变体标识,得到目标静态分支;对目标静态分支中的静态分支进行排列组合,生成Shader变体文件。
上述为Shader特征对应的静态分支添加预设的变体标识的步骤,包括:在Shader特征对应的静态分支的起始位置设置第一变体标识;在Shader特征对应的静态分支的结束位置设置第二变体标识。
上述对目标静态分支中的静态分支进行排列组合,生成Shader变体文件的步骤,包括:对目标静态分支中的静态分支进行排列组合,得到每个组合对应的Shader静态变体;对于每个Shader静态变体,均根据Shader静态变体包含的Shader生成Shader变体文件;其中,Shader变体文件的文件名称包含Shader静态变体包含的Shader的Shader名称。
上述Shader变体文件的文件名称包括:主文件名、预设标识符、分支开关名称和预设后缀;其中,分支开关名称为Shader变体文件包含的静态分支中的Shader的分支名称。
第二方面,本发明实施例还提供一种应用程序打包装置,通过电子设备制作应用程序,电子设备预存有Shader变体文件,其中,Shader变体文件包含由Shader特征对应的静态分支组合得到的静态分支变体;该装置包括:定义操作响应模块,用于响应针对于目标材质的Shader特征定义操作,确定目标材质的Shader特征对应的目标静态分支变体;其中,Shader特征包括至少两个Shader的静态分支;目标材质确定模块,用于响应针对于应用程序的打包操作,确定应用程序使用的目标材质;替换模块,用于对于每个目标材质,均获取目标材质对应的目标静态分支变体的目标Shader变体文件,将目标材质的Shader文件替换为目标Shader变体文件;打包模块,用于基于替换Shader文件后的目标材质,打包应用程序。
上述装置还包括:变体标识添加模块,用于响应针对于Shader特征的变体标识添加操作,为Shader特征对应的静态分支添加预设的变体标识,得到目标静态分支;排列组合模块,用于对目标静态分支中的静态分支进行排列组合,生成Shader变体文件。
上述变体标识添加模块还用于:在Shader特征对应的静态分支的起始位置设置第一变体标识;在Shader特征对应的静态分支的结束位置设置第二变体标识。
第三方面,本发明实施例还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现第一方面的应用程序打包方法的步骤。
第四方面,本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器运行时执行第一方面的应用程序打包方法的步骤。
本发明实施例带来了以下有益效果:
本发明实施例提供了应用程序打包方法、装置及电子设备,响应针对于目标材质的Shader特征定义操作,确定目标材质的Shader特征对应的目标静态分支变体;其中,Shader特征包括至少两个Shader的静态分支;响应针对于应用程序的打包操作,确定应用程序使用的目标材质;对于每个目标材质,均获取目标材质对应的目标静态分支变体的目标Shader变体文件,将目标材质的Shader文件替换为目标Shader变体文件;基于替换Shader文件后的目标材质,打包应用程序。该方式中,根据场景为每个材质配置不同的Shader,每个材质所有的Shader形成一个Shader静态分支,即形成一个Shader变体文件,并利用该Shader变体文件替换材质中原Shader文件,与原Shader文件相比,Shader变体文件的存储量较小,从而提高了编译效率。
本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书以及附图中所特别指出的结构来实现和获得。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种应用程序打包方法的流程图;
图2为本发明实施例提供的一种Shader特征的静态分支示意图;
图3为本发明实施例提供的一种Shader变体文件替换目标材质的Shader文件的示意图;
图4为本发明实施例提供的一种Shader变体文件的生成方法的流程图;
图5为本发明实施例提供的一种静态分支添加变体标识的示意图;
图6为本发明实施例提供的另一种Shader特征的静态分支示意图;
图7为本发明实施例提供的一种应用程序打包装置的示意图;
图8为本发明实施例提供的一种电子设备的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在实际的游戏开发中,开发人员常使用Uber Shader来进行Shader开发,即在开发中使用静态分支宏定义的方式来定义不同的Shader特征,然后由美术制作人员去决定上述Shader特性在什么时候开启,这样做的好处在于其易维护性,制作人员只需要一份代码,通过静态分支的方式就可以选择不同的Shader特性。
在Unity开发中,Unity首先使用自定义的shaderfeature关键字定义宏名字,即shderfeature定义的静态宏,然后,再根据材质定义的特征来编译对应Shader由宏定义的静态分支,其中,shaderfeature是材质可以定义的属性,在游戏美术资源制作时指定,Shader制作人员考虑好不同分支情况,并将开放接口发送至美术制作人员,以使美术制作人员根据实际游戏需求确定具体的分支,并将分支的选择信息记录在材质信息里面。但是,这种方法要求当前材质和Shader在同一个打包Asssetbundle包体上,然而由于材质会关联到很多贴图文件,如果将当前材质和Shader放在一起会使得这个包体太过臃肿,因此,现有的打包策略中材质和Shader往往分开打包,导致Unity的shaderfeature由于没有对应的材质指定静态分支路线,只能将所有的分支全部编译,而全分支编译方式占用的内存过大,影响了编译效率。
基于此,本发明实施例提供了一种应用程序打包方法、装置及电子设备,通过静态分支确定的Shader变体文件替换材质中原Shader文件,既保留了原有的静态分支特性,又避免了未使用的分支进行编译即全分支编译,从而减小了存储量,提高了编译效率。
为便于对本实施例进行理解,下面首先对本发明实施例提供的一种应用程序打包方法进行详细介绍。
实施例一:
本发明实施例提供了一种应用程序打包方法,执行主体为电子设备,该电子设备为带有Unity引擎的服务器,通过该电子设备制作应用程序,该电子设备预存有Shader变体文件,其中,Shader变体文件包含由Shader特征对应的静态分支组合得到的静态分支变体;如图1所示,该方法包括以下步骤:
步骤S102,响应针对于目标材质的Shader特征定义操作,确定目标材质的Shader特征对应的目标静态分支变体;其中,Shader特征包括至少两个Shader的静态分支。
在实际应用中,上述目标材质可以是任意一种材质,其一般包括渲染方法、每个渲染方法所需的通道以及每个通道中包括的渲染状态和配置有Shader特征的着色器Shader。由于每个目标材质不同,其具有的Shader特征也不相同,如有的目标材质需要染色,则对应的Shader特征为颜色特征;有的目标材质则需要纹理和染色,则对应的Shader特征不仅包括需要的颜色特征,还包括纹理特征等;需要说明的是,这里Shader特征一般由美术制作人员根据目标材质的实际用途所设置,本发明实施例对此不作限制说明。
因此,为了真正利用静态分支的策略,在打包之前,对目标材质所需的Shader特征进行定义操作,以便根据定义的Shader特征确定该目标材质对应的目标静态分支变体,与现有的Shader文件包含全部静态分支相比,目标静态分支变体在编译时所占的内存较小,从而提高了编译效率。
为了便于理解,这里举例说明。如图2所示,在ScenePbr_Common为一个美术制作上的Uber Shader中,其中,meta文件是Unity引擎自动生成的描述文件,Shader特征包括两个Shader的静态分支,即BASE_NORMAL和DETAIL_NORMAL,其中,每个静态分支又包括两个分支开关,即NORMAL0和NORMAL1,这里NORMAL0表示off分支开关,NORMAL1表示on分支开关,当上述静态分支处于BASE_NORMAL1和DETAIL_NORMAL1时,以便对目标材质进行渲染处理。
步骤S104,响应针对于应用程序的打包操作,确定应用程序使用的目标材质。
在材质编辑器显示的界面上,美术制作人员通过勾选操作选择该应用程序使用的目标材质以及该目标材质对应的静态分支,以便将目标材质和目标材质中包含的静态分支变体打包在一个Asssetbundle包体中,且,目标材质中会记录对应的静态分支的选择信息。例如,对于应用程序A,其需要使用的目标材质为材质a、材质b和材质c,则美术制作人员在材质编辑器显示的界面上勾选材质a、材质b和材质c对应的按钮,其中,每个材质中有包含有该材质的Shader特征对应的目标静态分支变体,当勾选操作完成后,该应用程序仅包括材质a、材质b和材质c的Shader特征对应的目标静态分支变体,与现有的应用程序包含材质a、材质b和材质c所有的静态分支相比,本发明实施例中,应用程序编译时所占的内存较小,从而提高了编译效率。
步骤S106,对于每个目标材质,均获取目标材质对应的目标静态分支变体的目标Shader变体文件,将目标材质的Shader文件替换为目标Shader变体文件。
上述美术制作人员勾选完应用程序需要的目标材质后,对于每个目标材质对应的目标Shader变体文件,由于目标Shader变体文件中定义有对应的宏,以便通过控制开启宏或关闭宏以控制目标材质的渲染过程,因此,利用目标Shader变体文件替换目标材质的Shader文件,不仅可以根据目标材质里记录的静态分支选择信息和配置有宏的包含静态分支的目标Shader变体文件,实现将目标材质和Shader打包在同一个包体中,还可以减少加载时候的内存占用量,从而提高了编译效率。
此外,上述Shader变体文件的文件名称包括:主文件名、预设标识符、分支开关名称和预设后缀;其中,分支开关名称为Shader变体文件包含的静态分支中的Shader的分支名称。如图3所示,Shader变体文件为ScenePBR_Common@BASE_NORMAL1DETAIL_NORMAL1,用以替换目标材质的Shader文件Shader:SWS/PBR/Scene,其中,对于Shader变体文件ScenePBR_Common@BASE_NORMAL1DETAIL_NORMAL1.shader,主文件名为ScenePBR_Common,预设标识符为@,分支开关名称为BASE_NORMAL1和DETAIL_NORMAL1,预设后缀为shader,如果为Unity引擎自动生成的描述文件,则如图2所示,预设后缀为shader.meta。
步骤S108,基于替换Shader文件后的目标材质,打包应用程序。
上述替换完成后,此时,基于替换Shader文件后的目标材质,对应用程序执行打包操作,由于每个目标材质对应的目标Shader变体文件不同,且,存储有目标Shader变体文件的静态分支的选择信息,以及每个目标Shader变体文件均定义有对应的宏,因此,通过替换Shader文件后的目标材质,可以实现应用程序,与现有的打包方法相比,不仅实现了将目标材质和Shader变体文件打包在同一个包体中,还可以减少加载时候的内存占用量,从而提高了编译效率。
本发明实施例提供的应用程序打包方法,响应针对于目标材质的Shader特征定义操作,确定目标材质的Shader特征对应的目标静态分支变体;其中,Shader特征包括至少两个Shader的静态分支;响应针对于应用程序的打包操作,确定应用程序使用的目标材质;对于每个目标材质,均获取目标材质对应的目标静态分支变体的目标Shader变体文件,将目标材质的Shader文件替换为目标Shader变体文件;基于替换Shader文件后的目标材质,打包应用程序。该方式中,根据场景为每个材质配置不同的Shader,每个材质所有的Shader形成一个Shader静态分支,即形成一个Shader变体文件,并利用该Shader变体文件替换材质中原Shader文件,与原Shader文件相比,Shader变体文件的存储量较小,从而提高了编译效率。
在图1的基础上,本发明实施例还提供了一种Shader变体文件生成方法,执行主体为电子设备,该方法重点描述了生成Shader变体文件的具体过程,如图4所示,该方法包括以下步骤:
步骤S402,响应针对于Shader特征的变体标识添加操作,为Shader特征对应的静态分支添加预设的变体标识,得到目标静态分支。
在实际应用中,对于需要静态分支编译的目标材质的Shader特征,为了便于编译程序识别,需要对Shader特征添加变体标识,即token信息。具体地,在Shader特征对应的静态分支的起始位置设置第一变体标识,在Shader特征对应的静态分支的结束位置设置第二变体标识,其中,第一变体标识和第二变体标识为美术制作人员自定义的注释信息,例如,如图5所示,第一变体标识为static featrue on,第二变体标识为static feature off,以便后期编译Shader特征时,识别出Shader特征的静态分支BASE_NORMAL和DETAIL_NORMAL,进而得到目标静态分支。需要说明的是,这里第一变体标识和第二变体标识为应用程序制作人员根据实际情况自行设置的,本发明实施例在此不作限制说明。
步骤S404,对目标静态分支中的静态分支进行排列组合,生成Shader变体文件。
具体地,对目标静态分支中的静态分支进行排列组合,得到每个组合对应的Shader静态变体;对于每个Shader静态变体,均根据Shader静态变体包含的Shader生成Shader变体文件;其中,Shader变体文件的文件名称包含Shader静态变体包含的Shader的Shader名称。由于目标静态分支中的每个静态分支均具有on分支开关和off分支开关,因此,通过对目标静态分支中的静态分支排列组合,可以得到多种组合,例如,对图2中的静态分支进行排列组合,可以得到是四种组合,如图6所示,为其中的一种组合情况,此时,每个组合对应一个Shader静态变体,通过对每个Shader静态变体加入该Shader静态变体对应的宏组合信息,当将该Shader静态变体进行编译时,可以生成一个对应的Shader变体文件。
在编译时,判断目标材质的Shader文件是否添加有上述变体标识,如果没有,则默认该Shader文件按照现有的Unity打包流程执行打包操作,即该Shader文件的所有分支全部编译;如果该Shader文件添加有变体标识,则将该Shader文件替换为Shader变体文件,由于Shader变体文件与目标材质中的原Shader文件相比,Shader变体文件仅包含该目标材质需要编译的Shader特征的静态分支,因此,存储量较小,从而减少了内存占用量,提高了编译效率。
对应上述的方法实施例,本发明实施例还提供了一种应用程序打包装置,通过电子设备制作应用程序,电子设备预存有Shader变体文件,其中,Shader变体文件包含由Shader特征对应的静态分支组合得到的静态分支变体;如图7所示,该装置包括依次连接的定义操作响应模块71、目标材质确定模块72、替换模块73和打包模块74,其中,每个模块的功能如下:
定义操作响应模块71,用于响应针对于目标材质的Shader特征定义操作,确定目标材质的Shader特征对应的目标静态分支变体;其中,Shader特征包括至少两个Shader的静态分支;
目标材质确定模块72,用于响应针对于应用程序的打包操作,确定应用程序使用的目标材质;
替换模块73,用于对于每个目标材质,均获取目标材质对应的目标静态分支变体的目标Shader变体文件,将目标材质的Shader文件替换为目标Shader变体文件;
打包模块74,用于基于替换Shader文件后的目标材质,打包应用程序。
本发明实施例提供的应用程序打包装置,响应针对于目标材质的Shader特征定义操作,确定目标材质的Shader特征对应的目标静态分支变体;其中,Shader特征包括至少两个Shader的静态分支;响应针对于应用程序的打包操作,确定应用程序使用的目标材质;对于每个目标材质,均获取目标材质对应的目标静态分支变体的目标Shader变体文件,将目标材质的Shader文件替换为目标Shader变体文件;基于替换Shader文件后的目标材质,打包应用程序。该方式中,根据场景为每个材质配置不同的Shader,每个材质所有的Shader形成一个Shader静态分支,即形成一个Shader变体文件,并利用该Shader变体文件替换材质中原Shader文件,与原Shader文件相比,Shader变体文件的存储量较小,从而提高了编译效率。
在其中一种可能的实施例中,该装置还包括:变体标识添加模块(未示出),用于响应针对于Shader特征的变体标识添加操作,为Shader特征对应的静态分支添加预设的变体标识,得到目标静态分支;排列组合模块(未示出),用于对目标静态分支中的静态分支进行排列组合,生成Shader变体文件。
在另一种可能的实施例中,上述变体标识添加模块还用于:在Shader特征对应的静态分支的起始位置设置第一变体标识;在Shader特征对应的静态分支的结束位置设置第二变体标识。
在另一种可能的实施例中,上述排列组合模块还用于:对目标静态分支中的静态分支进行排列组合,得到每个组合对应的Shader静态变体;对于每个Shader静态变体,均根据Shader静态变体包含的Shader生成Shader变体文件;其中,Shader变体文件的文件名称包含Shader静态变体包含的Shader的Shader名称。
在另一种可能的实施例中,上述Shader变体文件的文件名称包括:主文件名、预设标识符、分支开关名称和预设后缀;其中,分支开关名称为Shader变体文件包含的静态分支中的Shader的分支名称。
本发明实施例提供的应用程序打包装置,与上述实施例提供的应用程序打包方法具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果。
本发明实施例还提供一种电子设备,包括处理器和存储器,存储器存储有能够被处理器执行的机器可执行指令,处理器执行机器可执行指令以实现上述应用程序打包方法。
参见图8所示,该电子设备包括处理器80和存储器81,该存储器81存储有能够被处理器80执行的机器可执行指令,该处理器80执行机器可执行指令以实现上述应用程序打包方法。
进一步地,图8所示的电子设备还包括总线82和通信接口83,处理器80、通信接口83和存储器81通过总线82连接。
其中,存储器81可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口83(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线82可以是ISA(IndustrialStandard Architecture,工业标准结构总线)总线、PCI(Peripheral ComponentInterconnect,外设部件互连标准)总线或EISA(Enhanced Industry StandardArchitecture,扩展工业标准结构)总线等。上述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
处理器80可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器80中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器80可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital SignalProcessor,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器81,处理器80读取存储器81中的信息,结合其硬件完成前述实施例的方法的步骤。
本实施例还提供一种机器可读存储介质,机器可读存储介质存储有机器可执行指令,机器可执行指令在被处理器调用和执行时,机器可执行指令促使处理器实现上述应用程序打包方法。
本发明实施例所提供的应用程序打包方法、装置和电子设备的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (10)

1.一种应用程序打包方法,其特征在于,通过电子设备制作应用程序,所述电子设备预存有Shader变体文件,其中,所述Shader变体文件包含由Shader特征对应的静态分支组合得到的静态分支变体;所述方法包括:
响应针对于目标材质的Shader特征定义操作,确定所述目标材质的Shader特征对应的目标静态分支变体;其中,所述Shader特征包括至少两个Shader的静态分支;
响应针对于所述应用程序的打包操作,确定所述应用程序使用的目标材质;
对于每个所述目标材质,均获取所述目标材质对应的目标静态分支变体的目标Shader变体文件,将所述目标材质的Shader文件替换为所述目标Shader变体文件;
基于替换Shader文件后的所述目标材质,打包所述应用程序。
2.根据权利要求1所述的应用程序打包方法,其特征在于,所述方法还包括:
响应针对于Shader特征的变体标识添加操作,为所述Shader特征对应的静态分支添加预设的变体标识,得到目标静态分支;
对所述目标静态分支中的静态分支进行排列组合,生成Shader变体文件。
3.根据权利要求2所述的应用程序打包方法,其特征在于,为所述Shader特征对应的静态分支添加预设的变体标识的步骤,包括:
在所述Shader特征对应的静态分支的起始位置设置第一变体标识;
在所述Shader特征对应的静态分支的结束位置设置第二变体标识。
4.根据权利要求2所述的应用程序打包方法,其特征在于,对所述目标静态分支中的静态分支进行排列组合,生成Shader变体文件的步骤,包括:
对所述目标静态分支中的静态分支进行排列组合,得到每个组合对应的Shader静态变体;
对于每个所述Shader静态变体,均根据所述Shader静态变体包含的Shader生成Shader变体文件;其中,所述Shader变体文件的文件名称包含Shader静态变体包含的Shader的Shader名称。
5.根据权利要求1所述的应用程序打包方法,其特征在于,所述Shader变体文件的文件名称包括:主文件名、预设标识符、分支开关名称和预设后缀;其中,所述分支开关名称为所述Shader变体文件包含的静态分支中的Shader的分支名称。
6.一种应用程序打包装置,其特征在于,通过电子设备制作应用程序,所述电子设备预存有Shader变体文件,其中,所述Shader变体文件包含由Shader特征对应的静态分支组合得到的静态分支变体;所述装置包括:
定义操作响应模块,用于响应针对于目标材质的Shader特征定义操作,确定所述目标材质的Shader特征对应的目标静态分支变体;其中,所述Shader特征包括至少两个Shader的静态分支;
目标材质确定模块,用于响应针对于所述应用程序的打包操作,确定所述应用程序使用的目标材质;
替换模块,用于对于每个所述目标材质,均获取所述目标材质对应的目标静态分支变体的目标Shader变体文件,将所述目标材质的Shader文件替换为所述目标Shader变体文件;
打包模块,用于基于替换Shader文件后的所述目标材质,打包所述应用程序。
7.根据权利要求6所述的应用程序打包装置,其特征在于,所述装置还包括:
变体标识添加模块,用于响应针对于Shader特征的变体标识添加操作,为所述Shader特征对应的静态分支添加预设的变体标识,得到目标静态分支;
排列组合模块,用于对所述目标静态分支中的静态分支进行排列组合,生成Shader变体文件。
8.根据权利要求7所述的应用程序打包装置,其特征在于,所述变体标识添加模块还用于:
在所述Shader特征对应的静态分支的起始位置设置第一变体标识;
在所述Shader特征对应的静态分支的结束位置设置第二变体标识。
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述权利要求1-5任一项所述的应用程序打包方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述权利要求1-5任一项所述的应用程序打包方法的步骤。
CN202011128257.7A 2020-10-20 2020-10-20 应用程序打包方法、装置及电子设备 Active CN112256273B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011128257.7A CN112256273B (zh) 2020-10-20 2020-10-20 应用程序打包方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011128257.7A CN112256273B (zh) 2020-10-20 2020-10-20 应用程序打包方法、装置及电子设备

Publications (2)

Publication Number Publication Date
CN112256273A CN112256273A (zh) 2021-01-22
CN112256273B true CN112256273B (zh) 2023-11-24

Family

ID=74244040

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011128257.7A Active CN112256273B (zh) 2020-10-20 2020-10-20 应用程序打包方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN112256273B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106445625A (zh) * 2016-09-23 2017-02-22 网易(杭州)网络有限公司 一种待编译代码的预处理方法及装置
WO2017088414A1 (zh) * 2015-11-25 2017-06-01 北京金山安全软件有限公司 应用程序的处理方法、装置及电子设备
CN108139897A (zh) * 2015-09-30 2018-06-08 苹果公司 在不预处理宏的情况下使用Ubershader变体的系统和方法
CN109885310A (zh) * 2019-01-14 2019-06-14 珠海金山网络游戏科技有限公司 一种降低手机游戏Shader模块内存占用的方法及装置
CN111142930A (zh) * 2019-12-30 2020-05-12 瑞庭网络技术(上海)有限公司 安装包文件打包方法、装置、终端设备及存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8291397B2 (en) * 2008-04-02 2012-10-16 International Business Machines Corporation Compiler optimized function variants for use when return codes are ignored
US9594559B2 (en) * 2015-01-07 2017-03-14 International Business Machines Corporation Binary file for computer program having multiple executable code variants for a function that are executable on a same processor architecture
US10210591B2 (en) * 2015-02-02 2019-02-19 Microsoft Technology Licensing, Llc Optimizing compilation of shaders
GB2571271B (en) * 2018-02-21 2020-02-26 Advanced Risc Mach Ltd Graphics processing

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108139897A (zh) * 2015-09-30 2018-06-08 苹果公司 在不预处理宏的情况下使用Ubershader变体的系统和方法
WO2017088414A1 (zh) * 2015-11-25 2017-06-01 北京金山安全软件有限公司 应用程序的处理方法、装置及电子设备
CN106445625A (zh) * 2016-09-23 2017-02-22 网易(杭州)网络有限公司 一种待编译代码的预处理方法及装置
CN109885310A (zh) * 2019-01-14 2019-06-14 珠海金山网络游戏科技有限公司 一种降低手机游戏Shader模块内存占用的方法及装置
CN111142930A (zh) * 2019-12-30 2020-05-12 瑞庭网络技术(上海)有限公司 安装包文件打包方法、装置、终端设备及存储介质

Also Published As

Publication number Publication date
CN112256273A (zh) 2021-01-22

Similar Documents

Publication Publication Date Title
US20190324772A1 (en) Method and device for processing smart contracts
CN110764791B (zh) 小程序的渠道适配方法、装置及电子设备
CN107045438B (zh) 一种应用顶层视图处理方法、装置及组件
CN111131352B (zh) 主题切换方法及装置
US20020059556A1 (en) Integrated circuit configuration
CN107911741A (zh) 可用存储空间提升方法、智能电视及计算机可读存储介质
CN113885935A (zh) 资源打包方法、装置、电子设备及计算机可读存储介质
CN109426513A (zh) 一种视图组件的处理方法及设备
CN110471693A (zh) 应用程序发布、运行方法及设备
CN112256273B (zh) 应用程序打包方法、装置及电子设备
CN112306486B (zh) 一种界面生成方法、装置、服务器及存储介质
CN113485548B (zh) 头戴显示设备的模型加载方法、装置及头戴显示设备
CN114663272A (zh) 一种图像处理方法及电子设备
CN110688320B (zh) 全局变量的检测方法、装置及终端设备
CN107908391B (zh) 程序调用的优化方法及装置
CN113626000A (zh) 一种按照接入方式自动切换页面布局的方法及装置
CN114115888A (zh) 一种基于BootRom功能扩展的嵌入式系统启动方法
CN112685006A (zh) 流程管理方法、装置、电子设备及存储介质
CN113760249A (zh) 程序文件的处理方法、装置及设备
CN113741946B (zh) 公共接口函数库的裁剪方法、装置、设备及可读存储介质
CN112749159A (zh) 表单生成方法、装置、电子设备及存储介质
JP2002532802A (ja) 読み出し専用メモリに格納されたプログラムのシーケンスを変更する方法
US11599338B2 (en) Model loading method and apparatus for head-mounted display device, and head-mounted display device
CN112698835B (zh) 一种单片机编译链接方法、装置、计算机设备及存储介质
KR100631780B1 (ko) 오버레이 유닛 간의 통신 방법 및 이를 이용한 장치

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