CN117557701A - 一种图像渲染方法和电子设备 - Google Patents

一种图像渲染方法和电子设备 Download PDF

Info

Publication number
CN117557701A
CN117557701A CN202210929017.XA CN202210929017A CN117557701A CN 117557701 A CN117557701 A CN 117557701A CN 202210929017 A CN202210929017 A CN 202210929017A CN 117557701 A CN117557701 A CN 117557701A
Authority
CN
China
Prior art keywords
rendering
shadow
normal
result
frame buffer
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
CN202210929017.XA
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.)
Honor Device Co Ltd
Original Assignee
Honor Device 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 Honor Device Co Ltd filed Critical Honor Device Co Ltd
Priority to CN202210929017.XA priority Critical patent/CN117557701A/zh
Priority to PCT/CN2023/091006 priority patent/WO2024027231A1/zh
Publication of CN117557701A publication Critical patent/CN117557701A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/60Shadow generation

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)

Abstract

本申请实施例公开了一种图像渲染方法和电子设备,涉及图像处理领域,通过片上存储,实现阴影渲染的高效执行。避免阴影渲染过程中,GPU与内存之间的大量数据读写,从而减轻GPU与内存之间的数据读写压力。具体方案为:根据第一渲染指令渲染获取第一帧图像的深度渲染结果。深度渲染结果存储在电子设备的内存中。根据第二渲染指令渲染获取第一帧图像的法线渲染结果。法线渲染结果存储在电子设备的图形处理模块的片上存储区中。根据深度渲染结果和法线渲染结果,获取与阴影区域匹配的阴影渲染结果。其中,阴影区域即第一帧图像中,显示为阴影效果的区域。与阴影区域匹配的阴影渲染结果可以理解为,阴影区域的显示可以根据阴影渲染结果进行。

Description

