CN111968190B - 游戏贴图的压缩方法、装置和电子设备 - Google Patents
游戏贴图的压缩方法、装置和电子设备 Download PDFInfo
- Publication number
- CN111968190B CN111968190B CN202010855619.6A CN202010855619A CN111968190B CN 111968190 B CN111968190 B CN 111968190B CN 202010855619 A CN202010855619 A CN 202010855619A CN 111968190 B CN111968190 B CN 111968190B
- Authority
- CN
- China
- Prior art keywords
- compressed
- compression
- game map
- subtasks
- image blocks
- 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
Links
- 238000007906 compression Methods 0.000 title claims abstract description 165
- 230000006835 compression Effects 0.000 title claims abstract description 163
- 238000000034 method Methods 0.000 title claims abstract description 82
- 238000000638 solvent extraction Methods 0.000 claims abstract description 21
- 238000012545 processing Methods 0.000 claims description 20
- 230000015654 memory Effects 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 7
- 238000012856 packing Methods 0.000 claims description 5
- 230000000903 blocking effect Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 21
- 230000006870 function Effects 0.000 description 9
- 238000011161 development Methods 0.000 description 5
- 230000018109 developmental process Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 230000011218 segmentation Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/60—Generating 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5017—Task decomposition
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Processing Or Creating Images (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明提供了一种游戏贴图的压缩方法、装置和电子设备,包括:获取待压缩游戏贴图和对待压缩游戏贴图进行压缩时的全局变量;对待压缩游戏贴图进行分块处理,并基于分块处理得到的多个待压缩图像块和全局变量确定多个待压缩子任务;向集群工作机器分发多个待压缩子任务,以使集群工作机器对待压缩子任务中的待压缩图像块进行astc压缩;接收集群工作机器返回的压缩结果,并对压缩结果进行合并,得到待压缩游戏贴图对应的压缩结果。本发明将待压缩游戏贴图分割为多个待压缩图像块,进而确定多个待压缩子任务,然后由集群工作机器对其接收到的待压缩子任务中的待压缩图像块进行astc压缩,该方式能够提高单张贴图的压缩效率。
Description
技术领域
本发明涉及游戏开发的技术领域,尤其是涉及一种游戏贴图的压缩方法、装置和电子设备。
背景技术
在游戏开发中,一般需要把图片压缩成特定的硬件支持格式,目前最流行的硬件格式是Arm的astc格式,这种格式目前只能使用cpu压缩,并且在选择极致的参数下的压缩时间较长。对于大型游戏开发来说,美术资源的变动是非常频繁的,这极大的影响了游戏开发的效率。
现有的游戏资源处理方式通常是单机多线程处理资源的打包(例如unity,unreal等游戏引擎),该方式中,虽然多线程能充分利用cpu,但是单机仍然受限于1个cpu的负荷能力,基本无法适应大量贴图的压缩情况;目前也有分布式的方案,即把贴图分发到不同的机器上,由多个机器同时对其收到的每张贴图进行压缩,完成后再收回,该分布式的方案在一定程度上能够减少大量贴图的压缩时间(时间基本与机器节点的数量成反比关系),但是也存在如下缺陷:机器负载不均衡,例如当压缩到最后时,还存在7张贴图,此时只有6个机器在工作,分配完只剩下一张贴图时,只有一个机器在工作,而另外5个机器处于空闲状态,机器的利用率很差,造成压缩时间的冗余;另外,机器压缩一张贴图时,cpu便会满载,无法对这台机器的cpu资源进行合理分配,并且当压缩整张贴图时,机器上的分布式服务停止后,当前正在执行的任务并不会立即中止,会持续运行直到结束,持续消耗系统资源,也就是该分布式方案也无法解决一张大图压缩时间过长的问题。
综上,现有的游戏贴图的压缩方法在对单张贴图压缩时存在耗时长的技术问题。
发明内容
本发明的目的在于提供一种游戏贴图的压缩方法、装置和电子设备,以缓解现有的游戏贴图的压缩方法在对单张贴图压缩时耗时长的技术问题。
第一方面,本发明实施例提供了一种游戏贴图的压缩方法,包括:获取待压缩游戏贴图和对所述待压缩游戏贴图进行压缩时的全局变量;对所述待压缩游戏贴图进行分块处理,并基于分块处理得到的多个待压缩图像块和所述全局变量确定多个待压缩子任务;向集群工作机器分发所述多个待压缩子任务,以使所述集群工作机器对待压缩子任务中的待压缩图像块进行astc压缩;接收所述集群工作机器返回的压缩结果,并对所述压缩结果进行合并,得到所述待压缩游戏贴图对应的压缩结果。
进一步的,对所述待压缩游戏贴图进行分块处理包括:基于astc压缩时的压缩图像块对所述待压缩游戏贴图进行分块处理。
进一步的,基于分块处理得到的多个待压缩图像块和所述全局变量确定多个待压缩子任务包括:在所述多个待压缩图像块中,将预设数量个待压缩图像块和所述全局变量作为一个待压缩子任务进行打包,得到所述多个待压缩子任务。
进一步的,向集群工作机器分发所述多个待压缩子任务包括:根据所述集群工作机器中目标工作机器发送的压缩任务请求向所述目标工作机器分发所述待压缩子任务;其中,当所述目标工作机器处于空闲状态时,所述目标工作机器向本地机器发送所述压缩任务请求。
进一步的,向集群工作机器分发所述多个待压缩子任务包括:采用Fastbuild分布式任务框架向所述集群工作机器分发所述多个待压缩子任务。
进一步的,在获取待压缩游戏贴图和对所述待压缩游戏贴图进行压缩时的全局变量之前,所述方法还包括:对Fastbuild分布式任务框架进行子任务扩展,使得所述Fastbuild分布式任务框架支持所述多个待压缩子任务的拆分、所述多个待压缩子任务的分发和所述压缩结果的合并。
进一步的,对所述压缩结果进行合并包括:在目标待压缩子任务的存储位置存储对应的压缩结果,完成对所述压缩结果进行合并的过程,其中,所述目标待压缩子任务为所述多个待压缩子任务中的任一待压缩子任务。
第二方面,本发明实施例还提供了一种游戏贴图的压缩装置,包括:获取单元,用于获取待压缩游戏贴图和对所述待压缩游戏贴图进行压缩时的全局变量;待压缩子任务确定单元,用于对所述待压缩游戏贴图进行分块处理,并基于分块处理得到的多个待压缩图像块和所述全局变量确定多个待压缩子任务;分发单元,用于向集群工作机器分发所述多个待压缩子任务,以使所述集群工作机器对待压缩子任务中的待压缩图像块进行astc压缩;合并单元,用于接收所述集群工作机器返回的压缩结果,并对所述压缩结果进行合并,得到所述待压缩游戏贴图对应的压缩结果。
第三方面,本发明实施例还提供了一种电子设备,包括存储器、处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面任一项所述的方法的步骤。
第四方面,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有机器可运行指令,所述计算机可运行指令在被处理器调用和运行时,所述计算机可运行指令促使所述处理器运行所述第一方面任一项所述的方法。
在本发明实施例中,提供了一种游戏贴图的压缩方法,该方法包括:获取待压缩游戏贴图和对待压缩游戏贴图进行压缩时的全局变量;对待压缩游戏贴图进行分块处理,并基于分块处理得到的多个待压缩图像块和全局变量确定多个待压缩子任务;向集群工作机器分发多个待压缩子任务,以使集群工作机器对待压缩子任务中的待压缩图像块进行astc压缩;接收集群工作机器返回的压缩结果,并对压缩结果进行合并,得到待压缩游戏贴图对应的压缩结果。通过上述描述可知,本发明将待压缩游戏贴图分割为多个待压缩图像块,进而确定多个待压缩子任务,然后由集群工作机器对其接收到的待压缩子任务中的待压缩图像块进行astc压缩,该方式能够提高单张贴图的压缩效率,缓解了现有的游戏贴图的压缩方法在对单张贴图压缩时耗时长的技术问题。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种游戏贴图的压缩方法的流程示意图;
图2为本发明实施例提供的传统的开源压缩工具的工作原理示意图;
图3为本发明实施例提供的待压缩子任务的数据格式的示意图;
图4为本发明实施例提供的对待压缩游戏贴图进行待压缩子任务分割的代码示意图;
图5为本发明实施例提供的对待压缩子任务中的待压缩图像块进行astc压缩的代码示意图;
图6为本发明实施例提供的对压缩结果进行合并的代码示意图;
图7为本发明实施例提供的传统Fastbuild的分布式任务的配置文件的示意图;
图8为本发明实施例提供的传统开源Fastbuild分布式任务框架的工作流程示意图;
图9为本发明实施例提供的子任务扩展之后的Fastbuild的配置文件的示意图;
图10为本发明实施例提供的子任务的分割的代码示意图;
图11为本发明实施例提供的子任务的合并的代码示意图;
图12为本发明实施例提供的Fastbuild分布式任务框架进行子任务扩展之后的工作流程示意图;
图13为本发明实施例提供的游戏贴图的压缩方法的过程示意图;
图14为本发明实施例提供的整张压缩与分块压缩的时间比例示意图;
图15为本发明实施例提供的整张压缩与分块压缩的具体压缩时间的示意图;
图16为本发明实施例提供的一种游戏贴图的压缩装置的示意图;
图17为本发明实施例提供的一种计算机设备的示意图。
具体实施方式
下面将结合实施例对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
目前,在对单张游戏贴图进行压缩时,只能通过单机多线程的方式实现,存在耗时长的技术问题。
基于此,本发明实施例提供了一种游戏贴图的压缩方法、装置和电子设备,以缓解现有的游戏贴图的压缩方法在对单张贴图压缩时耗时长的技术问题。
为便于对本实施例进行理解,首先对本发明实施例所公开的一种游戏贴图的压缩方法进行详细介绍,参见图1所示的一种游戏贴图的压缩方法的流程示意图,主要包括以下步骤:
步骤S102,获取待压缩游戏贴图和对待压缩游戏贴图进行压缩时的全局变量。
在本发明实施例中,该游戏贴图的压缩方法的执行主体为本地机器,该本地机器为集群工作机器中的一个机器。上述全局变量具体可以包括:是否为HDR、待压缩游戏贴图的像素区域Alpha的均值、待压缩游戏贴图的像素区域的方差等,该全局变量是对待压缩游戏贴图进行astc压缩时的全局变量。
步骤S104,对待压缩游戏贴图进行分块处理,并基于分块处理得到的多个待压缩图像块和全局变量确定多个待压缩子任务。
在本发明实施例中,对游戏贴图进行的压缩是指astc压缩。Arm提供了astc开源压缩工具astc-encoder,该传统的开源压缩工具的工作原理如图2所示。
参考图2,当输入待压缩游戏贴图后,首先会根据压缩图像块(是指传统的astc压缩中,自身的图像块,即astc-block)的大小,生成查找表,然后会开启多线程在循环中找一个astc-block,压缩一个astc-block,合并一个astc-block,压缩的具体步骤为根据块内的颜色分布找一个最合适的划分模式(即pattern),然后计算每个像素的插值权重,最后进行整数序列编码。查找表的生成方式非常精巧,采用了一个伪随机函数生成,并不占用astc-block的存储空间,为单张贴图的分布式奠定了很好的基础(无需花费网络和运算开销)。传统的astc压缩过程,只支持在1个进程内运行。
发明人对传统的开源压缩工具astc-encoder进行了改进,使得改进后的astc-encoder支持待压缩子任务的分割和待压缩子任务中待压缩图像块的压缩。
需要说明的是,由于每个待压缩子任务中都包含有全局变量,所以需要尽量减少全局变量的大小,从而使得分发至集群工作机器的待压缩子任务最小。在本发明实施例中,待压缩子任务的数据格式如图3所示。在图3中可以看出,对于一个M×N大小的待压缩图像块,待压缩子任务的数据大小为:M*N*(4+4+4+1),分别是原始图像数据+像素区域的均值+像素区域的方差+像素区域Alpha的均值。
对待压缩游戏贴图进行待压缩子任务分割的代码如图4所示。
步骤S106,向集群工作机器分发多个待压缩子任务,以使集群工作机器对待压缩子任务中的待压缩图像块进行astc压缩。
具体的,对待压缩子任务中的待压缩图像块进行astc压缩的代码如图5所示。
步骤S108,接收集群工作机器返回的压缩结果,并对压缩结果进行合并,得到待压缩游戏贴图对应的压缩结果。
具体的,对压缩结果进行合并的代码如图6所示。
在图4至图6中,部分内部调用的代码包括astc_get_packed_blocks,compress_block,merge_and_store_compressed_blocks等也是新增的函数。
在本发明实施例中,提供了一种游戏贴图的压缩方法,该方法包括:获取待压缩游戏贴图和对待压缩游戏贴图进行压缩时的全局变量;对待压缩游戏贴图进行分块处理,并基于分块处理得到的多个待压缩图像块和全局变量确定多个待压缩子任务;向集群工作机器分发多个待压缩子任务,以使集群工作机器对待压缩子任务中的待压缩图像块进行astc压缩;接收集群工作机器返回的压缩结果,并对压缩结果进行合并,得到待压缩游戏贴图对应的压缩结果。通过上述描述可知,本发明将待压缩游戏贴图分割为多个待压缩图像块,进而确定多个待压缩子任务,然后由集群工作机器对其接收到的待压缩子任务中的待压缩图像块进行astc压缩,该方式能够提高单张贴图的压缩效率,缓解了现有的游戏贴图的压缩方法在对单张贴图压缩时耗时长的技术问题。
上述内容对本发明的游戏贴图的压缩方法进行了简要描述,下面对其中涉及到具体内容进行详细描述。
在本发明的一个可选实施例中,步骤S104,对待压缩游戏贴图进行分块处理的步骤包括:基于astc压缩时的压缩图像块对待压缩游戏贴图进行分块处理。
具体的,通常将若干个astc压缩时的压缩图像块(即astc-block)作为一个待压缩图像块,对每张待压缩游戏贴图进行分块处理。
在本发明的一个可选实施例中,步骤S104,基于分块处理得到的多个待压缩图像块和全局变量确定多个待压缩子任务的步骤包括:在多个待压缩图像块中,将预设数量个待压缩图像块和全局变量作为一个待压缩子任务进行打包,得到多个待压缩子任务。
在本发明实施例中,多个待压缩图像块一般为2的整数次幂个图像块,上述预设数量个一般也为2的整数次幂,如此得到的多个待压缩子任务中各个待压缩子任务所包含的待压缩图像块的数量相等。
在本发明的一个可选实施例中,步骤S106,向集群工作机器分发多个待压缩子任务的步骤包括:根据集群工作机器中目标工作机器发送的压缩任务请求向目标工作机器分发待压缩子任务;其中,当目标工作机器处于空闲状态时,目标工作机器向本地机器发送压缩任务请求。
在本发明实施例中,待压缩子任务的分发是由集群工作机器拉取待压缩子任务的方式实现的,也就是当集群工作机器中的任意机器处于空闲状态时,便会向本地机器发起压缩任务请求,本地机器采用Fastbuild分布式任务框架再向发起压缩任务请求的机器发送待压缩子任务,以使集群工作机器执行图像的压缩过程。
在本发明的一个可选实施例中,在获取待压缩游戏贴图和对待压缩游戏贴图进行压缩时的全局变量之前,该方法还包括:
对Fastbuild分布式任务框架进行子任务扩展,使得Fastbuild分布式任务框架支持多个待压缩子任务的拆分、多个待压缩子任务的分发和压缩结果的合并。
具体的,Fastbuild为一个开源的分布式编译工具,将其扩展为分布式任务处理,核心是对其中的ExecNode节点属性,增加Input,Output path等输入输出参数,图7示出了Fastbuild的一个分布式任务的配置文件。该配置文件定义了一个任务,比如用什么程序执行,执行的路径,执行的参数,输入文件,输出文件等。Fastbuild通过读这份配置来决定分发的内容。即其定义了一个chef任务,可以被分发到任意的Fastbuild节点运行。
图8示出了传统开源Fastbuild分布式任务框架的工作流程,其仅支持以单张完整待压缩游戏贴图为粒度的分布式任务处理。图8中,每个worker(即工作机器)上运行的Exe任务只能针对单个文件输入(也就是单张完整的待压缩游戏贴图)做执行。
为了实现本发明的游戏贴图的压缩方法,需要对Fastbuild进行子任务扩展,使得Fastbuild分布式任务框架支持多个待压缩子任务的拆分、多个待压缩子任务的分发和压缩结果的合并。
进行子任务扩展之后的Fastbuild的配置文件如图9所示,其中的PreArguments和FinishArguments就是分块与合并的过程。在ExecNode::DoPreBuildProcess中做子任务的分割(代码如图10所示),在DoRemoteBuildProcess函数中做压缩任务的执行(针对待压缩子任务做压缩),在ProcessJobResult函数中做子任务的合并(代码如图11所示)。
Fastbuild分布式任务框架进行子任务扩展之后的工作流程如图12所示。图12中,将一个任务的处理细分为了三个流程,对应的分别使用三个不同的命令行参数来执行exe,首先Fastbuild在本地机器先对整张贴图的压缩任务进行预处理,将整张贴图的压缩任务细分为许多待压缩子任务(对应于图中的①),并且在本地机器上保存了一个存储有任务信息的头数据,然后将待压缩子任务一个个分发给worker(集群工作机器中的机器),在服务器上使用共享内存的方式,处理和接收数据(数据是指待压缩子任务),因为数据小而且数量多,这样既可以加快工作效率也可以避免临时文件的产生。同时本地机器上的FastBuild也相当于一个worker,会对待压缩子任务进行第②步的处理(即压缩),最后处理完的数据被回传给FastBuild,在所有数据(此时的数据是指压缩结果)都传回来后,会在本地机器上进行最后一步的处理,对应到astc压缩上就是在本地对所有压缩结果进行合并以及保存。图12中,每个worker(即工作机器)上运行的Exe任务的Data可以是一个待压缩子任务(单张待压缩游戏贴图的一部分)。
在本发明的一个可选实施例中,对压缩结果进行合并的步骤包括:在目标待压缩子任务的存储位置存储对应的压缩结果,完成对压缩结果进行合并的过程,其中,目标待压缩子任务为多个待压缩子任务中的任一待压缩子任务。
具体的,参考图12,在split(待压缩子任务分割)和comress(压缩结果合并)的过程中,都使用了共享内存,这部分数据的填充实际上是Fastbuild收到网络数据(即压缩结果)之后直接放在共享内存中,避免了每个待压缩子任务单独存文件然后再启动astc.exe读文件的冗余步骤,减少压缩的额外开销。
下面结合图13再对本发明的游戏贴图的压缩方法的过程进行整体介绍。
输入待压缩游戏贴图,剥离对应的全局变量,然后对待压缩游戏贴图进行分块处理,得到多个图像块,进而将预设数量个待压缩图像块和全局变量作为一个待压缩子任务进行打包,得到多个待压缩子任务(图13中的all blocks),将待压缩子任务分发至集群工作机器,集群工作机器对其接收的待压缩子任务中的待压缩图像块进行astc压缩(压缩的具体过程参见图13中的左上角Compress中的内容),最后将压缩结果进行合并(即merge),得到待压缩游戏贴图对应的压缩结果。
本发明将单张待压缩游戏贴图的压缩任务进行了细粒度的拆分,拆分成大量小任务,这些小任务能够快速完成,大大提高了贴图的压缩效率,同时,极大的提高了集群工作机器的负载均衡。
下面将传统压缩方法与本发明的压缩方法进行对比:
(1)传统的压缩方法中,单张贴图只能在1个工作机器上运行,本发明的压缩方法中,单张贴图的压缩可以在多个工作机器上运行,有效加速了单张贴图的压缩时间,同时提高了分布式过程中工作机器的利用率和负载均衡程度;
(2)传统的压缩方法中,单张贴图的压缩任务直接吃满1个工作机器的cpu,本发明的压缩方法中,进行任务的拆分后,可以控制1个工作机器最多同时跑若干个待压缩图像块的压缩,有效控制cpu的占用率;(一些未执行压缩任务的cpu可以用来做其他事情);
(3)本发明的压缩方法中,待压缩子任务非常轻量级,很快就能执行完成,本地机器中止分布式服务便会很迅速,能够及时释放系统资源。
发明人针对单张贴图的astc压缩,测试了本发明的压缩方法与传统压缩方法的效果,在4个工作机器,i7处理器,平均每个工作机器开启10个线程的环境下进行了对比测试。
图14示出了整张压缩与分块压缩的时间比例示意图,图15示出了整张压缩与分块压缩的具体压缩时间的示意图。为保持任务数和块数比例相同,根据经验选取每个待压缩子任务4096个待压缩图像块,可以达到较高的效率,并且待压缩图像块的大小均为8x8的分块,图15是使用性能较好的工作机器对各种大小的贴图分别进行整张压缩和分块压缩,但4096的贴图整张压缩依然需要16分钟,耗时严重,图14是整张压缩与分块压缩的时间比例,可以看到随着贴图大小增加,分块压缩的效率越来越高,理论上分块压缩的效率应该是无限接近于工作机器的数量4,但是由于工作机器满载时可能导致单张贴图的压缩效率变低,但是总体上可以看到分块压缩是有明显效果的。尤其是对2048,4096这种大的贴图而言,效果十分明显。
本发明实施例还提供了一种游戏贴图的压缩装置,该游戏贴图的压缩装置主要用于执行本发明实施例上述内容所提供的游戏贴图的压缩方法,以下对本发明实施例提供的游戏贴图的压缩装置做具体介绍。
图16是本发明实施例的一种游戏贴图的压缩装置的示意图,如图16所示,该游戏贴图的压缩装置主要包括:获取单元10、待压缩子任务确定单元20、分发单元30和合并单元40,其中:
获取单元,用于获取待压缩游戏贴图和对待压缩游戏贴图进行压缩时的全局变量;
待压缩子任务确定单元,用于对待压缩游戏贴图进行分块处理,并基于分块处理得到的多个待压缩图像块和全局变量确定多个待压缩子任务;
分发单元,用于向集群工作机器分发多个待压缩子任务,以使集群工作机器对待压缩子任务中的待压缩图像块进行astc压缩;
合并单元,用于接收集群工作机器返回的压缩结果,并对压缩结果进行合并,得到待压缩游戏贴图对应的压缩结果。
在本发明实施例中,提供了一种游戏贴图的压缩方法,该方法包括:获取待压缩游戏贴图和对待压缩游戏贴图进行压缩时的全局变量;对待压缩游戏贴图进行分块处理,并基于分块处理得到的多个待压缩图像块和全局变量确定多个待压缩子任务;向集群工作机器分发多个待压缩子任务,以使集群工作机器对待压缩子任务中的待压缩图像块进行astc压缩;接收集群工作机器返回的压缩结果,并对压缩结果进行合并,得到待压缩游戏贴图对应的压缩结果。通过上述描述可知,本发明将待压缩游戏贴图分割为多个待压缩图像块,进而确定多个待压缩子任务,然后由集群工作机器对其接收到的待压缩子任务中的待压缩图像块进行astc压缩,该方式能够提高单张贴图的压缩效率,缓解了现有的游戏贴图的压缩方法在对单张贴图压缩时耗时长的技术问题。
可选地,待压缩子任务确定单元还用于:基于astc压缩时的压缩图像块对待压缩游戏贴图进行分块处理。
可选地,待压缩子任务确定单元还用于:在多个待压缩图像块中,将预设数量个待压缩图像块和全局变量作为一个待压缩子任务进行打包,得到多个待压缩子任务。
可选地,分发单元还用于:根据集群工作机器中目标工作机器发送的压缩任务请求向目标工作机器分发待压缩子任务;其中,当目标工作机器处于空闲状态时,目标工作机器向本地机器发送压缩任务请求。
可选地,分发单元还用于:采用Fastbuild分布式任务框架向集群工作机器分发多个待压缩子任务。
可选地,该装置还用于:对Fastbuild分布式任务框架进行子任务扩展,使得Fastbuild分布式任务框架支持多个待压缩子任务的拆分、多个待压缩子任务的分发和压缩结果的合并。
可选地,合并单元还用于:在目标待压缩子任务的存储位置存储对应的压缩结果,完成对压缩结果进行合并的过程,其中,目标待压缩子任务为多个待压缩子任务中的任一待压缩子任务。
本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,前述描述的系统、装置和单元的具体工作过程,均可以参考上述方法实施例中的对应过程,在此不再赘述。本申请实施例提供的游戏贴图的压缩装置与上述实施例提供的游戏贴图的压缩方法具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果。
本申请实施例还提供了一种电子设备,具体的,该电子设备包括处理器和存储装置;该存储装置上存储有计算机程序,计算机程序在被所述处理器运行时执行如上实施方式所述的方法。
作为一个示例,如图17所示,本申请实施例提供的一种计算机设备500,包括:处理器501、存储器502和总线,所述存储器502存储有所述处理器501可执行的机器可读指令,当计算机设备运行时,所述处理器501与所述存储器502之间通过总线通信,所述处理器501执行所述机器可读指令,以执行如上述游戏贴图的压缩方法的步骤。
具体地,上述存储器502和处理器501能够为通用的存储器和处理器,这里不做具体限定,当处理器501运行存储器502存储的计算机程序时,能够执行上述游戏贴图的压缩方法。
其中,上述计算机设备500可以用于执行图1所示的游戏贴图的压缩方法,此时该计算机设备500可以是开发终端。
对应于上述游戏贴图的压缩方法,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有机器可运行指令,所述计算机可运行指令在被处理器调用和运行时,所述计算机可运行指令促使所述处理器运行上述游戏贴图的压缩方法的步骤。
本申请实施例所提供的游戏贴图的压缩装置可以为设备上的特定硬件或者安装于设备上的软件或固件等。本申请实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,前述描述的系统、装置和单元的具体工作过程,均可以参考上述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述移动控制方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的范围,都应涵盖在本申请的保护范围之内。
Claims (9)
1.一种游戏贴图的压缩方法,其特征在于,包括:
获取待压缩游戏贴图和对所述待压缩游戏贴图进行压缩时的全局变量,其中,所述全局变量包括:是否为HDR、所述待压缩游戏贴图的像素区域Alpha的均值、所述待压缩游戏贴图的像素区域的方差;
对所述待压缩游戏贴图进行分块处理,并基于分块处理得到的多个待压缩图像块和所述全局变量确定多个待压缩子任务;
向集群工作机器分发所述多个待压缩子任务,以使所述集群工作机器对待压缩子任务中的待压缩图像块进行astc压缩;
接收所述集群工作机器返回的压缩结果,并对所述压缩结果进行合并,得到所述待压缩游戏贴图对应的压缩结果;
其中,基于分块处理得到的多个待压缩图像块和所述全局变量确定多个待压缩子任务包括:
在所述多个待压缩图像块中,将预设数量个待压缩图像块和所述全局变量作为一个待压缩子任务进行打包,得到所述多个待压缩子任务。
2.根据权利要求1所述的方法,其特征在于,对所述待压缩游戏贴图进行分块处理包括:
基于astc压缩时的压缩图像块对所述待压缩游戏贴图进行分块处理。
3.根据权利要求1所述的方法,其特征在于,向集群工作机器分发所述多个待压缩子任务包括:
根据所述集群工作机器中目标工作机器发送的压缩任务请求向所述目标工作机器分发所述待压缩子任务;
其中,当所述目标工作机器处于空闲状态时,所述目标工作机器向本地机器发送所述压缩任务请求。
4.根据权利要求1所述的方法,其特征在于,向集群工作机器分发所述多个待压缩子任务包括:
采用Fastbuild分布式任务框架向所述集群工作机器分发所述多个待压缩子任务。
5.根据权利要求1所述的方法,其特征在于,在获取待压缩游戏贴图和对所述待压缩游戏贴图进行压缩时的全局变量之前,所述方法还包括:
对Fastbuild分布式任务框架进行子任务扩展,使得所述Fastbuild分布式任务框架支持所述多个待压缩子任务的拆分、所述多个待压缩子任务的分发和所述压缩结果的合并。
6.根据权利要求1所述的方法,其特征在于,对所述压缩结果进行合并包括:
在目标待压缩子任务的存储位置存储对应的压缩结果,完成对所述压缩结果进行合并的过程,其中,所述目标待压缩子任务为所述多个待压缩子任务中的任一待压缩子任务。
7.一种游戏贴图的压缩装置,其特征在于,包括:
获取单元,用于获取待压缩游戏贴图和对所述待压缩游戏贴图进行压缩时的全局变量,其中,所述全局变量包括:是否为HDR、所述待压缩游戏贴图的像素区域Alpha的均值、所述待压缩游戏贴图的像素区域的方差;
待压缩子任务确定单元,用于对所述待压缩游戏贴图进行分块处理,并基于分块处理得到的多个待压缩图像块和所述全局变量确定多个待压缩子任务;
分发单元,用于向集群工作机器分发所述多个待压缩子任务,以使所述集群工作机器对待压缩子任务中的待压缩图像块进行astc压缩;
合并单元,用于接收所述集群工作机器返回的压缩结果,并对所述压缩结果进行合并,得到所述待压缩游戏贴图对应的压缩结果;
所述待压缩子任务确定单元还用于:在所述多个待压缩图像块中,将预设数量个待压缩图像块和所述全局变量作为一个待压缩子任务进行打包,得到所述多个待压缩子任务。
8.一种电子设备,其特征在于,包括存储器、处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述权利要求1至6任一项所述的方法的步骤。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有机器可运行指令,所述计算机可运行指令在被处理器调用和运行时,所述计算机可运行指令促使所述处理器运行所述权利要求1至6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010855619.6A CN111968190B (zh) | 2020-08-21 | 2020-08-21 | 游戏贴图的压缩方法、装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010855619.6A CN111968190B (zh) | 2020-08-21 | 2020-08-21 | 游戏贴图的压缩方法、装置和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111968190A CN111968190A (zh) | 2020-11-20 |
CN111968190B true CN111968190B (zh) | 2024-02-09 |
Family
ID=73390713
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010855619.6A Active CN111968190B (zh) | 2020-08-21 | 2020-08-21 | 游戏贴图的压缩方法、装置和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111968190B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107633538A (zh) * | 2016-07-18 | 2018-01-26 | 想象技术有限公司 | Mip映射压缩 |
CN109603155A (zh) * | 2018-11-29 | 2019-04-12 | 网易(杭州)网络有限公司 | 合并贴图的获取方法、装置、存储介质、处理器及终端 |
CN110570493A (zh) * | 2019-09-16 | 2019-12-13 | 网易(杭州)网络有限公司 | 字体贴图处理方法及装置、存储介质、电子设备 |
CN110609726A (zh) * | 2019-09-16 | 2019-12-24 | 网易(杭州)网络有限公司 | 贴图处理方法及装置、计算机可读存储介质、电子设备 |
CN111111172A (zh) * | 2019-12-02 | 2020-05-08 | 网易(杭州)网络有限公司 | 游戏场景的地表处理方法、装置、处理器及电子装置 |
US10742992B1 (en) * | 2019-03-26 | 2020-08-11 | Electronic Arts Inc. | Video compression for video games |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10244250B2 (en) * | 2015-05-29 | 2019-03-26 | Samsung Electronics Co., Ltd. | Variable-rate texture compression using fixed-rate codes |
US10970880B2 (en) * | 2018-08-09 | 2021-04-06 | Electronic Arts Inc. | Texture compression |
-
2020
- 2020-08-21 CN CN202010855619.6A patent/CN111968190B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107633538A (zh) * | 2016-07-18 | 2018-01-26 | 想象技术有限公司 | Mip映射压缩 |
CN109603155A (zh) * | 2018-11-29 | 2019-04-12 | 网易(杭州)网络有限公司 | 合并贴图的获取方法、装置、存储介质、处理器及终端 |
US10742992B1 (en) * | 2019-03-26 | 2020-08-11 | Electronic Arts Inc. | Video compression for video games |
CN110570493A (zh) * | 2019-09-16 | 2019-12-13 | 网易(杭州)网络有限公司 | 字体贴图处理方法及装置、存储介质、电子设备 |
CN110609726A (zh) * | 2019-09-16 | 2019-12-24 | 网易(杭州)网络有限公司 | 贴图处理方法及装置、计算机可读存储介质、电子设备 |
CN111111172A (zh) * | 2019-12-02 | 2020-05-08 | 网易(杭州)网络有限公司 | 游戏场景的地表处理方法、装置、处理器及电子装置 |
Non-Patent Citations (1)
Title |
---|
韩立敏 ; 田泽 ; 张骏 ; 郑新建 ; 任向隆 ; .图形处理器流水线数据压缩技术研究综述.计算机应用研究.2017,(03),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN111968190A (zh) | 2020-11-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110262901B (zh) | 一种数据处理方法及数据处理系统 | |
JP2010527194A (ja) | 動的運動ベクトル分析方法 | |
US8872839B2 (en) | Real-time atlasing of graphics data | |
CN111708642B (zh) | Vr系统中处理器性能优化方法、装置及vr设备 | |
CN103310460A (zh) | 图像特征提取的方法及系统 | |
CN109725977A (zh) | 一种基于Android系统的多应用显示方法及终端设备 | |
CN111338769B (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
CN112948025B (zh) | 数据加载方法、装置及存储介质、计算设备、计算系统 | |
CN111968190B (zh) | 游戏贴图的压缩方法、装置和电子设备 | |
CN116560802B (zh) | 一种基于虚拟机负载的虚拟机自适应热迁移方法及系统 | |
CN111310638B (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
CN112631994A (zh) | 数据迁移方法及系统 | |
WO2015058594A1 (zh) | 一种进程加载方法、装置及系统 | |
CN109448092B (zh) | 一种基于动态任务粒度的负载均衡集群渲染方法 | |
CN111338803A (zh) | 一种线程处理方法和装置 | |
CN114201306B (zh) | 基于负载均衡技术的多维地理空间实体分布方法及系统 | |
CN115114022A (zh) | 对gpu资源进行使用的方法、系统、设备及介质 | |
CN113626099B (zh) | 应用程序的启动方法、装置及电子设备 | |
CN110851433A (zh) | 键值存储系统键优化方法、存储介质、电子设备及系统 | |
CN110856045B (zh) | 视频处理方法、电子设备和存储介质 | |
CN114489930A (zh) | 一种虚拟机热迁移方法、装置及系统 | |
CN114116123A (zh) | 应用的扩容方法及装置 | |
CN110796587B (zh) | Drawcall调用处理方法、装置、终端及存储介质 | |
CN114625474A (zh) | 容器迁移方法、装置、电子设备及存储介质 | |
CN110377398B (zh) | 一种资源管理方法、装置及主机设备、存储介质 |
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 |