CN112529995A - 图像渲染计算方法、装置、存储介质以及终端 - Google Patents
图像渲染计算方法、装置、存储介质以及终端 Download PDFInfo
- Publication number
- CN112529995A CN112529995A CN202011596235.3A CN202011596235A CN112529995A CN 112529995 A CN112529995 A CN 112529995A CN 202011596235 A CN202011596235 A CN 202011596235A CN 112529995 A CN112529995 A CN 112529995A
- Authority
- CN
- China
- Prior art keywords
- rendering
- pipeline
- frame image
- current frame
- target
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/20—Perspective computation
- G06T15/205—Image-based rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/80—Shading
-
- 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
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/60—Methods for processing data by generating or executing the game program
- A63F2300/66—Methods for processing data by generating or executing the game program for rendering three dimensional images
-
- 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
Abstract
本申请公开了一种图像渲染计算方法、装置、存储介质以及终端,其中,方法包括:检测到图形API指令时,识别当前帧图像对应的目标渲染场景;根据不同渲染场景与不同管线异构策略的对应关系,确定所述目标渲染场景对应的目标管线异构策略;采用所述目标管线异构策略对所述当前帧图像进行渲染计算。采用本申请实施例中,达到不影响性能的前提下优化功耗。
Description
技术领域
本申请涉及通信技术领域,尤其涉及一种图像渲染计算方法、装置、存储介质以及终端。
背景技术
随着电子设备(如手机、平板电脑等)的大量普及应用,电子设备能够支持的应用越来越多,功能越来越强大,电子设备向着多样化、个性化的方向发展,成为用户生活中不可缺少的电子用品。
尤其是游戏,在电子设备中得到广泛应用,对于游戏而言,系统功耗较大,为了降低功耗,多数都是简单的使用CPU、GPU或内存的限频办法,但降低功耗会带来性能下降,性能下降又会影响渲染效果,渲染效果直接影响用户视觉体验。
发明内容
本申请提供一种图像渲染计算方法、装置、存储介质以及终端,达到不影响性能的前提下优化功耗。
第一方面,本申请实施例提供一种图像渲染计算方法,该方法包括:
检测到图形API指令时,识别当前帧图像对应的目标渲染场景;
根据不同渲染场景与不同管线异构策略的对应关系,确定所述目标渲染场景对应的目标管线异构策略;
采用所述目标管线异构策略对所述当前帧图像进行渲染计算。
第二方面,本申请实施例提供一种图像渲染计算装置,该装置包括:
场景识别模块,用于检测到图形API指令时,识别当前帧图像对应的目标渲染场景;
策略确定模块,用于根据不同渲染场景与不同管线异构策略的对应关系,确定所述目标渲染场景对应的目标管线异构策略;
渲染计算模块,用于采用所述目标管线异构策略对所述当前帧图像进行渲染计算。
第三方面,本申请实施例提供一种计算机存储介质,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行上述的方法的步骤。
第四方面,本申请实施例提供一种终端,包括:处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行上述的方法的步骤。
本申请一些实施例提供的技术方案带来的有益效果至少包括:
当检测到图形API指令时,识别当前帧图像对应的目标渲染场景,再根据不同渲染场景与不同管线异构策略的对应关系,确定所述目标渲染场景对应的目标管线异构策略,进而采用所述目标管线异构策略对所述当前帧图像进行渲染计算。通过识别具体的渲染场景来选择合适的管线异构策略进行渲染计算,达到不影响性能的前提下优化功耗,即不影响性能的前提下保持渲染效果。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的终端的结构示意图;
图2是本申请实施例提供的操作系统和用户空间的结构示意图;
图3是图1中安卓操作系统的架构图;
图4为本申请实施例提供的一种图像渲染计算方法的流程示意图;
图5为本申请另一实施例提供的一种图像渲染计算方法的流程示意图;
图6是本申请实施例提供的一种基于纹理名称确定渲染场景的举例示意图;
图7是本申请实施例提供的另一种基于纹理名称确定渲染场景的举例示意图;
图8是本申请实施例提供的一种并行渲染管线的举例示意图;
图9是本申请实施例提供的一种连续地址空间存放API指令的举例示意图;
图10为本申请另一实施例提供的一种图像渲染计算装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。在本申请的描述中,需要说明的是,除非另有明确的规定和限定,“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。此外,在本申请的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
请参考图1,其示出了本申请一个示例性实施例提供的终端的结构方框图。所述终端可以为手机、电脑、平板、交互智能平板等终端设备。本申请中的终端可以包括一个或多个如下部件:处理器110、存储器120、输入装置130、输出装置140和总线150。处理器110、存储器120、输入装置130和输出装置140之间可以通过总线150连接。
处理器110可以包括一个或者多个处理核心。处理器110利用各种接口和线路连接整个终端内的各个部分,通过运行或执行存储在存储器120内的指令、程序、代码集或指令集,以及调用存储在存储器120内的数据,执行终端100的各种功能和处理数据。可选地,处理器110可以采用数字信号处理(digital signal processing,DSP)、现场可编程门阵列(field-programmable gate array,FPGA)、可编程逻辑阵列(programmable logicArray,PLA)中的至少一种硬件形式来实现。处理器110可集成中央处理器(centralprocessing unit,CPU)、图像处理器(graphics processing unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户页面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器110中,单独通过一块通信芯片进行实现。
存储器120可以包括随机存储器(random Access Memory,RAM),也可以包括只读存储器(read-only memory,ROM)。可选地,该存储器120包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器120可用于存储指令、程序、代码、代码集或指令集。存储器120可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等,该操作系统可以是安卓(Android)系统,包括基于Android系统深度开发的系统、苹果公司开发的IOS系统,包括基于IOS系统深度开发的系统或其它系统。存储数据区还可以存储终端在使用中所创建的数据比如电话本、音视频数据、聊天记录数据,等。
参见图2所示,存储器120可分为操作系统空间和用户空间,操作系统即运行于操作系统空间,原生及第三方应用程序即运行于用户空间。为了保证不同第三方应用程序均能够达到较好的运行效果,操作系统针对不同第三方应用程序为其分配相应的系统资源。然而,同一第三方应用程序中不同应用场景对系统资源的需求也存在差异,比如,在本地资源加载场景下,第三方应用程序对磁盘读取速度的要求较高;在动画渲染场景下,第三方应用程序则对GPU性能的要求较高。而操作系统与第三方应用程序之间相互独立,操作系统往往不能及时感知第三方应用程序当前的应用场景,导致操作系统无法根据第三方应用程序的具体应用场景进行针对性的系统资源适配。
为了使操作系统能够区分第三方应用程序的具体应用场景,需要打通第三方应用程序与操作系统之间的数据通信,使得操作系统能够随时获取第三方应用程序当前的场景信息,进而基于当前场景进行针对性的系统资源适配。
以操作系统为Android系统为例,存储器120中存储的程序和数据如图3所示,存储器120中可存储有Linux内核层320、系统运行时库层340、应用框架层360和应用层380,其中,Linux内核层320、系统运行库层340和应用框架层360属于操作系统空间,应用层380属于用户空间。Linux内核层320为终端的各种硬件提供了底层的驱动,如显示驱动、音频驱动、摄像头驱动、蓝牙驱动、Wi-Fi驱动、电源管理等。系统运行库层340通过一些C/C++库来为Android系统提供了主要的特性支持。如SQLite库提供了数据库的支持,OpenGL/ES库提供了3D绘图的支持,Webkit库提供了浏览器内核的支持等。在系统运行时库层340中还提供有安卓运行时库(Android runtime),它主要提供了一些核心库,能够允许开发者使用Java语言来编写Android应用。应用框架层360提供了构建应用程序时可能用到的各种API,开发者也可以通过使用这些API来构建自己的应用程序,比如活动管理、窗口管理、视图管理、通知管理、内容提供者、包管理、通话管理、资源管理、定位管理。应用层380中运行有至少一个应用程序,这些应用程序可以是操作系统自带的原生应用程序,比如联系人程序、短信程序、时钟程序、相机应用等;也可以是第三方开发者所开发的第三方应用程序,比如游戏类应用程序、即时通信程序、相片美化程序、文字翻译程序等。
其中,输入装置130用于接收输入的指令或数据,输入装置130包括但不限于键盘、鼠标、摄像头、麦克风或触控设备。输出装置140用于输出指令或数据,输出装置140包括但不限于显示设备和扬声器等。在一个示例中,输入装置130和输出装置140可以合设,输入装置130和输出装置140为触摸显示屏。
所述触摸显示屏可被设计成为全面屏、曲面屏或异型屏。触摸显示屏还可被设计成为全面屏与曲面屏的结合,异型屏与曲面屏的结合,本申请实施例对此不加以限定。
除此之外,本领域技术人员可以理解,上述附图所示出的终端的结构并不构成对终端的限定,终端可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。比如,终端中还包括射频电路、输入单元、传感器、音频电路、无线保真(wirelessfidelity,WiFi)模块、电源、蓝牙模块等部件,在此不再赘述。
在本申请实施例中,各步骤的执行主体可以是上文介绍的终端。可选地,各步骤的执行主体为终端的操作系统。操作系统可以是安卓系统,也可以是IOS系统,或者其它操作系统,本申请实施例对此不作限定。
在图3所示的终端中,处理器110可以用于调用存储器120中存储的应用程序,并具体执行本申请实施例的图像渲染计算方法。
下面结合具体的实施例对本申请进行详细介绍。
在一个实施例中,特提出了一种图像渲染计算方法,该方法可依赖于计算机程序实现,可运行于基于冯诺依曼体系的图像渲染计算装置上。该计算机程序可集成在应用中,也可作为独立的工具类应用运行。
请参阅图4,图4为本申请实施例提供的一种图像渲染计算方法的流程示意图。
具体的,如图4所示,一种图像渲染计算方法包括:
S101、检测到图形API指令时,识别当前帧图像对应的目标渲染场景;
图形API,其本质是一整套编程接口,用来将应用程序与显卡驱动联系起来。有了图形API,可以仅仅调用它的函数来更改渲染状态、缓存顶点数据、开始绘制等等,而如果没有图形API,就需要直接调用显卡驱动的接口来进行渲染,这会涉及到非常多的硬件接口,例如对寄存器的操作,相当繁琐。
目前,比较常见的图形API指令主要包括:OpenGL、OpenGL ES、OpenCV、DirectX、Metal。
OpenGL是一个跨平台、跨语言的编程图形框架,主要用于windows、mac等PC端,它将计算机资源抽象成一个个OpenGL对象,对这些资源的操作抽象为一个个OpenGL指令。
OpenGL ES是OpenGL三维图像API的子集,主要是针对嵌入式设备的图形处理,比如安卓、iOS等,去除了许多不必要和性能较低的接口。
OpenCV与OpenGL是图形API中两个大的分支,类似于iOS中的OC和swift,是两个不同的方向,OpenCV主要用于识别技术,例如人脸识别、身份识别、物体识别等,该API的使用需要与人工智能相结合。
DirectX由很多API组成,是一个多媒体处理框架,并不是单一的图形API,DirectX仅支持Windows平台,该框架可以大致分为4类,包括显示、声音、输入和网络。
具体实现中,图形API指令的目的就是图形底层渲染的实现。在图像绘制场景(如游戏场景、电影等特效以及可视化设计)下,由于需要持续渲染场景图像,因而会持续调用图形API的函数,进而会持续检测到图形API指令。在当前检测到图形API指令时,识别当前帧图像对应的目标渲染场景。
图形一般指用计算机绘制的画面,如直线、圆、圆弧、意曲线和图表等;图像则是指由输入设备捕捉的实际场景画面或以数字化形式存储的任意画面。可以理解的是,一帧图像可以包括多个图形。
可以通过图像中所包含的图形的组合来识别图像的渲染场景,如大海场景、建筑楼场景、闹市场景等。
S102、根据不同渲染场景与不同管线异构策略的对应关系,确定所述目标渲染场景对应的目标管线异构策略;
渲染管线也称为渲染流水线,是显示芯片内部处理图形信号相互独立的并行处理单元。在某种程度上可以把渲染管线比喻为工厂里面常见的各种生产流水线,工厂里的生产流水线是为了提高产品的生产能力和效率,而渲染管线则是提高显卡的工作能力和效率。渲染管线的数量一般是以像素渲染流水线的数量×每管线的纹理单元数量来表示。例如,GeForce 6800Ultra的渲染管线是16×1,就表示其具有16条像素渲染流水线,每管线具有1个纹理单元;GeForce4MX440的渲染管线是2×2,就表示其具有2条像素渲染流水线,每管线具有2个纹理单元等等,其余表示方式以此类推。
渲染管线的数量是决定显示芯片性能和档次的最重要的参数之一,在相同的显卡核心频率下,更多的渲染管线也就意味着更大的像素填充率和纹理填充率,从显卡的渲染管线数量上可以大致判断出显卡的性能高低档次。但显卡性能并不仅仅只是取决于渲染管线的数量,同时还取决于显示核心架构、渲染管线的执行效率、顶点着色单元的数量以及显卡的核心频率和显存频率等等方面。一般来说在相同的显示核心架构下,渲染管线越多也就意味着性能越高,例如16×1架构的GeForce 6800GT其性能要强于12×1架构的GeForce6800;而在不同的显示核心架构下,渲染管线的数量多就并不意味着性能更好,例如4×2架构的GeForce2 GTS其性能就不如2×2架构的GeForce4 MX440。
通过对传统的渲染管线进行异构处理,并通过异构后的渲染管线进行渲染计算,以达到降低功耗的目的。
例如,有的管线异构策略适合近景,计算量大,细节丰富的渲染场景;有的管线异构策略适合远景,计算量小,细节简单的渲染场景,这两种场景的算力需求差别可超过103。
预先设置有不同渲染场景与不同管线异构策略的对应关系,根据该对应关系即可确定目标渲染场景对应的目标管线异构策略。
其中,所述管线异构策略至少包括异步混合渲染管线策略、渲染管线并行策略、渲染管线重用策略。
所述异步混合渲染管线策略是指,针对中央处理器(Central Processing Unit,CPU)瓶颈的计算,充分利用GPU上的通用图形处理器(General-purpose computing ongraphics processing units,GPGPU)的计算能力,将CPU上的部分渲染计算移至GPGPU的计算管线进行计算,以减小CPU的计算压力。
所述渲染管线并行策略是指,将传统的串行渲染管线,动态重构为并行渲染管线,并通过并行的渲染管线进行渲染计算。
所述渲染管线重用是指,确定当前帧图像中所包含的第一渲染管线以及上一帧图像中所包含的第二渲染管线,当所述第一渲染管线与所述第二渲染管线相同时,采用所述第二渲染管线对所述当前帧图像进行渲染计算。
所述渲染管线压缩是指依次读取当前帧图像对应的API指令,将所述API指令存放至队列中,为所述队列分配连续的地址空间,在所述地址空间中进行渲染计算。即可以对存储的API指令进行批量处理,减少缓存丢失,增加缓存性能。
S103、采用所述目标管线异构策略对所述当前帧图像进行渲染计算。
具体实现中,通过所确定的目标管线异构策略对当前需要渲染的图像进行渲染计算,并在计算完成后调用GPU驱动进行渲染。
渲染是指用软件将模型生成图像的过程,用于描述计算视频编辑软件中的效果,以及生成最终视频的输出。
在本申请实施例中,当检测到图形API指令时,识别当前帧图像对应的目标渲染场景,再根据不同渲染场景与不同管线异构策略的对应关系,确定所述目标渲染场景对应的目标管线异构策略,进而采用所述目标管线异构策略对所述当前帧图像进行渲染计算。通过识别具体的渲染场景来选择合适的管线异构策略进行渲染计算,达到不影响性能的前提下优化功耗,即不影响性能的前提下保持渲染效果。
请参阅图5,图5为本申请另一实施例提供的一种图像渲染计算方法的流程示意图。
如图5所示,一种图像渲染计算方法包括:
S201、检测到图形API指令时,获取当前帧图像的纹理信息,基于所述纹理信息确定所述当前帧图像对应的目标渲染场景;
纹理是一种反映图像中同质现象的视觉特征,它体现了物体表面的具有缓慢变化或者周期性变化的表面结构组织排列属性。纹理具有三大标志:某种局部序列性不断重复、非随机排列、纹理区域内大致为均匀的统一体。
纹理信息的提取,一般都是通过设定一定大小的窗口,然后从中取得纹理信息。
具体实现中,当检测到图形API指令时,通过设定的窗口提取当前帧图像的纹理信息,确定该图像的纹理名称,从而根据纹理名称确定当前帧图像对应的目标渲染场景,再根据之前预设启用对应的优化策略。
举例如图6所示,和平精英大厅含有纹理IslandModeBg,检测到此纹理即可判断游戏未进入战斗场景,优化策略可不启用。
举例如图7所示,王者荣耀战斗场景含有纹理SpriteAtlasTexture-Battle,检测到此纹理即可判断游戏进入战斗场景,此时用户操作频繁,游戏特效复杂,游戏画面的渲染数据量大,因而启用优化策略“渲染管线压缩”,将与游戏画面对应的当前帧图像的API指令,存放至队列中,并为所述队列分配连续的地址空间,在所述地址空间中进行渲染计算,实现对API指令进行批量处理,减少缓存丢失,增加缓存性能,提高游戏画面渲染效率,降低时延。
S202、根据不同渲染场景与不同管线异构策略的对应关系,确定所述目标渲染场景对应的目标管线异构策略;
具体可参见S102,此处不再赘述。
S203、采用CPU进行第一渲染计算,并采用图形处理器中的计算管线进行所述第一渲染计算之外的第二渲染计算;
通用图形处理器(General-purpose computing on graphics processingunits,GPGPU),是一种利用处理图形任务的图形处理器来计算原本由CPU处理的通用计算任务。
当CPU负载过大,或者当前的渲染计算量较大时,将CPU上的部分渲染计算移至GPGPU的计算管线,通过CPU和GPGPU的渲染计算,分担了CPU渲染计算的压力,同时可以优化系统功耗。其中,在CPU上未移至GPGPU上的渲染计算为第一渲染计算,从CPU上移至GPGPU上的部分渲染计算即为第二渲染计算。
S204、将同步渲染管线重构为并发渲染管线,并采用所述并发渲染管线进行渲染计算;
同步渲染管线可理解为串行渲染管线,即通过CPU上串行排列的渲染管线逐个进行渲染计算,而并发渲染管线是指并行排列的渲染管线,如图8所示,其中,一行表示一个渲染管线,如Context 0、Culling Job 0、LOD Job 0、Occlu.Job0等为一个渲染管线,而Context 1、Culling Job 1、LOD Job1、Occlu.Job 1等为另一个渲染管线,通过并行渲染管线同时进行渲染计算,相对采用串行渲染管线而言,可以减少延迟,增加吞吐量。
S205、确定当前帧图像中所包含的第一渲染管线以及上一帧图像中所包含的第二渲染管线;当所述第一渲染管线与所述第二渲染管线相同时,采用所述第二渲染管线对所述当前帧图像进行渲染计算;
可以理解的是,渲染管线中包括顶点着色器、几何着色器、裁剪、屏幕映射、三角形设定、三角形遍历、像素着色器以及合并阶段等步骤。
顶点着色器是完全可编程的阶段,顶点着色器可以对每个顶点进行诸如变换和变形在内的多种操作,提供了修改/创建/忽略顶点相关属性的功能,这些顶点属性包括颜色、法线、纹理坐标和位置。顶点着色器的任务是将顶点从模型空间转换到齐次裁剪空间。
几何着色器位于顶点着色器之后,允许GPU高效地创建和销毁几何图元。几何着色器是可选的,完全可编程的阶段,主要对图元(点、线、三角形)的顶点进行操作。几何着色器接收顶点着色器的输出作为输入,通过高效的几何运算,将数据输出,数据随后经过几何阶段和光栅化阶段的其他处理后,会发送给像素着色器。
裁剪属于可配置的功能阶段,在此阶段可选运行的裁剪方式,以及添加自定义的裁剪面。
屏幕映射、三角形设置和三角形遍历阶段是固定功能阶段。
像素着色器又称为片断着色器,片元着色器,是完全可编程的阶段,主要作用是进行像素的处理,让复杂的着色方程在每一个像素上执行。
合并阶段处于完全可编程和固定功能之间,尽管不能编程,但是高度可配置,可以进行一系列的操作。除了进行合并操作,还分管颜色修改,Z缓冲,混合,模板和相关缓存的处理。
具体的,由于采用渲染管线进行计算前,需要先为每个渲染管线申请缓存空间buffer,当第一渲染管线所包含的多个步骤与第二渲染管线包含的多个步骤相同时,则无需为第一渲染管线申请buffer,可以直接采用第二渲染管线对当前帧图像进行渲染计算,可以实现帧间重用渲染管线,减少计算开销。
S206、依次读取当前帧图像对应的API指令,将所述API指令存放至队列中;为所述队列分配连续的地址空间,在所述地址空间中进行渲染计算。
可以理解的是,连续的地址空间相当于较大的缓存空间。通过将当前要处理的API指令集中存放到队列中后,再统一为队列分配地址空间,然后在该地址空间中根据API指令进行渲染计算,而不是为每个API指令申请缓存空间,对每个API指令逐个进行渲染计算,从而可以减少缓存丢失,增加缓存性能。
例如,如图9所示,内存空间(Memory)包括DrawBundle 0、DrawBundle1、DrawBundle 2等,此时,内存空间DrawBundle 0、内存空间DrawBundle 1、内存空间DrawBundle 2等构成连续的地址空间,分别用于存放队列中的场景Object 0、场景Object2、场景Object 4的API指令,并在该地址空间中对各个API指令进行渲染计算。
在本申请实施例中,当检测到图形API指令时,识别当前帧图像对应的目标渲染场景,再根据不同渲染场景与不同管线异构策略的对应关系,确定所述目标渲染场景对应的目标管线异构策略,进而采用所述目标管线异构策略对所述当前帧图像进行渲染计算。通过识别具体的渲染场景来选择合适的管线异构策略进行渲染计算,达到不影响性能的前提下优化功耗,即不影响性能的前提下保持渲染效果。
请参阅图10,图10为本申请另一实施例提供的一种图像渲染计算装置的结构示意图,图像渲染计算装置1包括:
场景识别模块10,用于检测到图形API指令时,识别当前帧图像对应的目标渲染场景;
策略确定模块20,用于根据不同渲染场景与不同管线异构策略的对应关系,确定所述目标渲染场景对应的目标管线异构策略;
渲染计算模块30,用于采用所述目标管线异构策略对所述当前帧图像进行渲染计算。
可选的,所述场景识别模块10,具体用于:
获取当前帧图像的纹理信息,基于所述纹理信息确定所述当前帧图像对应的目标渲染场景。
可选的,所述渲染计算模块30,具体用于:
采用CPU进行第一渲染计算,并采用图形处理器中的计算管线进行所述第一渲染计算之外的第二渲染计算。
可选的,所述渲染计算模块30,具体用于:
将同步渲染管线重构为并发渲染管线,并采用所述并发渲染管线进行渲染计算。
可选的,所述渲染计算模块30,具体用于:
确定当前帧图像中所包含的第一渲染管线以及上一帧图像中所包含的第二渲染管线;
当所述第一渲染管线与所述第二渲染管线相同时,采用所述第二渲染管线对所述当前帧图像进行渲染计算。
可选的,所述渲染计算模块30,具体用于:
依次读取当前帧图像对应的API指令,将所述API指令存放至队列中;
为所述队列分配连续的地址空间,在所述地址空间中进行渲染计算。
在本申请实施例中,当检测到图形API指令时,识别当前帧图像对应的目标渲染场景,再根据不同渲染场景与不同管线异构策略的对应关系,确定所述目标渲染场景对应的目标管线异构策略,进而采用所述目标管线异构策略对所述当前帧图像进行渲染计算。通过识别具体的渲染场景来选择合适的管线异构策略进行渲染计算,达到不影响性能的前提下优化功耗,即不影响性能的前提下保持渲染效果。
本申请实施例还提供了一种计算机存储介质,计算机存储介质可以存储有多条指令,指令适于由处理器加载并执行如上述实施例中的任一项的方法的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体或随机存储记忆体等。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (10)
1.一种图像渲染计算方法,其特征在于,所述方法包括:
检测到图形API指令时,识别当前帧图像对应的目标渲染场景;
根据不同渲染场景与不同管线异构策略的对应关系,确定所述目标渲染场景对应的目标管线异构策略;
采用所述目标管线异构策略对所述当前帧图像进行渲染计算。
2.根据权利要求1所述的方法,其特征在于,所述识别当前帧图像对应的目标渲染场景,包括:
获取当前帧图像的纹理信息,基于所述纹理信息确定所述当前帧图像对应的目标渲染场景。
3.根据权利要求1所述的方法,其特征在于,所述采用所述目标管线异构策略对所述当前帧图像进行渲染计算,包括:
采用CPU进行第一渲染计算,并采用图形处理器中的计算管线进行所述第一渲染计算之外的第二渲染计算。
4.根据权利要求1所述的方法,其特征在于,所述采用所述目标管线异构策略对所述当前帧图像进行渲染计算,包括:
将同步渲染管线重构为并发渲染管线,并采用所述并发渲染管线进行渲染计算。
5.根据权利要求1所述的方法,其特征在于,所述采用所述目标管线异构策略对所述当前帧图像进行渲染计算,包括:
确定当前帧图像中所包含的第一渲染管线以及上一帧图像中所包含的第二渲染管线;
当所述第一渲染管线与所述第二渲染管线相同时,采用所述第二渲染管线对所述当前帧图像进行渲染计算。
6.根据权利要求1所述的方法,其特征在于,所述采用所述目标管线异构策略对所述当前帧图像进行渲染计算,包括:
依次读取当前帧图像对应的API指令,将所述API指令存放至队列中;
为所述队列分配连续的地址空间,在所述地址空间中进行渲染计算。
7.一种图像渲染计算装置,其特征在于,所述装置包括:
场景识别模块,用于检测到图形API指令时,识别当前帧图像对应的目标渲染场景;
策略确定模块,用于根据不同渲染场景与不同管线异构策略的对应关系,确定所述目标渲染场景对应的目标管线异构策略;
渲染计算模块,用于采用所述目标管线异构策略对所述当前帧图像进行渲染计算。
8.根据权利要求7所述的装置,其特征在于,所述场景识别模块,具体用于:
获取当前帧图像的纹理信息,基于所述纹理信息确定所述当前帧图像对应的目标渲染场景。
9.一种计算机存储介质,其特征在于,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行如权利要求1~6任意一项所述方法的步骤。
10.一种终端,其特征在于,包括:处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行如权利要求1~6任意一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011596235.3A CN112529995B (zh) | 2020-12-28 | 2020-12-28 | 图像渲染计算方法、装置、存储介质以及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011596235.3A CN112529995B (zh) | 2020-12-28 | 2020-12-28 | 图像渲染计算方法、装置、存储介质以及终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112529995A true CN112529995A (zh) | 2021-03-19 |
CN112529995B CN112529995B (zh) | 2023-03-31 |
Family
ID=74976995
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011596235.3A Active CN112529995B (zh) | 2020-12-28 | 2020-12-28 | 图像渲染计算方法、装置、存储介质以及终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112529995B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113192173A (zh) * | 2021-05-14 | 2021-07-30 | 腾讯科技(成都)有限公司 | 三维场景的图像处理方法、装置及电子设备 |
CN114632329A (zh) * | 2022-05-16 | 2022-06-17 | 荣耀终端有限公司 | 终端设备性能调节方法和相关装置 |
CN115439586A (zh) * | 2022-10-27 | 2022-12-06 | 腾讯科技(深圳)有限公司 | 数据处理方法、设备、存储介质及计算机程序产品 |
CN115631286A (zh) * | 2022-12-21 | 2023-01-20 | 北京百度网讯科技有限公司 | 图像渲染方法、装置、设备和存储介质 |
CN116468597A (zh) * | 2023-02-16 | 2023-07-21 | 深圳技术大学 | 基于多gpu的图像渲染方法、装置及可读存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107507262A (zh) * | 2017-08-31 | 2017-12-22 | 城市生活(北京)资讯有限公司 | 一种大场景的三维渲染方法及系统 |
US20180253884A1 (en) * | 2017-03-06 | 2018-09-06 | Fovi 3D, Inc. | Multi-view processing unit systems and methods |
CN108573524A (zh) * | 2018-04-12 | 2018-09-25 | 东南大学 | 基于渲染管线的交互式实时自由立体显示方法 |
CN110152291A (zh) * | 2018-12-13 | 2019-08-23 | 腾讯科技(深圳)有限公司 | 游戏画面的渲染方法、装置、终端及存储介质 |
CN110599574A (zh) * | 2019-09-17 | 2019-12-20 | 网易(杭州)网络有限公司 | 游戏场景的渲染方法、装置及电子设备 |
CN111352670A (zh) * | 2020-03-10 | 2020-06-30 | 简吉波 | 虚拟现实场景加载方法、装置、虚拟现实系统及设备 |
-
2020
- 2020-12-28 CN CN202011596235.3A patent/CN112529995B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180253884A1 (en) * | 2017-03-06 | 2018-09-06 | Fovi 3D, Inc. | Multi-view processing unit systems and methods |
CN107507262A (zh) * | 2017-08-31 | 2017-12-22 | 城市生活(北京)资讯有限公司 | 一种大场景的三维渲染方法及系统 |
CN108573524A (zh) * | 2018-04-12 | 2018-09-25 | 东南大学 | 基于渲染管线的交互式实时自由立体显示方法 |
CN110152291A (zh) * | 2018-12-13 | 2019-08-23 | 腾讯科技(深圳)有限公司 | 游戏画面的渲染方法、装置、终端及存储介质 |
CN110599574A (zh) * | 2019-09-17 | 2019-12-20 | 网易(杭州)网络有限公司 | 游戏场景的渲染方法、装置及电子设备 |
CN111352670A (zh) * | 2020-03-10 | 2020-06-30 | 简吉波 | 虚拟现实场景加载方法、装置、虚拟现实系统及设备 |
Non-Patent Citations (2)
Title |
---|
周炜等: "基于材质的实时渲染场景组织技术", 《计算机辅助设计与图形学学报》 * |
韩世广: "基于GPGPU的立体成像加速与嵌入式多屏3D显示技术研究", 《中国优秀博硕士学位论文全文数据库(硕士) 信息科技辑》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113192173A (zh) * | 2021-05-14 | 2021-07-30 | 腾讯科技(成都)有限公司 | 三维场景的图像处理方法、装置及电子设备 |
CN113192173B (zh) * | 2021-05-14 | 2023-09-19 | 腾讯科技(成都)有限公司 | 三维场景的图像处理方法、装置及电子设备 |
CN114632329A (zh) * | 2022-05-16 | 2022-06-17 | 荣耀终端有限公司 | 终端设备性能调节方法和相关装置 |
CN114632329B (zh) * | 2022-05-16 | 2022-10-25 | 荣耀终端有限公司 | 终端设备性能调节方法和相关装置 |
CN115439586A (zh) * | 2022-10-27 | 2022-12-06 | 腾讯科技(深圳)有限公司 | 数据处理方法、设备、存储介质及计算机程序产品 |
WO2024087941A1 (zh) * | 2022-10-27 | 2024-05-02 | 腾讯科技(深圳)有限公司 | 一种基于渲染资源的数据处理方法、装置、设备、计算机可读存储介质及计算机程序产品 |
CN115631286A (zh) * | 2022-12-21 | 2023-01-20 | 北京百度网讯科技有限公司 | 图像渲染方法、装置、设备和存储介质 |
CN116468597A (zh) * | 2023-02-16 | 2023-07-21 | 深圳技术大学 | 基于多gpu的图像渲染方法、装置及可读存储介质 |
CN116468597B (zh) * | 2023-02-16 | 2023-11-17 | 深圳技术大学 | 基于多gpu的图像渲染方法、装置及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112529995B (zh) | 2023-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112529995B (zh) | 图像渲染计算方法、装置、存储介质以及终端 | |
EP3657327A1 (en) | Method for rendering game, and method, apparatus and device for generating game resource file | |
KR101563098B1 (ko) | 커맨드 프로세서를 갖는 그래픽 프로세싱 유닛 | |
CN107154063B (zh) | 图像展示区域的形状设置方法及装置 | |
JP6309620B2 (ja) | 頂点シェーダのフロント・エンドとしてコンピュート・シェーダを使用すること | |
US9384522B2 (en) | Reordering of command streams for graphical processing units (GPUs) | |
US9928637B1 (en) | Managing rendering targets for graphics processing units | |
US20170061662A1 (en) | System and method for layering using tile-based renderers | |
CN111400024B (zh) | 渲染过程中的资源调用方法、装置和渲染引擎 | |
CN111737019B (zh) | 一种显存资源的调度方法、装置及计算机存储介质 | |
KR102381945B1 (ko) | 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치에서 그래픽스 파이프라인을 수행하는 방법 | |
US20200242726A1 (en) | Task Execution on a Graphics Processor Using Indirect Argument Buffers | |
US10319068B2 (en) | Texture not backed by real mapping | |
US8907979B2 (en) | Fast rendering of knockout groups using a depth buffer of a graphics processing unit | |
US11120591B2 (en) | Variable rasterization rate | |
CN112037117A (zh) | 用于运行高性能gpu应用的方法、装置及计算机存储介质 | |
CN112785676B (zh) | 一种图像渲染方法、装置、设备和存储介质 | |
CN108010113B (zh) | 一种基于像素着色器的深度学习模型执行方法 | |
WO2023160041A1 (zh) | 图像渲染方法、装置、计算机设备、计算机可读存储介质以及计算机程序产品 | |
US8203567B2 (en) | Graphics processing method and apparatus implementing window system | |
WO2022237289A1 (zh) | 震动控制方法、装置、移动终端及存储介质 | |
CN115861510A (zh) | 对象渲染方法、装置、电子设备、存储介质及程序产品 | |
CN111402349A (zh) | 渲染方法、渲染装置和渲染引擎 | |
US10832465B2 (en) | Use of workgroups in pixel shader | |
CN112416489A (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 |