一种图像渲染方法和电子设备
技术领域
本申请实施例涉及图像处理领域,尤其涉及一种图像渲染方法和电子设备。
背景技术
为了向用户提供更加真实的显示效果,电子设备显示的一些图像中可以包括阴影效果。该阴影效果可以基于阴影渲染获取的阴影渲染结果显示的。
在目前的渲染机制中,阴影渲染过程中,图形处理器需要从内存读取深度信息、法线信息等作为输入。而随着图像显示帧数以及图像画质的不断提升,GPU需要从内存中读取的法线信息等信息的数据量也就随之大幅上涨。这就对GPU与内存之间的读写带宽提出了较高的要求。
如果读写带宽无法满足需求,就可能导致阴影渲染延迟,图像中的阴影效果显示效果不佳的情况出现。
发明内容
本申请实施例提供一种图像渲染方法和电子设备,通过片上存储,实现阴影渲染的高效执行。避免阴影渲染过程中,GPU与内存之间的大量数据读写,从而减轻GPU与内存之间的数据读写压力。
为了达到上述目的,本申请实施例采用如下技术方案:
第一方面,提供一种图像渲染方法,应用于电子设备中,该电子设备中运行有第一应用程序,该第一应用程序通过下发渲染指令流指示该电子设备执行对第一帧图像的渲染处理,该第一帧图像中包括阴影区域。该渲染指令流中包括第一渲染指令和第二渲染指令,该方法包括:根据该第一渲染指令渲染获取该第一帧图像的深度渲染结果。该深度渲染结果存储在该电子设备的内存中。根据该第二渲染指令渲染获取该第一帧图像的法线渲染结果。该法线渲染结果存储在该电子设备的图形处理模块的片上存储区中。根据该深度渲染结果和该法线渲染结果,获取与该阴影区域匹配的阴影渲染结果。其中,阴影区域即第一帧图像中,显示为阴影效果的区域。与阴影区域匹配的阴影渲染结果可以理解为,阴影区域的显示可以根据阴影渲染结果进行。这样,通过在片上存储中执行法线以及阴影的渲染,能够避免GPU与内存之间的读写开销。例如,GPU执行法线渲染后不需要将法线渲染结果写入内存中。又如,GPU执行阴影渲染时,不需要从内存中读取法线渲染结果。
可选的,该渲染指令流还包括第三渲染指令,该第三渲染指令用于指示该电子设备在内存中创建第一帧缓冲。该第一帧缓冲用于存储该深度渲染结果。在根据该第一渲染指令渲染获取该第一帧图像的深度渲染结果之前,该方法还包括:根据该第三渲染指令,在该内存中创建第一帧缓冲。该深度渲染结果存储在该电子设备的内存中,包括:该深度渲染结果存储在该第一帧缓冲上。这样,响应于第三渲染指令,电子设备可以在内存中创建用于进行深度渲染的帧缓冲。
可选的,该渲染指令流还包括第四渲染指令,该第四渲染指令用于指示该电子设备创建第二帧缓冲。该第二帧缓冲用于存储该法线渲染结果。在根据该第二渲染指令渲染获取该第一帧图像的法线渲染结果之前,该方法还包括:根据该第四渲染指令,在该图形处理模块的片上存储区中创建该第二帧缓冲。该法线渲染结果存储在该电子设备的图形处理模块的片上存储区中,包括:该法线渲染结果存储在该第二帧缓冲上。这样,基于第四渲染指令,电子设备可以在片上存储区域中进行法线渲染过程,并将该法线渲染结果存储在片上存储中。由此,能够节省法线渲染中GPU向内存的写入开销。同时,在后续流程中如果需要调用该法线渲染结果,GPU也不需要从内存中进行读取。
可选的,该渲染指令流还包括第五渲染指令,该第五渲染指令用于指示该电子设备执行该对该阴影信息的渲染操作。该根据该深度渲染结果和该法线渲染结果,获取阴影渲染结果,包括:响应于该第五渲染指令,从该内存中读取该深度渲染结果,从该图形处理模块的片上存储区中获取该法线渲染结果。根据预设的光线追踪算法,处理获取该阴影渲染结果。这样,基于第五指令,电子设备可以在执行阴影渲染。可以理解的是,阴影渲染可以深度信息以及法线信息作为输入,由于法线信息的渲染过程是在片上执行的,因此GPU不需要与内存交互即可获取法线信息。
可选的,该根据该深度渲染结果和该法线渲染结果,获取阴影渲染结果,包括:在完成法线渲染操作的情况下,触发指示该图形处理模块执行阴影渲染操作。该阴影渲染操作包括:从该内存中读取该深度渲染结果,从该图形处理模块的片上存储区中获取该法线渲染结果。根据预设的光线追踪算法,处理获取该阴影渲染结果。这样,提供了一种电子设备自发进行阴影渲染的方案示例。这样,电子设备不需要依托于上层应用下发的渲染指令,即可完成阴影渲染。在一些实现中,在上层应用下发阴影渲染指令后,如果电子设备已经完成阴影渲染,则可以直接将存储阴影渲染结果的相关信息(如地址等)反馈给应用。
可选的,在该触发指示该图形处理模块执行阴影渲染操作之前,该方法还包括:在完成该法线渲染操作时,生成第一消息,该第一消息用于指示该法线渲染操作完成。该触发指示该图形处理模块执行阴影渲染操作,包括:在该第一消息生成时,触发指示该图形处理模块执行阴影渲染操作。这样,给出了一种电子设备确定法线渲染已经完成的方案示例。由此即可触发进行基于电子设备的阴影渲染处理。
可选的,该根据该第二渲染指令渲染获取该第一帧图像的法线渲染结果,包括:根据该第二渲染指令,向图形处理模块下发第六渲染指令,该第六渲染指令用于指示该图形处理模块,在第一延迟渲染管线SubPass上执行该第一帧图像的法线渲染操作,该图形处理模块在该第一SubPass上执行该第六渲染指令,获取该法线渲染结果。其中,第六渲染指令可以是与第二渲染指令相应的。在一些实现中,第六渲染指令的功能可以与第二渲染指令相同,如指示GPU通过SubPass进行法线渲染。在另一些实现中,第六渲染指令可以是基于第二渲染指令的变形。例如,第二渲染指令指示电子设备进行法线渲染时,GPU获取的第六渲染指令可以用于指示在SubPass上进行法线渲染。
可选的,该根据该深度渲染结果和该法线渲染结果,获取阴影渲染结果,包括:在该图形处理模块的片上缓存中创建第二SubPass,该第二SubPass用于执行阴影渲染操作。获取该第一SubPass的渲染结果输入该第二SubPass,该第一SubPass的渲染结果包括该法线渲染结果。从该内存中读取该深度渲染结果输入该第二SubPass,根据预设的光线追踪算法,对该法线渲染结果和该深度渲染结果进行处理,获取该阴影渲染结果。这样,即可实现在片上进行的基于SubPass的阴影渲染操作。可以理解的是,SubPass提供了能够直接获取上一个SubPass的渲染结果的能力。那么,在该第二SubPass上执行的阴影渲染过程,即可直接获取上一个SubPass上执行的法线渲染结果。从而提高法线渲染结果的获取效率,同时节省GPU与内存之间的读写开销。
可选的,该阴影渲染结果包括:第一法线信息,第二法线信息,阴影信息,以及距离信息。其中,第一法线信息与第二法线信息可以是法线信息中不同方向对应的法线信息。例如,第一法线信息可以是x向的法线信息,第二法线信息可以y向的法线信息。
可选的,在获取该阴影渲染结果之后,该方法还包括:将该阴影渲染结果输出到该内存上的第三帧缓冲上,该第三帧缓冲上包括第一格式的贴图,该第一格式的贴图包括至少四个通道。这样,在包括多组数据的阴影渲染结果就可以被存储在同一个位置,如同一张贴图上。由此使得在后续调用时,仅通过一次数据读取,即可获取全量的阴影渲染结果。从而节省不必要的读写开销。
可选的,该将该阴影渲染结果输出到该内存上的第三帧缓冲上,包括:将该第一法线信息,第二法线信息,阴影信息,以及距离信息分别输出到该第一格式的贴图的不同通道上。这样,提供了一种具体的阴影渲染结果的存储方案实现。可选的,该第一格式为RGBA16F。
可选的,该图形处理模块是图形处理器GPU。当然,在其他一些实现中,该图形处理模块的功能也可以由其他具有图像渲染能力的部件或电路实现。
第二方面,提供一种电子设备,电子设备包括一个或多个处理器和一个或多个存储器;一个或多个存储器与一个或多个处理器耦合,一个或多个存储器存储有计算机指令;当一个或多个处理器执行计算机指令时,使得电子设备执行如上述第一方面以及各种可能的设计中任一种的图像渲染方法。
第三方面,提供一种芯片系统,芯片系统包括接口电路和处理器;接口电路和处理器通过线路互联;接口电路用于从存储器接收信号,并向处理器发送信号,信号包括存储器中存储的计算机指令;当处理器执行计算机指令时,芯片系统执行如上述第一方面以及各种可能的设计中任一种的图像渲染方法。
第四方面,提供一种计算机可读存储介质,计算机可读存储介质包括计算机指令,当计算机指令运行时,执行如上述第一方面以及各种可能的设计中任一种的图像渲染方法。
第五方面,提供一种计算机程序产品,计算机程序产品中包括指令,当计算机程序产品在计算机上运行时,使得计算机可以根据指令执行如上述第一方面以及各种可能的设计中任一种的图像渲染方法。
应当理解的是,上述第二方面,第三方面,第四方面,以及第五方面提供的技术方案,其技术特征均可对应到第一方面及其可能的设计中提供的图像渲染方法,因此能够达到的有益效果类似,此处不再赘述。
附图说明
图1为一种图像渲染的逻辑示意图;
图2为一种深度信息渲染的逻辑示意图;
图3为一种法线信息渲染的逻辑示意图;
图4为一种阴影的示意图;
图5为一种图像渲染过程中通过光线追踪进行阴影渲染的示意图;
图6为一种阴影渲染的逻辑示意图;
图7为本申请实施例提供的一种阴影渲染的逻辑示意图;
图8为本申请实施例提供的一种电子设备的软件组成示意图;
图9为本申请实施例提供的一种图像渲染方法的模块交互示意图;
图10为本申请实施例提供的又一种图像渲染方法的模块交互示意图;
图11为本申请实施例提供的又一种图像渲染方法的模块交互示意图;
图12为本申请实施例提供的又一种图像渲染方法的模块交互示意图;
图13为本申请实施例提供的一种阴影渲染结果的存储方案示意图;
图14为本申请实施例提供的又一种图像渲染方法的模块交互示意图;
图15为本申请实施例提供的又一种图像渲染方法的流程示意图;
图16为本申请实施例提供的一种电子设备的组成示意图;
图17为本申请实施例提供的一种芯片系统的组成示意图。
具体实施方式
目前,大多电子设备都可以向用户提供图像显示功能。
示例性的,电子设备中可以安装有应用程序(Application,APP)。在应用程序需要通过电子设备显示图像时,可以向电子设备发送指令,以便电子设备根据指令进行对应图像的渲染,进而通过电子设备的显示屏显示渲染获取的图像。
结合图1,为一种图像渲染的流程示意图。在本示例中,电子设备中可以设置有中央处理器(Central Processing Unit,CPU)、图形处理器(Graphic Processing Unit,GPU)以及内存等。其中,CPU可以用于进行指令处理以及控制。GPU可以在CPU的控制下进行图像的渲染。内存则可以用于提供存储功能,如存储GPU渲染获取的渲染结果。
如图1所示,应用程序可以下发渲染指令,用于指示电子设备进行一帧图像的渲染。该一个渲染指令可以对应到一个绘制命令(即Drawcall)。CPU可以接收该渲染指令,并调用相应的图形绘制应用程序编程接口(Application Programming Interface,API),以便于指示GPU执行与该渲染指令对应的渲染操作。GPU则可以执行渲染指令,并将渲染获取的结果存储在内存中。
需要说明的是,在对一帧图像的绘制中,应用程序可以通过渲染指令控制电子设备对帧图像的深度信息、法线信息等进行渲染,由此获取完整的帧图像信息。以下示例中,以应用程序为游戏应用为例。可以理解的是,游戏应用在运行过程中可以通过电子设备向用户展示视频画面。该视频画面可以是由多个连续播放的帧图像构成的。
以绘制一帧图像的深度信息为例。结合图1,如图2所示。游戏应用可以下发渲染指令21,用于指示电子设备对当前帧图像的深度信息进行渲染。CPU可以根据该渲染指令21,调用对应的API接口,指示GPU执行与深度信息对应的渲染操作。GPU可以执行该渲染操作,并将渲染结果(即深度渲染结果)存储在内存中。在本示例中,内存中可以包括多个预先创建的帧缓冲(FrameBuffer,FB),如帧缓冲21、帧缓冲22、帧缓冲23等。不同的帧缓冲可以用于存储图像渲染过程中的不同信息。例如,在本示例中,GPU可以将深度渲染结果存储在帧缓冲21中。
以绘制一帧图像的法线信息为例。如图3所示,游戏应用可以下发渲染指令22,用于指示电子设备对当前帧图像的法线信息进行渲染。CPU可以根据该渲染指令22,调用对应的API接口,指示GPU执行与法线信息对应的渲染操作。GPU可以执行该渲染操作,并将渲染结果(即法线渲染结果)存储在内存中。例如,GPU可以将法线渲染结果存储在帧缓冲22中。
应当理解的是,在一些场景下,由于场景光线的变化,场景中的物体可能会有阴影存在。示例性的,如图4所示,在该场景下可以包括物体41。在光源位于物体41的斜上方时,则物体41可以在地面上投射出阴影。
那么,为了能够向用户提供更加真实的观感,游戏应用也可以指示电子设备对当前帧图像中的物体进行阴影的渲染,从而使得在显示的帧图像中可以包括该物体的阴影,更加真实。
示例性的,如图5所示,为一种阴影渲染方案的示例。该示例中,电子设备可以通过观想追踪算法,实现对阴影的渲染,获取包括阴影在内的帧图像的显示信息(即渲染结果)。
作为一种实现,GPU可以基于光线追踪算法,可以把一个场景的渲染任务拆分成从相机(camera)出发的若干条光线(如图5所示的观察线(view ray))对场景的影响。每条观察线会和场景并行地求交,根据交点位置获取所要显示物体(scene object)的材质、纹理等信息,并结合光源(light source)信息计算光照。这样,通过计算观察线在图像(image)上各个像素点的信息,即可确定物体在图像上的投射情况。此外,在该场景中,光源可以照射到物体上形成阴影(如通过如图5所示的阴影线(shadow ray)照射到物体上形成阴影)。那么,通过上述光线追踪算法,还可以确定物体的阴影对应在图像上的像素点的位置以及相关信息。由此,即可在图像上获取物体以及阴影的显示信息。
结合图1-图3的示例,以绘制一帧图像的阴影信息为例。如图6所示,游戏应用可以下发渲染指令23,用于指示电子设备对当前帧图像的阴影信息进行渲染。CPU可以根据该渲染指令23,调用对应的API接口,指示GPU执行与阴影信息对应的渲染操作。一般而言,对阴影的渲染需要结合当前帧图像的深度信息以及法线信息。那么,在本示例中,GPU可以从帧缓冲21中读取深度渲染结果,从帧缓冲22中读取法线渲染结果,并基于此,通过光线追踪算法,渲染获取阴影信息(即阴影渲染结果)。GPU可以将该阴影渲染结果存储在内存的帧缓冲23中。
目前,为了实现光线追踪,可以通过前向渲染(Forward Rendering)机制实现。也就是说,该光线追踪算法对应的阴影渲染过程,可以在前向渲染管线中执行。在该前向渲染管线中,场景中包括物体的几何信息是通过单独绘制场景中的每一个物体完成的。那么,在实际实施过程中,为了平衡渲染过程中的开销,需要尽量减少每个物体的绘制调用。因此,每个物体渲染过程中获取的几何信息也就非常有限。而阴影的渲染过程(如阴影渲染结果的获取、以及针对阴影渲染结果的降噪优化处理等)需要依赖于各个物体的几何信息,那么,有限的几何信息就会造成阴影渲染质量的下降。
此外,还可以通过延迟渲染(Deferred Rendering)机制实现光线追踪。也即,在延迟渲染管线上执行阴影渲染过程。在延迟渲染管线中,可以首先完成对物体的几何信息处理,然后根据该几何信息,执行每个光源所覆盖像素的阴影计算过程。由此获取阴影渲染结果。
作为一种示例,结合前述说明,电子设备可以根据如图2以及图3所示的方案,获取物体的几何信息。例如,几何信息可以包括深度信息以及法线信息。其中,深度信息可以从深度渲染结果中获取,法线信息可以从法线渲染结果中获取。接着,电子设备的GPU可以执行如图6所示的方法,如从内存中设置的帧缓冲21中读取深度渲染结果,从帧缓冲22中读取法线渲染结果。GPU可以根据该深度渲染结果以及法线渲染结果,执行光线追踪算法,获取阴影渲染结果存储在内存的帧缓冲23中。
该基于延迟渲染管线的光线追踪,能够将物体几何数据和阴影计算的过程分离,从而获取较丰富的物体的几何信息。由此避免前向渲染管线中出现的几何信息较少导致的阴影渲染结果不加的问题。
然而,延迟渲染管线中,对于GPU(即计算主体)与内存之间的数据读写带宽提出了较高的要求。例如,GPU需要先向内存写入深度渲染结果以及法线渲染结果,接着需要从内存读取深度渲染结果以及法线渲染结果,GPU还需要将计算获取的阴影渲染结果写入内存中。
那么,在GPU与内存之间的数据读写带宽有限时,就会造成阴影计算的延迟,从而导致渲染时间的延长。
为了解决上述问题,本申请实施例提供一种图像渲染方法,能够在基于延迟渲染管线执行阴影渲染的过程中,减少GPU与内存之间的数据读写,提升阴影渲染效率。
基于本申请实施例提供的方案,以游戏应用下发渲染指令23指示电子设备进行阴影渲染为例。如图7所示,CPU可以响应于该渲染指令23调用对应的API指示GPU进行阴影渲染。对应的,GPU可以从其片上(on-chip)存储空间中设置的新建帧缓冲G1中读取已经渲染好的法线渲染结果。相较于如图6所示的现有的法线渲染结果获取机制,GPU不需要通过与内存的读写交互获取法线渲染结果,从而节省时间和读写带宽的开销。以在GPU上的新建帧缓冲G2上执行阴影渲染为例。GPU还可以从内存的帧缓冲21上读取深度渲染结果。GPU可以根据获取的深度渲染结果以及法线渲染结果,基于光线追踪算法,渲染获取阴影渲染结果。在本示例中,阴影渲染结果所包括的法线信息、阴影信息以及距离信息可以分别被存储到内存的一个帧缓冲中包括的贴图上的不同通道中。也就是说,阴影渲染结果可以被保存到一个贴图上。由此达到精简阴影渲染结果存储开销的效果。
此外,在一些实施例中,法线渲染的过程也可以是在GPU的新建帧缓冲G1上执行的。那么,对比现有的法线渲染过程(如图3所示)。在完成法线渲染之后,由于法线渲染结果可以直接被存储在GPU的新建帧缓冲G1上,而不需要写入内存的帧缓冲22中。因此,对于法线渲染结果的存储过程,也能够节省GPU与内存之间的时延和读写带宽的开销。
以下结合附图对本申请实施例提供的方案进行详细说明。
需要说明的是,本申请实施例提供的图像渲染方法,可以应用在用户的电子设备中。比如,该电子设备可以是手机、平板电脑、个人数字助理(personal digitalassistant,PDA)、增强现实(augmented reality,AR)\虚拟现实(virtual reality,VR)设备、媒体播放器等便携式移动设备,该电子设备也可以是智能手表等能够提供显示能力的可穿戴电子设备。本申请实施例对该设备的具体形态不作特殊限制。
在不同实施例中,该电子设备可以具有不同的组成。
示例性的,在一些实施例中,从硬件组成的角度,本申请实施例涉及的电子设备可以包括处理器,外部存储器接口,内部存储器,通用串行总线(universal serial bus,USB)接口,充电管理模块,电源管理模块,电池,天线1,天线2,移动通信模块,无线通信模块,音频模块,扬声器,受话器,麦克风,耳机接口,传感器模块,按键,马达,指示器,摄像头,显示屏,以及用户标识模块(subscriber identification module,SIM)卡接口等。其中,传感器模块可以包括压力传感器,陀螺仪传感器,气压传感器,磁传感器,加速度传感器,距离传感器,接近光传感器,指纹传感器,温度传感器,触摸传感器,环境光传感器,骨传导传感器等。作为一种可能的实现,该处理器可以包括CPU以及GPU等多个处理器。其中GPU可以设置有片上存储空间。在GPU运行过程中,可以快速调用其片上存储空间中的数据。设置在GPU片上存储空间中的帧缓冲也可以称为TileBuffer。
需要说明的是,上述硬件组成并不构成对电子设备的具体限定。在另一些实施例中,电子设备可以包括更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。
在另一些实施例中,本申请实施例涉及的电子设备还可以具有软件划分。以电子设备中运行有(安卓)操作系统为例。在该安卓操作系统中,可以具有分层的软件划分。
示例性的,图8为本申请实施例提供的一种电子设备的软件组成的示意图。如图8所示,该电子设备可以包括应用(Application,APP)层,框架(Framework)层,系统库,以及硬件(HardWare)层等。
其中,应用层也可以称为应用程序层。在一些实现中,应用程序层可以包括一系列应用程序包。应用程序包可以包括相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等应用程序。在本申请实施例中,应用程序包还可以包括需要通过渲染图像向用户展示图像或者视频的应用程序。其中,视频可以理解为多帧图像的连续播放。在需要渲染的图像中,可以包括具有阴影的帧图像。示例性的,该需要渲染图像的应用程序可以包括游戏类应用程序,例如等。
框架层也可以称为应用程序框架层。该框架层可以为应用层的应用程序提供应用编程接口(application programming interface,API)和编程框架。框架层包括一些预先定义的函数。示例性的,框架层可以包括窗口管理器,内容提供器,视图系统,资源管理器,通知管理器,活动管理器,输入管理器等。窗口管理器提供窗口管理服务(Window ManagerService,WMS),WMS可以用于窗口管理、窗口动画管理、surface管理以及作为输入系统的中转站。内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。该数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。活动管理器可以提供活动管理服务(Activity Manager Service,AMS),AMS可以用于系统组件(例如活动、服务、内容提供者、广播接收器)的启动、切换、调度以及应用进程的管理和调度工作。输入管理器可以提供输入管理服务(Input Manager Service,IMS),IMS可以用于管理系统的输入,例如触摸屏输入、按键输入、传感器输入等。IMS从输入设备节点取出事件,通过和WMS的交互,将事件分配至合适的窗口。
在本申请实施例中,在框架层中可以设置有一个或多个功能模块,用于实现本申请实施例提供的方案。示例性的,框架层中可以设置有创建模块,处理模块,以及阴影渲染模块等。
其中,创建模块可以用于在内存以及GPU片上存储空间中创建帧缓冲。例如,在内存中创建用于存储深度渲染结果的帧缓冲。又如,在GPU上创建TileBuffer,用于进行法线渲染,以及进行阴影渲染。
处理模块,可以用于对应用程序下发的渲染命令进行处理,并调用相应的API指示GPU执行渲染操作。例如,处理模块可以在应用程序下发指示进行深度渲染的渲染命令时,控制GPU进行当前帧图像的深度信息的渲染操作,并将深度渲染结果存储在内存中。又如,处理模块可以在应用程序下发指示进行法线渲染的渲染命令时,控制GPU进行当前帧图像的法线信息的渲染操作,并将法线渲染结果存储在GPU的TileBuffer中。又如,处理模块可以在应用程序下发指示进行阴影渲染的渲染命令时,控制GPU从内存中获取深度渲染结果,从TileBuffer中获取法线渲染结果,从而根据光线追踪算法进行渲染操作获取对应的阴影渲染结果。
可以看到,创建模块以及处理模块可以对应用程序下发的渲染命令进行响应。在本申请实施例中,为了使得创建模块以及处理模块能够顺利获取应用程序下发的渲染命令,如图8所示,在框架层还可以设置有拦截模块。在本申请中,拦截模块可以用于接收应用程序下发的渲染命令,并根据渲染命令所指示的信息,将对应的渲染命令发送给相应的模块进行处理。
在一些实施例中,拦截模块可以将用于指示创建帧缓冲的命令发送给创建模块进行处理。作为一种可能的实现,该用于指示创建帧缓冲的命令可以包括:glCreateFrameBuffer函数。
在另一些实施例中,拦截模块还可以将用于指示进行渲染操作的命令发送给处理模块进行处理。作为一种可能的实现,该用于指示进行渲染操作的命令可以包括指示进行深度信息的渲染操作的命令、指示进行法线信息的渲染操作的命令、指示进行阴影渲染的渲染操作的命令。类似于上述对创建帧缓冲的命令的拦截机制,拦截模块可以根据渲染命令中携带的指令,确定渲染命令所指示的内容。例如,指示进行深度信息的渲染操作的命令可以包括关键字depthMap,指示进行法线信息的渲染操作的命令可以包括关键字Vertex或者Vertex以及Normal。可以理解的是,法线信息可以包括在顶点(Vertex)信息中,在一些实现中,法线向量的相关数据包括在Vertex命令,以Normal来进行标识。此外,指示进行阴影渲染的命令可以包括关键字shadow。
继续参考图8,在本申请实施例中,框架层中还可以设置有阴影渲染模块。作为一种可能的实现,该阴影渲染模块可以在GPU完成法线信息的渲染,获取法线渲染结果之后,指示GPU进行阴影信息的渲染。
结合图7的示意,在本申请实施例中,法线信息的渲染管线可以设置在GPU的TileBuffer中。示例性的,执行法线信息的渲染管线可以是基于SubPass系统的。应当理解的是,SubPass系统作为当前大多数渲染平台提供的一种渲染管线机制,不同于传统的MultiPass系统,能够使得下一个SubPass在执行过程中,直接获取当前SubPass的渲染结果。而不需要如MultiPass系统中,当前管线渲染的渲染完成后,需要将渲染结果存储在内存中,下一个管线需要从内存中读取该结果才能获取当前管线中获取的渲染结果。
那么,在本示例中,阴影渲染模块所指示GPU执行的阴影渲染管线,也可以是基于SubPass系统的。该阴影渲染管线可以设置在GPU的TileBuffer中,该阴影渲染管线可以是法线渲染管线的下一个渲染命令所对应指示的。例如,Drawcall A指示GPU进行基于SubPass的法线渲染。在Drawcall A执行结束后,紧邻的下一个Drawcall B可以是阴影渲染模块下发的,指示GPU进行基于SubPass的阴影渲染的渲染命令。
这样,GPU在完成Drawcall A的渲染获取法线渲染结果之后,就可以执行DrawcallB。由于Drawcall B也是基于SubPass系统的,因此,GPU在执行Drawcall B指示的阴影渲染时,可以直接获取上一个SubPass(即Drawcall A对应的渲染操作,也即法线渲染管线的渲染操作)的渲染结果(也就是法线渲染结果)。这样,GPU可以不需与内存进行读写交互,即可获取法线渲染结果。此外,GPU可以根据Drawcall B从内存中读取深度渲染结果,进而根据光线追踪算法进行渲染操作,即可获取当前帧图像的阴影渲染结果。
需要说明的是,在本申请的一些实施例中,如上述对于阴影渲染模块所做的说明,阴影渲染模块可以在法线渲染操作结束后,直接指示GPU执行阴影渲染。也就是说,在该示例中,电子设备可以不需要接收应用程序下发的用于指示阴影渲染的渲染指令,即可自行完成阴影渲染。而在应用程序下发该用于指示阴影渲染的渲染指令后,电子设备就可以直接回调GPU执行的阴影渲染结果反馈给应用程序。
在本申请的另一些实施例中,应用程序也可以在指示电子设备进行法线渲染之后,顺序执行基于SubPass的阴影渲染操作。那么,电子设备的GPU也可以在进行阴影渲染的过程中,直接获取上一个SubPass的渲染结果,即直接获取法线渲染结果。在该示例中,电子设备中就可以不再设置该阴影渲染模块。
因此,在不同实现中,基于本申请实施例提供的方案,对于不同的应用程序的渲染命令下发机制,都能够实现通过SubPass的阴影渲染过程直接获取法线渲染结果的效果。从而能够节省阴影渲染过程中,获取法线渲染结果时GPU与内存之间的数据读写开销。
如图8所示,电子设备中还可以设置有包括图形库的系统库。在不同实现中,图形库可以包括如下中的至少一种:开放图形库(Open Graphics Library,OpenGL)、嵌入式系统的开放图形库(OpenGL for Embedded Systems,OpenGL ES)、Vulkan等。在一些实施例中,系统库中还可以包括其他模块。例如:表面管理器(surface manager),媒体框架(MediaFramework)、标准C库(Standard C library,libc)、SQLite、Webkit等。
其中,表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了二维(2D)和三维(3D)图层的融合。媒体框架支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:动态图像专家组4(MovingPictures Experts Group,MPEG4),H.264,动态影像专家压缩标准音频层面3(MovingPicture Experts Group Audio Layer3,MP3),高级音频编码(Advanced Audio Coding,AAC),自适应多码解码(Adaptive Multi-Rate,AMR),联合图像专家组(JointPhotographic Experts Group,JPEG,或称为JPG),便携式网络图形(Portable NetworkGraphics,PNG)等。OpenGL ES和/或Vulkan提供应用程序中2D图形和3D图形的绘制和操作。SQLite为电子设备400的应用程序提供轻量级关系型数据库。
在应用程序下发渲染命令之后,框架层中的各个模块就可以调用图形库中对应的API,指示GPU执行相应的渲染操作。
在如图8的示例中,电子设备中还可以包括硬件层。该硬件层中可以包括CPU,GPU,以及具有存储功能的存储器(如内存)。在一些实现中,CPU可以用于控制框架层中的各个模块实现其各自的功能,GPU可以用于根据框架层中各个模块处理后的指令所调用的图形库(如OpenGL ES)中的API执行相应的渲染处理。
本申请实施例提供的方案均能够应用于如图8所示的电子设备中。需要说明的是,如图8的示例,并不构成对电子设备的限制。在另一些实施例中,电子设备还可以包括更多或更少的组件。本申请实施例对于电子设备的具体组成不做限制。
以下说明中,以电子设备具有如图8所述的软件划分,应用程序为游戏应用(对应第一应用程序),游戏应用下发渲染指令流指示电子设备执行对第一帧图像(或第N帧图像)的渲染处理,第一帧图像中可以包括阴影区域为例,对本申请实施例提供的方案所涉及的阴影渲染方案进行详细说明。通过本申请实施例提供的阴影渲染方案所获取的阴影渲染结果,可以用于显示第一帧图像中的阴影区域。应当理解的是,基于图8中关于图形库的说明,可以理解的是,CPU在需要指示GPU执行渲染操作时,可以通过调用图形库中的API指示向GPU传达该渲染指令。以下说明中,不再对该渲染过程中调用API的过程进行详细说明。
作为一种示例,请参考图9,为本申请实施例提供的一种图像渲染方法的模块交互示意图。该如图9所示的方案可以用于进行帧缓冲的创建。
示例性的,如图9所示。在游戏应用开始运行后,比如游戏应用处于加载画面等状态下,可以下发渲染命令901。该渲染命令901可以包括至少一个glCreateFrameBuffer函数,用于指示电子设备进行后续图像渲染过程中所需要的帧缓冲。
例如,该渲染命令901中可以包括用于指示在电子设备的内存上创建第一帧缓冲的第三渲染指令(对应第三渲染指令),该第一帧缓冲可以用于存储深度渲染结果。该第一帧缓冲可以对应到后续说明中的帧缓冲93。
又如,该渲染命令901中可以包括用于指示在电子设备的GPU的片上存储空间上创建第二帧缓冲的第四渲染指令,该第二帧缓冲可以用于存储法线渲染结果。该第二帧缓冲可以对应到后续说明中的帧缓冲91。
电子设备的框架层中设置的拦截模块可以拦截该渲染命令901,根据其中携带的glCreateFrameBuffer函数确定该渲染命令901用于指示电子设备进行帧缓冲的创建。那么,拦截模块可以将该渲染命令901传输给创建模块进行后续处理。
创建模块可以响应于该渲染命令901,创建对应的帧缓冲。
在本申请实施例中,创建模块可以同时或分次创建多个帧缓冲。其中,这些帧缓冲可以包括设置在内存中的帧缓冲,以及设置在GPU片上存储空间中的帧缓冲,即前述说明中的TileBuffer。
作为一种示例,如图9所示,创建模块可以在GPU的缓存上创建帧缓冲91。创建模块还可以在GPU的缓存上创建帧缓冲92。该帧缓冲91和帧缓冲92就可以为设置在GPU片上的缓存,用于执行后续渲染过程中的法线渲染以及阴影渲染。在后续说明中,该用于进行法线渲染的帧缓冲91还可以被称为G-Buffer。
创建模块还可以在内存中创建帧缓冲93以及帧缓冲94。该设置在内存中的帧缓冲可以用于进行深度信息的渲染存储,例如,可以在帧缓冲93上执行深度渲染。为了使得阴影渲染结果可以便于其他管线调用,阴影渲染完成之后,GPU也可以将阴影渲染结果存储在内存中。例如,该帧缓冲94中可以包括一张贴图,该贴图可以为RGBA16F格式,用于在不同通道存储阴影渲染结果。
这样,在后续各个帧图像的渲染过程中,就可以通过上述帧缓冲91-帧缓冲94的ID调用对应的已经创建的帧缓冲,执行相应的渲染操作。
示例性的,以渲染第N帧图像为例。游戏应用可以通过下发渲染命令指示电子设备进行第N帧图像中深度信息的渲染。
如图10所示,为本申请实施例提供的又一种图像渲染方法的模块交互示意。该如图10所示的方案可以用于进行深度信息的渲染,即执行深度渲染,获取深度信息(或称为深度渲染结果)。
如图10所示,游戏应用在需要进行第N帧图像的渲染时,可以向电子设备发送渲染命令902(对应第一渲染指令)。该渲染命令902可以包括关键字depthMap,用于指示电子设备进行当前帧图像(即第N帧图像)的深度信息的渲染。在本申请中,该渲染命令902也可以称为第一渲染指令。
对应的,拦截模块可以根据该携带的关键字depthMap,确定该渲染命令902用于指示进行深度信息的渲染。那么,拦截模块可以将该渲染命令902传输给处理模块进行后续处理。
处理模块,可以根据渲染命令902,指示GPU进行深度信息的渲染。应当理解的是,结合前述关于系统库的说明,在一些实施例中,处理模块可以通过调用系统库中,与渲染命令902相应的API,指示GPU进行第N帧图像的深度信息的渲染。
需要说明的是,在本申请实施例中,处理模块在指示GPU进行深度渲染时,还可以指示GPU将深度渲染结果存储在内存中。例如,在处理模块指示GPU进行深度渲染时,可以携带有帧缓冲93的帧缓冲ID,以便于GPU可以将渲染获取的深度信息存储在帧缓冲93上。其中,帧缓冲93的帧缓冲ID可以是创建模块完成创建帧缓冲后发送给处理模块的。
那么,在处理模块的控制下,GPU就可以执行深度渲染操作,并将获取的深度渲染结果存储在内存中的帧缓冲93。
此外,游戏应用还可以通过下发渲染命令指示电子设备进行第N帧图像中法线信息的渲染。
示例性的,请参考图11,为本申请实施例提供的又一种图像渲染方法的模块交互示意。该如图11所示的方案可以用于进行法线信息的渲染,即执行法线渲染,获取法线信息(或称为法线渲染结果)。
如图11所示,游戏应用在需要进行第N帧图像的渲染时,可以向电子设备发送渲染命令903(对应第二渲染指令)。该渲染命令903可以包括关键字Vertex,用于指示电子设备进行当前帧图像(即第N帧图像)的包括深度信息在内的几何信息的渲染。在本申请中,该渲染命令903也可以称为第二渲染指令。
可以理解的是,在一些情况下,法线信息可以与模型的其他几何信息一同渲染获取。该几何信息的渲染过程可以根据游戏应用下发的顶点数据(Vertex)执行。
对应的,拦截模块可以根据该携带的关键字Vertex,确定该渲染命令903用于指示进行法线信息的渲染。那么,拦截模块可以将该渲染命令903传输给处理模块进行后续处理。
处理模块,可以根据渲染命令903,指示GPU进行法线信息的渲染。应当理解的是,结合前述关于系统库的说明,在一些实施例中,处理模块可以通过调用系统库中,与渲染命令903相应的API,指示GPU进行第N帧图像的法线信息的渲染。
需要说明的是,不同于深度渲染结果在内存中的存储,在本申请实施例中,法线渲染管线可以设置在GPU的TileBuffer上。在一些实现中,该在TileBuffer上行的法线渲染管线可以是第二渲染指令指示的。那么,GPU接收到的根据第二渲染指令生成的第六渲染指令,就可以与第二渲染指令相同或类似。在另一些实现中,第二渲染指令可以指示在内存上执行法线渲染管线。那么,在本申请中,处理模块可以根据第二渲染指令生成第六渲染指令,该第六渲染指令可以指示GPU在TileBuffer上执行该法线渲染管线的操作。该在TileBuffer上执行法线渲染操作的渲染管线也可以称为第一SubPass。
示例性的,处理模块在指示GPU进行法线渲染时,还可以指示该法线渲染过程绑定(Bind)在帧缓冲91上。其中,帧缓冲91的帧缓冲ID可以是创建模块完成创建帧缓冲后发送给处理模块的。那么,GPU就可以在帧缓冲91上执行法线渲染管线。在一些实施例中,处理模块指示GPU执行的法线渲染管线可以为基于SubPass的渲染管线。以便于后续SubPass管线能够直接获取该法线渲染结果。
在一些角度,该在帧缓冲91上执行的基于SubPass的法线渲染过程执行后,获取的法线渲染结果可以被临时存储在帧缓冲91上。那么,后续SubPass管线就可以通过GPU片上缓存(即帧缓冲91)上读取数据,就可以快速获取法线渲染结果。
那么,如图11所示,在执行完成法线渲染操作之后,法线渲染结果就可以被存储在帧缓冲91上。
在本申请的一些实施例中,GPU在完成法线渲染后,可以向上层执行回调,以便于上层知晓法线已经渲染完成。例如,GPU可以在完成法线渲染操作获取法线渲染结果后,向处理模块回调用于指示已完成法线渲染的消息(如第一消息)。这样,电子设备的框架层中的各个模块就能够知晓当前的渲染进度。在本申请中,结合上述基于SubPass的渲染管线的特性说明,该在帧缓冲91上执行的法线渲染管线可以是基于SubPass的。那么,为了后续渲染过程在需要使用该法线渲染那结果(如阴影渲染过程)时,能够快速调用该SubPass的渲染结果,电子设备可以在知晓当前已经完成法线渲染后,控制GPU执行基于SubPass的阴影渲染,从而使得该基于SubPass的阴影渲染管线可以直接快速获取法线渲染结果。
作为第一种示例,以法线渲染管线为SubPass-G(即第一SubPass),阴影渲染管线为SubPass-Shadow(或者称为第二SubPass)为例。电子设备可以根据如图11所示的方案,完成SubPass-G的渲染,获取法线渲染结果。接着,电子设备可以控制GPU执行阴影渲染操作。例如,电子设备可以在确定GPU完成SubPass-G的渲染之后,指示GPU执行SubPass-Shadow的渲染操作。那么,由于SubPass-Shadow是SubPass-G完成后顺序执行的SubPass,因此GPU在执行该SubPass-Shadow中的阴影渲染时,可以直接获取SubPass-G的渲染结果,即法线渲染结果。结合图6的说明,相比于目前的从内存中读取法线渲染结果的方案,本示例中利用SubPass的特性,能够节省GPU从内存中读取法线渲染结果的读写开销。
在本申请的不同实现中,电子设备可以自发的在GPU完成法线渲染后,执行阴影渲染;或者,电子设备可以在GPU完成法线渲染之后,根据游戏应用下发的渲染命令执行阴影渲染。
示例性的,请参考图12,为本申请实施例提供的又一种图像渲染方法的模块交互示意。该如图12所示的方案可以用于进行阴影渲染。该示例中,以电子设备自发的在GPU完成法线渲染后,执行阴影渲染为例。
如图12所示,处理模块可以在GPU完成法线渲染后,指示阴影渲染模块当前的渲染进度为:已完成法线渲染。在一些实施例中,结合图11,处理模块可以根据GPU回调的已完成法线渲染的消息,确定当前GPU完成法线渲染。
对应的,阴影渲染模块可以向GPU下发进行阴影渲染的指令。该指令可以绑定(Bind)有GPU的TileBuffer,以便于GPU在该TileBuffer执行该阴影渲染操作。例如,该进行阴影渲染的指令可以绑定有帧缓冲92,以便于GPU在该帧缓冲92上运行阴影渲染管线,执行阴影渲染操作。
在该进行阴影渲染的指令中还可以携带有存储深度渲染结果的帧缓冲ID,存储法线渲染结果的帧缓冲ID,以及存储阴影渲染结果的帧缓冲ID。这些帧缓冲ID可以是经由处理模块从创建模块获取的,或者,这些帧缓冲ID可以是阴影渲染模块直接从创建模块获取的。
在本申请实施例中,该进行阴影渲染的指令还可以指示GPU,该阴影渲染管线可以是基于SubPass系统的。
例如,阴影渲染模块可以将GPU下发帧缓冲91的帧缓冲ID,帧缓冲93的帧缓冲ID,以及帧缓冲92的帧缓冲ID。以便于GPU从帧缓冲91、帧缓冲93中获取阴影渲染过程所需要的输入数据。
响应于该进行阴影渲染的指令,GPU可以运行基于SubPass的阴影渲染管线。GPU可以获取法线渲染结果,读取深度渲染结果,进行阴影渲染操作。
示例性的,GPU可以从帧缓冲91上获取法线渲染结果。结合前述说明,该阴影渲染管线(如SubPass-Shadow)可以为SubPass-G之后的SubPass,因此能够直接获取法线渲染结果。本申请中,由于SubPass-G是在帧缓冲91上执行的,因此也可以认为该法线渲染结果是SubPass-Shadow从帧缓冲91上获取的。此外,GPU还可以从内存中的帧缓冲93读取深度渲染结果。这样,GPU就可以在帧缓冲92上的SubPass-Shadow中执行阴影渲染操作。在一些实现中,该在SubPass-Shadow中执行的阴影渲染操作可以是根据预设在电子设备中的光线追踪算法执行的。
由此,GPU只需要与内存进行一次数据读取交互,即可执行阴影渲染操作。
在本申请中,GPU可以在完成阴影渲染操作后,将阴影渲染结果存储在内存中,以便其他管线调用。例如,电子设备可以对阴影渲染结果进行降噪(去噪)操作,以便获取较好的阴影渲染结果等。
示例性的,如图12所示,GPU可以在完成阴影渲染操作之后,存储阴影渲染结果到内存的帧缓冲94中。
作为一种可能的实现,该阴影渲染结果可以包括阴影的法线信息、各个像素的阴影信息(ShadowMask)、以及阴影的距离信息(Distance)等。其中,法线信息可以包括x、y两个方向上的法线信息。也即,法线信息可以包括法线信息(x)以及法线信息(y)两部分。该法线信息(x)也可以被称为Normal(x),该法线信息(y)也可以被称为Normal(y)。
在本申请中,GPU在将阴影渲染结果存储到内存的帧缓冲94上时,可以将所有的阴影渲染结果存储到帧缓冲94上的一个预设格式的贴图上。该预设格式的贴图可以包括至少4个通道。其中的两个通道可以用于存储法线信息,另外一个通道可以用于存储阴影信息,另外一个通道可以用户存储距离信息。
作为一种可能的实现,以预设格式可以为RGBA16F格式为例。结合图13,GPU在帧缓冲92上完成阴影渲染操作之后,阴影渲染管线可以将阴影渲染结果输出到帧缓冲94上的RGBA16F格式的贴图上。例如,法线信息(x)可以被输出存储到帧缓冲94上RGBA16F格式的R通道中;法线信息(x)(即Normal(x))可以被输出存储到帧缓冲94上RGBA16F格式的R通道中;法线信息(y)(即Normal(y))可以被输出存储到帧缓冲94上RGBA16F格式的G通道中;阴影信息(ShadowMask)可以被输出存储到帧缓冲94上RGBA16F格式的B通道中;距离信息(Distance)可以被输出存储到帧缓冲94上RGBA16F格式的A通道中。在本申请中,法线信息(x)也可以称为第一法线信息。法线信息(y)也可以称为第二法线信息。
这样,就实现了在同一个贴图上保存阴影渲染结果的目的。相比于将阴影渲染结果存储在两个或更多贴图上,本示例提供的方案能够在节省内存的存储开销之外,更加方便其他管线对阴影渲染结果的调用。
可以看到,该如图12的示例中,电子设备可以在GPU完成法线渲染之后自行触发阴影渲染并存储到内存中。那么,游戏应用也可以在后续下发的渲染命令流中指示电子设备进行阴影渲染操作。例如,游戏应用可以下发渲染命令904(对应第五渲染指令),指示电子设备进行当前帧图像的阴影渲染。该渲染命令904中可以包括关键字Shadow。对应的,拦截模块可以根据该关键字Shadow拦截渲染命令904,并将该渲染命令904发送给处理模块。处理模块可以在接收到该渲染命令904后,将帧缓冲94的帧缓冲ID回调给游戏应用。可以理解的是,由于如图12所示的电子设备自行执行阴影渲染的机制,在游戏应用下发渲染命令904之前,在帧缓冲94中就可以已经存储有该阴影渲染结果。那么,处理模块就可以在接收到渲染命令904后,直接将存储有阴影渲染结果的帧缓冲94的帧缓冲ID回调给游戏应用,以便于游戏应用知晓并使用该阴影渲染结果。在本申请中,该渲染命令904也可以称为第五渲染指令。
需要说明的是,上述图12的示例中,是以GPU完成法线渲染之后,电子设备自行阴影渲染为例进行说明的。在本申请的另一些实施例中,该阴影渲染过程也可以是在游戏应用指示下执行的。
对于一些游戏应用而言,其内部机制类似于如图12所示的逻辑,即在指示电子设备进行基于SubPass的法线渲染之后,可以下发渲染指令指示电子设备继续进行基于SubPass的阴影渲染操作。这样,电子设备在使用SubPass-Shadow管线进行阴影渲染时,也可以直接获取上一个SubPass的渲染结果(即SubPass-G的法线渲染结果),从而达到与如图12所示方案类似的效果。
示例性的,请参考图14,为本申请实施例提供的又一种图像渲染方法的模块交互示意。该如图14所示的方案可以用于进行阴影渲染。该示例中,电子设备根据游戏应用顺序下发基于SubPass的法线渲染指令以及基于SubPass的阴影渲染指令为例。
如图14所示,游戏应用可以下发渲染命令904,指示电子设备进行当前帧图像的阴影渲染。该渲染命令904中可以包括关键字Shadow。拦截模块可以根据该关键字Shadow拦截渲染命令904,并将该渲染命令904发送给处理模块。处理模块可以根据该渲染命令904,指示GPU进行阴影渲染。结合图12中的示例,该指示GPU进行阴影渲染的指令可以指示该阴影渲染管线可以是基于SubPass系统的。此外,该指示GPU进行阴影渲染的指令还可以包括帧缓冲91的帧缓冲ID,帧缓冲93的帧缓冲ID,以及帧缓冲92的帧缓冲ID。以便于GPU从帧缓冲91、帧缓冲93中获取阴影渲染过程所需要的输入数据。该指示GPU进行阴影渲染的指令还可以包括用于执行阴影渲染的帧缓冲92的帧缓冲ID,以及用于存储阴影渲染结果的帧缓冲94的帧缓冲ID。
对应的,GPU可以从帧缓冲91中获取法线渲染结果,从帧缓冲93中读取深度渲染结果。GPU可以在帧缓冲92上运行阴影渲染管线,并将根据光线追踪算法渲染获取的阴影渲染结果存储在帧缓冲94上。阴影渲染结果在帧缓冲94上的存储机制可以参考图13的示例,此处不再赘述。
这样,基于上述图9-图14的说明,电子设备可以在GPU的TileBuffer中进行基于SubPass的法线渲染。而不需要将法线渲染结果存入内存,从而节省该过程的读写开销。电子设备还可以在GPU的TileBuffer中进行基于SubPass的阴影渲染,从而能够直接获取法线渲染那结果,而不需要从内存中读入,由此节省该过程的读写开销。电子设备还可以在内存的一个预设格式的贴图上存储所有的阴影渲染结果,从而节省内存的存储开销。
上述示例图9-图14的示例,是从模块间交互的角度对本申请实施例提供的渲染方法进行说明的。以下结合图15所示的模块交互流程图,继续对本申请实施例提供的方案进行说明。以电子设备自行在完成法线渲染之后执行阴影渲染为例。
如图15所示,该过程可以包括:
S1501、游戏应用开始运行后,下发渲染命令901。
示例性的,该渲染命令901可以包括至少一个glCreateFrameBuffer函数,用于指示电子设备进行后续图像渲染过程中所需要的帧缓冲。
S1502、拦截模块拦截该渲染命令901,确定渲染命令901指示进行帧缓冲创建。
拦截模块可以根据渲染命令901中包括的glCreateFrameBuffer函数,确定该渲染命令901指示进行帧缓冲创建。
S1503、拦截模块向创建模块发送渲染命令901。
S1504、创建模块在GPU的缓存上创建帧缓冲91和帧缓冲92。
S1505、在GPU片上缓存上创建帧缓冲91和帧缓冲92。
这样,帧缓冲91以及帧缓冲92可以为GPU片上存储空间中的TileBuffer。其中,帧缓冲91可以用于进行法线渲染,帧缓冲92则可以用于进行阴影渲染。
S1506、创建模块在内存上创建帧缓冲93和帧缓冲94。
S1507、在内存上创建帧缓冲93和帧缓冲94。
这样,帧缓冲93以及帧缓冲94可以为内存中的帧缓冲。其中,帧缓冲93可以用于进行深度渲染,帧缓冲94则可以用于存储阴影渲染结果。
需要说明的是,S1504-S1505的执行与S1506-S1507的执行先后顺序可以不做限定。例如,在一些实施例中,S1504-S1505可以早于S1506-S1507执行。在另一些实施例中,S1504-S1505可以晚于S1506-S1507执行。在一些实施例中,S1504-S1505可以与S1506-S1507同步执行。
S1508、创建模块向处理模块发送新建帧缓冲的帧缓冲ID。
其中,新建帧缓冲可以包括帧缓冲91-帧缓冲94。那么,该新建帧缓冲的帧缓冲ID可以包括帧缓冲91-帧缓冲94的帧缓冲ID。
由此就可以完成帧缓冲的创建,以便于后续对于帧图像的渲染过程中随时调用。
S1509、游戏应用下发渲染命令902。
示例性的,该渲染命令902可以包括关键字depthMap,用于指示电子设备进行当前帧图像(如第N帧图像)的深度信息的渲染。
S1510、拦截模块拦截该渲染命令902,确定渲染命令902指示进行深度渲染。
其中,拦截模块可以根据关键字depthMap,确定渲染命令902指示进行深度渲染。
S1511、拦截模块向处理模块发送渲染命令902。
S1512、处理模块向GPU发送深度渲染指令。
示例性的,处理模块可以根据渲染命令902生成该深度渲染指令。在一些实施例中,深度渲染指令中可以包括帧缓冲93的帧缓冲ID,以便于指示GPU将深度渲染结果存储在帧缓冲93中。
需要说明的是,类似与前述说明,该深度渲染指令的具体实施,可以是处理模块通过深度渲染指令,调用图形库中的API,指示GPU执行对应的深度渲染操作的。
S1513、GPU根据深度渲染指令执行深度渲染操作。
S1514、GPU向内存发送深度渲染结果。
S1515、内存在帧缓冲93上存储深度渲染结果。
这样,就完成了深度渲染的过程。
S1516、游戏应用下发渲染命令903。
示例性的,该渲染命令903可以包括关键字Vertex,用于指示电子设备进行当前帧图像(即第N帧图像)的包括深度信息在内的几何信息的渲染。
S1517、拦截模块拦截该渲染命令903,确定渲染命令903指示进行法线渲染。
其中,拦截模块可以根据关键字Vertex,确定渲染命令903指示进行法线渲染。
S1518、拦截模块向处理模块发送渲染命令903。
S1519、处理模块向GPU发送法线渲染指令。
示例性的,处理模块可以根据渲染命令903生成该法线渲染指令。在一些实施例中,深度渲染指令中可以包括帧缓冲91的帧缓冲ID,以便于指示GPU在帧缓冲91上执行法线渲染。此外,深度渲染指令中还可以包括第一标识,用于指示GPU执行基于SubPass的渲染操作。
需要说明的是,类似与前述说明,该法线渲染指令的具体实施,可以是处理模块通过法线渲染指令,调用图形库中与SubPass相应的API,并基于渲染命令903中携带的Vertex数据,指示GPU执行对应的包括法线在内的几何渲染操作的。
S1520、GPU根据法线渲染指令执行法线渲染操作。
示例性的,GPU可以根据法线渲染指令,在帧缓冲91上运行SubPass-G,以便于执行法线渲染操作。对应的,在完成SubPass-G中的法线渲染后,就可以在帧缓冲91上获取法线渲染结果。该完成法线渲染到在片上缓存中获取法线渲染那结果的过程可以如S1521-S1522所示。
S1521、GPU将法线渲染结果发送给GPU片上缓存。
S1522、在帧缓冲91获取法线渲染结果。
这样,就可以在SubPass-G中获取法线渲染结果。该法线渲染结果可以直接被下一个SubPass管线获取。
在本示例中,GPU还可以在完成法线渲染操作之后反馈法线渲染已完成。例如,如S1523所示。
S1523、GPU向处理模块发送法线渲染完成指示。
S1524、处理模块向阴影渲染模块发送法线渲染完成指示。
由此触发阴影渲染模块自行控制GPU进行阴影渲染。
在本申请的另一些实施例中,GPU可以直接向阴影渲染模块反馈法线渲染完成指示,以便于触发阴影渲染模块自行控制GPU进行阴影渲染。
S1525、阴影渲染模块生成阴影渲染指令。
示例性的,该阴影渲染指令可以用于指示GPU进行阴影渲染。在该示例中,该阴影渲染指令也可以携带有第一标识,用于指示GPU执行基于SubPass的渲染操作。
需要说明的是,类似与前述说明,该阴影渲染指令的具体实施,可以是阴影渲染模块通过阴影渲染指令,调用图形库中与SubPass相应的API,指示GPU执行对应的阴影渲染操作的。
S1526、阴影渲染模块向GPU发送阴影渲染指令。
S1527、GPU从GPU片上缓存获取法线渲染结果。
示例性的,GPU可以从帧缓冲91上获取法线渲染结果。可以理解的是,由于该阴影渲染管线(如SubPass-Shadow)为SubPass-G后的一个SubPass,因此可以直接获取SubPass-G的渲染结果,即法线渲染结果。
S1528、GPU从内存读取深度渲染结果。
示例性的,GPU可以从帧缓冲93上读取深度渲染结果。
S1529、GPU执行阴影渲染操作。例如,GPU可以根据预设的光线追算法,基于获取的法线渲染结果以及深度渲染结果,计算获取阴影渲染结果。
S1530、GPU向内存发送阴影渲染结果。
S1531、在帧缓冲94上存储阴影渲染结果。
示例性的,在帧缓冲94上存储阴影渲染结果的方式可以参考图13所示的方案,此处不再赘述。
这样,电子设备就可以实现基于TileBuffer的阴影渲染。由于不需要将法线渲染结果存储到内存中,也就不需要在阴影渲染过程中读取法线渲染结果。因此能够响应的读写开销,提升阴影渲染效率。
在后续游戏应用需要使用阴影渲染结果时,则电子设备就可以直接将阴影渲染结果回调给游戏应用。
示例性的,如S1532所示,游戏应用可以下发渲染命令904,指示电子设备进行当前帧图像的阴影渲染。该渲染命令904中可以包括关键字Shadow。接下来,在S1533中,拦截模块可以根据该关键字Shadow确定渲染命令904指示进行阴影渲染。拦截模块可以将渲染命令904发送给处理模块(如执行S1534)。对应的,处理模块可以直接将帧缓冲94的帧缓冲ID发送给游戏应用(如执行S1535),以便于游戏应用可以直接在帧缓冲94中获取阴影渲染结果。
在本申请的另一些实施例中,电子设备也可以根据游戏应用下发的渲染命令,在执行SubPass-G的法线渲染之后,执行SubPass-Shadow的阴影渲染。该过程可以参考如图14的示例,其具体实施过程不再赘述。
上述主要从各个服务模块的角度对本申请实施例提供的方案进行了介绍。为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
图16示出了的一种电子设备1600的组成示意图。如图16所示,该电子设备1600可以包括:处理器1601和存储器1602。该存储器1602用于存储计算机执行指令。示例性的,在一些实施例中,当该处理器1601执行该存储器1602存储的指令时,可以使得该电子设备1600执行上述实施例中任一种所示的图像渲染方法。
需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
图17示出了的一种芯片系统1700的组成示意图。该芯片系统1700可以包括:处理器1701和通信接口1702,用于支持相关设备实现上述实施例中所涉及的功能。在一种可能的设计中,芯片系统还包括存储器,用于保存终端必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。需要说明的是,在本申请的一些实现方式中,该通信接口1702也可称为接口电路。
需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
在上述实施例中的功能或动作或操作或步骤等,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包括一个或多个可以用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
尽管结合具体特征及其实施例对本申请进行了描述,显而易见的,在不脱离本申请的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本申请的示例性说明,且视为已覆盖本申请范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包括这些改动和变型在内。

Claims (16)

1.一种图像渲染方法,其特征在于,应用于电子设备中,所述电子设备中运行有第一应用程序,所述第一应用程序通过下发渲染指令流指示所述电子设备执行对第一帧图像的渲染处理,所述第一帧图像中包括阴影区域;所述渲染指令流中包括第一渲染指令和第二渲染指令,所述方法包括:
根据所述第一渲染指令渲染获取所述第一帧图像的深度渲染结果;所述深度渲染结果存储在所述电子设备的内存中;
根据所述第二渲染指令渲染获取所述第一帧图像的法线渲染结果;所述法线渲染结果存储在所述电子设备的图形处理模块的片上存储区中;
根据所述深度渲染结果和所述法线渲染结果,获取与所述阴影区域匹配的阴影渲染结果。
2.根据权利要求1所述的方法,其特征在于,所述渲染指令流还包括第三渲染指令,所述第三渲染指令用于指示所述电子设备在内存中创建第一帧缓冲;所述第一帧缓冲用于存储所述深度渲染结果;
在根据所述第一渲染指令渲染获取所述第一帧图像的深度渲染结果之前,所述方法还包括:
根据所述第三渲染指令,在所述内存中创建第一帧缓冲;
所述深度渲染结果存储在所述电子设备的内存中,包括:
所述深度渲染结果存储在所述第一帧缓冲上。
3.根据权利要求1或2所述的方法,其特征在于,所述渲染指令流还包括第四渲染指令,所述第四渲染指令用于指示所述电子设备创建第二帧缓冲;所述第二帧缓冲用于存储所述法线渲染结果;
在根据所述第二渲染指令渲染获取所述第一帧图像的法线渲染结果之前,所述方法还包括:
根据所述第四渲染指令,在所述图形处理模块的片上存储区中创建所述第二帧缓冲;
所述法线渲染结果存储在所述电子设备的图形处理模块的片上存储区中,包括:
所述法线渲染结果存储在所述第二帧缓冲上。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述渲染指令流还包括第五渲染指令,所述第五渲染指令用于指示所述电子设备执行所述对所述阴影信息的渲染操作;
所述根据所述深度渲染结果和所述法线渲染结果,获取阴影渲染结果,包括:
响应于所述第五渲染指令,从所述内存中读取所述深度渲染结果,从所述图形处理模块的片上存储区中获取所述法线渲染结果;
根据预设的光线追踪算法,处理获取所述阴影渲染结果。
5.根据权利要求1-3中任一项所述的方法,其特征在于,所述根据所述深度渲染结果和所述法线渲染结果,获取阴影渲染结果,包括:
在完成法线渲染操作的情况下,触发指示所述图形处理模块执行阴影渲染操作;
所述阴影渲染操作包括:从所述内存中读取所述深度渲染结果,从所述图形处理模块的片上存储区中获取所述法线渲染结果;根据预设的光线追踪算法,处理获取所述阴影渲染结果。
6.根据权利要求5所述的方法,其特征在于,在所述触发指示所述图形处理模块执行阴影渲染操作之前,所述方法还包括:
在完成所述法线渲染操作时,生成第一消息,所述第一消息用于指示所述法线渲染操作完成;
所述触发指示所述图形处理模块执行阴影渲染操作,包括:
在所述第一消息生成时,触发指示所述图形处理模块执行阴影渲染操作。
7.根据权利要求1-6中任一项所述的方法,其特征在于,
所述根据所述第二渲染指令渲染获取所述第一帧图像的法线渲染结果,包括:
根据所述第二渲染指令,向图形处理模块下发第六渲染指令,所述第六渲染指令用于指示所述图形处理模块,在第一延迟渲染管线SubPass上执行所述第一帧图像的法线渲染操作,
所述图形处理模块在所述第一SubPass上执行所述第六渲染指令,获取所述法线渲染结果。
8.根据权利要求7所述的方法,其特征在于,所述根据所述深度渲染结果和所述法线渲染结果,获取阴影渲染结果,包括:
在所述图形处理模块的片上缓存中创建第二SubPass,所述第二SubPass用于执行阴影渲染操作;
获取所述第一SubPass的渲染结果输入所述第二SubPass,所述第一SubPass的渲染结果包括所述法线渲染结果;
从所述内存中读取所述深度渲染结果输入所述第二SubPass,
根据预设的光线追踪算法,对所述法线渲染结果和所述深度渲染结果进行处理,获取所述阴影渲染结果。
9.根据权利要求1-8中任一项所述的方法,其特征在于,所述阴影渲染结果包括:第一法线信息,第二法线信息,阴影信息,以及距离信息。
10.根据权利要求9所述的方法,其特征在于,在获取所述阴影渲染结果之后,所述方法还包括:
将所述阴影渲染结果输出到所述内存上的第三帧缓冲上,所述第三帧缓冲上包括第一格式的贴图,所述第一格式的贴图包括至少四个通道。
11.根据权利要求10所述的方法,其特征在于,所述将所述阴影渲染结果输出到所述内存上的第三帧缓冲上,包括:
将所述第一法线信息,第二法线信息,阴影信息,以及距离信息分别输出到所述第一格式的贴图的不同通道上。
12.根据权利要求10或11所述的方法,其特征在于,所述第一格式为RGBA16F。
13.根据权利要求1-12中任一项所述的方法,其特征在于,所述图形处理模块是图形处理器GPU。
14.一种电子设备,其特征在于,所述电子设备包括一个或多个处理器和一个或多个存储器;所述一个或多个存储器与所述一个或多个处理器耦合,所述一个或多个存储器存储有计算机指令;
当所述一个或多个处理器执行所述计算机指令时,使得所述电子设备执行如权利要求1-13中任一项所述的图像渲染方法。
15.一种计算机可读存储介质,其特征在于,包括计算机指令,当所述计算机指令在电子设备上运行时,使得所述电子设备执行如权利要求1-13中任一项所述的图像渲染方法。
16.一种芯片系统,其特征在于,所述芯片系统包括接口电路和处理器;所述接口电路和所述处理器通过线路互联;所述接口电路用于从存储器接收信号,并向所述处理器发送信号,所述信号包括所述存储器中存储的计算机指令;当所述处理器执行所述计算机指令时,所述芯片系统执行如权利要求1-13中任一项所述的图像渲染方法。
CN202210929017.XA 2022-08-03 2022-08-03 一种图像渲染方法和电子设备 Pending CN117557701A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210929017.XA CN117557701A (zh) 2022-08-03 2022-08-03 一种图像渲染方法和电子设备
PCT/CN2023/091006 WO2024027231A1 (zh) 2022-08-03 2023-04-26 一种图像渲染方法和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210929017.XA CN117557701A (zh) 2022-08-03 2022-08-03 一种图像渲染方法和电子设备

Publications (1)

Publication Number Publication Date
CN117557701A true CN117557701A (zh) 2024-02-13

Family

ID=89821043

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210929017.XA Pending CN117557701A (zh) 2022-08-03 2022-08-03 一种图像渲染方法和电子设备

Country Status (2)

Country Link
CN (1) CN117557701A (zh)
WO (1) WO2024027231A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117745518A (zh) * 2024-02-21 2024-03-22 芯动微电子科技(武汉)有限公司 一种优化内存分配的图形处理方法及系统

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9489710B2 (en) * 2015-02-10 2016-11-08 Qualcomm Incorporated Hybrid rendering in graphics processing
US10223822B2 (en) * 2016-12-22 2019-03-05 Apple Inc. Mid-render compute for graphics processing
US10403032B2 (en) * 2017-08-22 2019-09-03 Qualcomm Incorporated Rendering an image from computer graphics using two rendering computing devices
US11004252B2 (en) * 2018-12-28 2021-05-11 Intel Corporation Real time ray tracing (RTRT)-based adaptive multi-frequency shading (AMFS)
US11373268B2 (en) * 2020-09-30 2022-06-28 Qualcomm Incorporated Apparatus and method for graphics processing unit hybrid rendering
CN114419234A (zh) * 2021-12-30 2022-04-29 北京三快在线科技有限公司 三维场景渲染方法、装置、电子设备及存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117745518A (zh) * 2024-02-21 2024-03-22 芯动微电子科技(武汉)有限公司 一种优化内存分配的图形处理方法及系统

Also Published As

Publication number Publication date
WO2024027231A1 (zh) 2024-02-08

Similar Documents

Publication Publication Date Title
US11347370B2 (en) Method and system for video recording
US8860716B2 (en) 3D image processing method and portable 3D display apparatus implementing the same
CN111491174A (zh) 虚拟礼物获取及展示方法、装置、设备及存储介质
EP3311565B1 (en) Low latency application streaming using temporal frame transformation
CN114210055B (zh) 一种图像渲染方法和电子设备
WO2023160167A1 (zh) 一种图像处理方法、电子设备及存储介质
CN113457160A (zh) 数据处理方法、装置、电子设备及计算机可读存储介质
US20230328197A1 (en) Display method and apparatus based on augmented reality, device, and storage medium
CN111258519B (zh) 屏幕分屏实现方法、装置、终端和介质
CN114708369B (zh) 一种图像渲染方法和电子设备
CN116821040B (zh) 基于gpu直接存储器访问的显示加速方法、装置及介质
WO2024027231A1 (zh) 一种图像渲染方法和电子设备
CN116546228B (zh) 用于虚拟场景的推流方法、装置、设备及存储介质
CN114445600A (zh) 一种特效道具的展示方法、装置、设备及存储介质
WO2024060949A1 (zh) 用于增强现实的方法、装置、设备和存储介质
EP4088451A1 (en) Method and apparatus for media scene description
CN116740254A (zh) 一种图像处理方法及终端
CN115311397A (zh) 用于图像渲染的方法、装置、设备和存储介质
US20210006850A1 (en) Method and system for shortening transmission time of media file through concurrent processing of encoding and uploading
CN115018692A (zh) 一种图像渲染方法及电子设备
CN115175002B (zh) 一种视频播放方法及设备
WO2024051471A1 (zh) 一种图像处理方法和电子设备
KR102201021B1 (ko) 동영상 콘텐츠의 미리보기 동영상을 생성하여 제공하는 방법과 시스템
KR102656014B1 (ko) 분산 렌더링 기반의 클라우드 vr 장치
WO2023093212A1 (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