[go: up one dir, main page]

CN111400024B - 渲染过程中的资源调用方法、装置和渲染引擎 - Google Patents

渲染过程中的资源调用方法、装置和渲染引擎 Download PDF

Info

Publication number
CN111400024B
CN111400024B CN201910004657.8A CN201910004657A CN111400024B CN 111400024 B CN111400024 B CN 111400024B CN 201910004657 A CN201910004657 A CN 201910004657A CN 111400024 B CN111400024 B CN 111400024B
Authority
CN
China
Prior art keywords
rendering
engine
command buffer
commands
engines
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
CN201910004657.8A
Other languages
English (en)
Other versions
CN111400024A (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.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology 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 Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN201910004657.8A priority Critical patent/CN111400024B/zh
Publication of CN111400024A publication Critical patent/CN111400024A/zh
Application granted granted Critical
Publication of CN111400024B publication Critical patent/CN111400024B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals

Landscapes

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

Abstract

本发明实施例提出一种渲染过程中的资源调用方法、装置和渲染引擎。其中该方法包括:获取渲染过程中画布对象的渲染需求信息;如果所述渲染需求信息中包括需要调用多个渲染引擎的资源,则将多个渲染引擎的渲染命令按照设定顺序存储在渲染命令缓冲区;在所述画布对象内,按照所述设定顺序执行所述渲染命令缓冲区中的各渲染命令,以在所述画布对象内调用多个渲染引擎的资源。本发明实施例将多个渲染引擎的渲染命令按照设定顺序存储在渲染命令缓冲区,可以在同一画布对象中渲染多种渲染引擎的资源,实现多个渲染引擎的联合使用,能够兼容多种架构的渲染引擎,提供更加丰富的渲染效果,有利于实现更高级的创意。

Description

渲染过程中的资源调用方法、装置和渲染引擎
技术领域
本发明涉及图像处理技术领域,尤其涉及一种渲染过程中的资源调用方法、装置和渲染引擎。
背景技术
随着Feed流(feed flow,信息流)广告创新的需要,越来越多包含特效、可动元素的创意被提出。实现这些特效往往难度极大,需要数学、图形学的知识作为支撑。
在Feed流中实现图形学特效的方案有:使用苹果UIKit(User Interface Kit,用户界面工具)、CoreGraphics(核心图形)等原生框架提供的少量特效接口,接入成熟的第三方游戏引擎。
目前的渲染引擎包括多种,例如SpriteKit、SceneKit、ARKit等。其中,SpriteKit是2D(二维)游戏引擎。SceneKit是3D(三维)游戏引擎。ARKit是增强现实引擎。
这些渲染引擎有自己的画布,只能在自己的画布上分别绘制图形,架构不兼容。
发明内容
本发明实施例提供一种渲染过程中的资源调用方法、装置和渲染引擎,以解决现有技术中的一个或多个技术问题。
第一方面,本发明实施例提供了一种渲染过程中的资源调用方法,包括:
获取渲染过程中画布对象的渲染需求信息;
如果所述渲染需求信息中包括需要调用多个渲染引擎的资源,则将多个渲染引擎的渲染命令按照设定顺序存储在渲染命令缓冲区;
在所述画布对象内,按照所述设定顺序执行所述渲染命令缓冲区中的各渲染命令,以在所述画布对象内调用多个渲染引擎的资源。
在一种实施方式中,将多个渲染引擎的渲染命令按照设定顺序存储在渲染命令缓冲区,包括:
在准备渲染阶段,将当前渲染引擎、二维游戏渲染引擎和三维游戏渲染引擎的至少两个渲染命令按照设定顺序串联地存储在第一渲染命令缓冲区;和/或
在图形渲染阶段,将当前渲染引擎、二维游戏渲染引擎和三维游戏渲染引擎的至少两个渲染命令按照按照设定顺序串联地存储在第二渲染命令缓冲区。
在一种实施方式中,该方法还包括:
如果所述渲染需求信息中还包括需要调用着色器库的资源,则将多个渲染引擎的渲染命令和所述着色器库的渲染命令按照设定顺序串联地存储在所述渲染命令缓冲区。
在一种实施方式中,将多个渲染引擎的渲染命令和所述着色器库的渲染命令按照设定顺序串联地存储在所述渲染命令缓冲区,包括:
在准备渲染阶段,将当前渲染引擎、二维游戏渲染引擎、三维游戏渲染引擎和着色器库的至少两个渲染命令按照设定顺序串联地存储在第一渲染命令缓冲区;和/或
在图形渲染阶段,将当前渲染引擎、二维游戏渲染引擎、三维游戏渲染引擎和着色器库的至少两个渲染命令按照按照设定顺序串联地存储在第二渲染命令缓冲区。
在一种实施方式中,该方法还包括:
如果所述渲染需求信息中还包括需要调用三维模型工具库的资源,则从所述三维模型工具库中调用所需的坐标信息。
在一种实施方式中,该方法还包括:
如果所述渲染需求信息中还包括需要调用增强现实引擎的资源,则在计算阶段,计算增强现实效果对应的效果参数。
第二方面,本发明实施例提供了一种渲染过程中的资源调用装置,包括:
获取模块,用于获取渲染过程中画布对象的渲染需求信息;
第一存储模块,用于如果所述渲染需求信息中包括需要调用多个渲染引擎的资源,则将多个渲染引擎的渲染命令按照设定顺序存储在渲染命令缓冲区;
执行模块,用于在所述画布对象内,按照所述设定顺序执行所述渲染命令缓冲区中的各渲染命令,以在所述画布对象内调用多个渲染引擎的资源。
在一种实施方式中,所述第一存储模块还用于:
在准备渲染阶段,将当前渲染引擎、二维游戏渲染引擎和三维游戏渲染引擎的至少两个渲染命令按照设定顺序串联地存储在第一渲染命令缓冲区;和/或
在图形渲染阶段,将当前渲染引擎、二维游戏渲染引擎和三维游戏渲染引擎的至少两个渲染命令按照按照设定顺序串联地存储在第二渲染命令缓冲区。
在一种实施方式中,该装置还包括:
第二存储模块,用于如果所述渲染需求信息中还包括需要调用着色器库的资源,则将多个渲染引擎的渲染命令和所述着色器库的渲染命令按照设定顺序串联地存储在所述渲染命令缓冲区。
在一种实施方式中,所述第二存储模块还用于:
在准备渲染阶段,将当前渲染引擎、二维游戏渲染引擎、三维游戏渲染引擎和着色器库的至少两个渲染命令按照设定顺序串联地存储在第一渲染命令缓冲区;和/或
在图形渲染阶段,将当前渲染引擎、二维游戏渲染引擎、三维游戏渲染引擎和着色器库的至少两个渲染命令按照按照设定顺序串联地存储在第二渲染命令缓冲区。
在一种实施方式中,该装置还包括:
三维模型调用模块,用于如果所述渲染需求信息中还包括需要调用三维模型工具库的资源,则从所述三维模型工具库中调用所需的坐标信息。
在一种实施方式中,该装置还包括:
增强现实调用模块,用于如果所述渲染需求信息中还包括需要调用增强现实引擎的资源,则在计算阶段,计算增强现实效果对应的效果参数。
第三方面,本发明实施例提供了一种渲染过程中的资源调用装置,所述装置的功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
在一种实施方式中,所述装置的结构中包括处理器和存储器,所述存储器用于存储支持所述装置执行上述渲染过程中的资源调用方法的程序,所述处理器被配置为用于执行所述存储器中存储的程序。所述装置还可以包括通信接口,用于与其他设备或通信网络通信。
第四方面,本发明实施例提供了一种渲染引擎,包括:本发明实施例的任意一种渲染过程中的资源调用装置。
第五方面,本发明实施例提供了一种计算机可读存储介质,用于存储渲染过程中的资源调用装置所用的计算机软件指令,其包括用于执行上述渲染过程中的资源调用方法所涉及的程序。
上述技术方案中的一个技术方案具有如下优点或有益效果:将多个渲染引擎的渲染命令按照设定顺序存储在渲染命令缓冲区,可以在同一画布对象中渲染多种渲染引擎的资源,实现多个渲染引擎的联合使用,能够兼容多种架构的渲染引擎,提供更加丰富的渲染效果,有利于实现更高级的创意。
上述技术方案中的另一个技术方案具有如下优点或有益效果:充分缓存GPU资源,可以进一步提高了渲染的速度和效率。
上述概述仅仅是为了说明书的目的,并不意图以任何方式进行限制。除上述描述的示意性的方面、实施方式和特征之外,通过参考附图和以下的详细描述,本发明进一步的方面、实施方式和特征将会是容易明白的。
附图说明
在附图中,除非另外规定,否则贯穿多个附图相同的附图标记表示相同或相似的部件或元素。这些附图不一定是按照比例绘制的。应该理解,这些附图仅描绘了根据本发明公开的一些实施方式,而不应将其视为是对本发明范围的限制。
图1示出根据本发明实施例的渲染过程中的资源调用方法的流程图。
图2示出根据本发明实施例的渲染引擎中一个渲染周期的示例图。
图3示出根据本发明实施例的渲染过程中的资源调用方法的流程图。
图4示出根据本发明实施例的渲染过程中的资源调用方法的流程图。
图5示出根据本发明实施例的渲染过程中的资源调用装置的结构框图。
图6示出根据本发明实施例的渲染过程中的资源调用装置的结构框图。
图7示出根据本发明实施例的渲染引擎中画布对象的内部结构示意图。
图8示出根据本发明实施例的渲染引擎的渲染流程的示意图。
图9示出根据本发明实施例的渲染过程中的资源调用装置的结构框图。
具体实施方式
在下文中,仅简单地描述了某些示例性实施例。正如本领域技术人员可认识到的那样,在不脱离本发明的精神或范围的情况下,可通过各种不同方式修改所描述的实施例。因此,附图和描述被认为本质上是示例性的而非限制性的。
图1示出根据本发明实施例的渲染过程中的资源调用方法的流程图。如图1所示,该方法可以包括:
步骤S11、获取渲染过程中画布对象的渲染需求信息;
步骤S12、如果渲染需求信息中包括需要调用多个渲染引擎的资源,则将多个渲染引擎的渲染命令按照设定顺序存储在渲染命令缓冲区;
步骤S13、在所述画布对象内,按照所述设定顺序执行渲染命令缓冲区中的各渲染命令,以在所述画布对象内调用多个渲染引擎的资源。
在一种示例中,当前渲染引擎可以包括系统屏幕刷新通知类、核心控制器和多个画布对象。在当前渲染引擎中,可以运行一个或多个画布对象。每个画布对象为一个实例。如果同时运行多个画布对象,可以采用系统屏幕刷新通知类例如CADisplayLink触发渲染驱动事件。其中,系统屏幕刷新通知类可以每一帧发出一个渲染驱动事件,以使得画布对象与屏幕保持相同刷新时间。核心控制器例如VGMetalCore接收到渲染驱动事件后,可以抛出渲染驱动通知。在渲染引擎中可以按照一定的顺序创建多个画布对象。每个画布对象都可以监听核心控制器的渲染驱动通知。监听到渲染驱动通知后,各画布对象可以按照一定的顺序例如各自的创建顺序触发渲染事件。例如,如果创建顺序为画布对象A、画布对象B、画布对象C,则画布对象A先触发渲染事件。待画布对象A执行完这一帧渲染过程后,画布对象B触发渲染事件。待画布对象B执行完这一帧渲染过程后,画布对象C触发渲染事件。待画布对象C执行完这一帧渲染过程后,这一帧完成渲染过程。然后,各画布对象可以继续监听渲染驱动通知,开始下一帧的渲染过程。
在一种实施方式中,在步骤S12中,将多个渲染引擎的渲染命令按照设定顺序存储在渲染命令缓冲区,包括以下方式的一种或多种:
方式一:在准备渲染阶段,将当前渲染引擎、二维游戏渲染引擎和三维游戏渲染引擎的至少两个渲染命令按照设定顺序串联地存储在第一渲染命令缓冲区。
方式二:在图形渲染阶段,将当前渲染引擎、二维游戏渲染引擎和三维游戏渲染引擎的至少两个渲染命令按照按照设定顺序串联地存储在第二渲染命令缓冲区。
其中,二维游戏渲染引擎(可以简称2D引擎)可以为SpriteKit。SpriteKit内部包括大量2D游戏引擎需要的内容,如2D物理引擎、粒子系统等。SpriteKit可以实现的2D效果包括平移、旋转、切割等常规的效果,还包括颜色变换(例如各种滤镜、黑白化等)、平滑算法(例如模糊)等效果。这些内容可以和当前渲染引擎的其他内容同时绘制在一个画布对象的实例中。
三维游戏渲染引擎(可以简称3D引擎)可以为SceneKit。SceneKit内部包括大量3D游戏引擎需要的内容,如三维模型加载、3D物理引擎、光照和阴影等。其中,3D物理引擎可以实现做自由落体、碰撞等物理效果。SceneKit可以实现的3D效果还包括曲面细分、三维变换(例如曲面细分后可以对一个正方形做出波浪的效果)、环境光遮蔽(例如对拐角等位置加阴影遮蔽的效果)等。这些内容同样可以和当前渲染引擎的其他内容同时绘制在一个画布对象的实例中。除了这些,SceneKit还支持更加高级的游戏特效,如环境光遮蔽。这些功能可以在Xcode内置的SceneKit工具中制作并且绘制在当前渲染引擎的实例之中。
当前渲染引擎可以打通渲染层。SpriteKit和SceneKit各自拥有自己的画布对象,当前渲染引擎本身也又拥有自己的画布对象,它们的共同点是可以选择使用Metal内核进行渲染。当前渲染引擎通过Metal底层的渲染命令缓冲区可以将自身、SpriteKit和SceneKit的渲染命令串联到一起,使SpriteKit、SceneKit的渲染命令和当前渲染引擎其他渲染命令一起提交到同一个渲染命令缓冲区。当这个缓冲区被执行的时候,所有的内容都将被渲染在同一个画布对象之中,实现引擎联合使用。
在一种实施方式中,画布对象的渲染需求信息可以包括需要渲染的效果(也可以称为特效)。需要渲染的效果可以包括当前渲染引擎自身的效果、二维游戏渲染引擎的效果、三维游戏渲染引擎的效果等。其中,当前渲染引擎自身的效果可以保存在画布对象的效果列表中。例如,画布对象A的效果列表中包括光照、飞入、飞出等效果。
获取画布对象的渲染需求信息的过程,可以包括遍历画布对象的效果列表、二维游戏渲染引擎的效果、三维游戏渲染引擎的效果等。遍历后,可以获得画布对象需要渲染的所有效果及其渲染顺序。然后,在每一帧的渲染过程中,对该画布对象中的待渲染图形,按照该渲染顺序依次施加对应的效果。例如,遍历后得到画布对象A自身的渲染效果包括光照、飞入、飞出,二维游戏渲染引擎的效果包括旋转,三维游戏渲染引擎的效果包括碰撞。并且,上述各效果的渲染顺序为飞入、旋转、碰撞、光照、飞出。
根据所要渲染的内容的不同,在渲染过程中的相应阶段,可以将需要的多个渲染命令按照设定顺序串联地保存到缓冲区。例如,可以将画布对象A的上述效果对应的渲染命令,按照上述的渲染顺序串联地保存到缓冲区。在执行该缓冲区时,可以按照保存的顺序执行这些渲染命令。例如,对于画布对象A中的图形依次施加飞入、旋转、碰撞、光照、飞出的效果。
如图2所示,在画布对象的渲染过程中,可以包括事件抛出、数值计算、准备渲染、图形渲染和交换缓冲区等多个阶段。
一般来说,每一种效果根据自身的特点具有相应的效果参数。在画布对象触发渲染事件之后,可以进入渲染过程。在渲染过程中,如果触发计算事件,可以进入计算阶段,计算出各效果对应的效果参数。例如,对于火焰效果,可以计算出火焰的数量,每个时刻每个火焰的大小、高度、颜色、亮度等参数。再如,对于一些静态的效果,每一帧没有变化,计算出的效果参数可能是空的。
有些静态的效果是无需重绘的,动态的效果则大多需要重绘。计算出效果对应的效果参数后,根据效果参数可以判断该效果是否需要重绘。如果某个效果在多个时刻的效果参数是变化的,则该效果可能需要重绘。例如,火焰效果在不同时刻的火焰的大小、高度、颜色、亮度不同,则该火焰效果需要重绘。
对于需要重绘的效果,可以触发准备渲染事件,进入准备绘制阶段,以处理GPU资源。然后触发图形渲染事件,进入图形渲染阶段,以生成渲染上下文。再将渲染上下文传递给渲染对象,由渲染对象调用渲染应用程序编程接口例如Metal的渲染命令,完成对画布对象内的待渲染图形对渲染。
在一种实施方式中,如图3所示,该方法还包括:
步骤S14、如果所述渲染需求信息中还包括需要调用着色器库的资源,则将多个渲染引擎的渲染命令和所述着色器库的渲染命令按照设定顺序串联地存储在所述渲染命令缓冲区。
在一种示例中,着色器库可以包括MPS。MPS(英文全称为Metal PerformanceShaders)是一套图形处理器(GPU,Graphic Processing Unit)着色器程序库(可以简称着色器库)。这套着色器库包括如高斯模糊等常规的滤镜效果,还包括图像颜色直方图、边缘检测等计算机视觉相关功能。在当前渲染引擎中可以封装MPS的高斯模糊、直方图等功能。将当前渲染引擎本身的资源和MPS的资源互通接口封装后,MPS的输出能够无缝地用于当前渲染引擎中的其他渲染过程。
在一种实施方式中,在步骤S14中,将多个渲染引擎的渲染命令和所述着色器库的渲染命令按照设定顺序串联地存储在所述渲染命令缓冲区,包括以下方式的一种或多种:
方式三:在准备渲染阶段,将当前渲染引擎、二维游戏渲染引擎、三维游戏渲染引擎和着色器库的至少两个渲染命令按照设定顺序串联地存储在第一渲染命令缓冲区。
方式四:在图形渲染阶段,将当前渲染引擎、二维游戏渲染引擎、三维游戏渲染引擎和着色器库的至少两个渲染命令按照按照设定顺序串联地存储在第二渲染命令缓冲区。
在一种实施方式中,画布对象的需要渲染的效果还可以包括着色器库的效果。这样,可以从着色器库中调用该效果对应的渲染命令。
在一种实施方式中,如果画布对象的需要渲染的效果既包括渲染引擎的效果,也包括着色器库的效果,将渲染引擎与着色器库的各渲染命令存储到缓冲区,在执行该缓冲区时,可以按照保存的顺序执行这些渲染命令。
在一种实施方式中,如图4所示,该方法还包括:
步骤S15、如果渲染需求信息中还包括需要调用三维模型工具库的资源,则从所述三维模型工具库中调用所需的坐标信息。
在一种示例中,三维模型工具库可以为Model I/O。Model I/O内置了立方体、圆柱、球体等三维物体的生成接口。这些三维物体可以直接绘制在当前渲染引擎的实例中。除了这些,Model I/O还支持矩形细分、曲面细分等高级模型变换操作。当前渲染引擎的着色器代码可以定义一套坐标标准。在Model I/O中也配置相应的坐标标准,当前渲染引擎的着色器程序就能够正确识别Model I/O输出的顶点、纹理、法线等坐标数据。这样,Model I/O输出的各类三维图形就能够被当前渲染引擎正确使用了。
在一种实施方式中,可以预先缓存一些资源和数据,以加快渲染速度。该方法还包括:在GPU中预先缓存需要GPU编译的耗时资源,所述耗时资源包括画布对象的渲染管线、内置图形的关键数据和预设贴图中的至少一项,其中所述内置图形的关键数据包括所述内置图形的顶点数据和索引数据中的至少一项。在缓存画布对象的某些渲染管线时,如果MPS中有这些渲染管线,可以调用MPS,例如,高斯模糊纹理。如果MPS没有,开发者可以自己设计。在缓存内置图形的关键数据时,如果是Model I/O中有的图形,可以调用Model I/O中的三维图形的坐标数据。如果是Model I/O中没有的图形,开发者可以自己设计。
在一种实施方式中,如图4所示,该方法还包括:
步骤S16、如果渲染需求信息中还包括需要调用增强现实引擎的资源,则在计算阶段,计算增强现实效果对应的效果参数。
在一种示例中,增强现实引擎可以为ARKit内容。ARKit内部包括识别、惯性导航和绘制系统。ARKit可以辅助引擎实现AR效果绘制。在计算阶段,可以计算增强现实效果中需要追踪的坐标等参数。当前渲染引擎中可以设置一套符合物理规律的三维坐标体系,包括在摄像机进行移动时物体的三维变换。ARKit的物体追踪输出的坐标系也是符合物理规律的,可以直接将ARKit所追踪的物体的坐标输出到当前渲染引擎中,能够实现符合物理规律AR的效果。
下面为一个AR效果的具体渲染过程的示例。
在准备工作阶段,从Model I/0获取立方体的顶点数据。当前渲染引擎本身加载一张图片用于贴在立方体六个面上。创建画布对象时随意创建几个3D引擎的对象,然后分别关联几个锚点。锚点是ARKit追踪的物体。添加锚点以后,如果终端设备例如手机发生移动,ARKit会实时修改锚点的坐标。例如,手机沿z轴退后,则锚点坐标的z坐标增加。渲染时只需要将当前的锚点坐标读出来,赋值给需要画的立方体,就能实现AR效果。
在数值计算阶段,当前渲染引擎从ARKit获取锚点的坐标,更新画布对象内的立方体的坐标。
在准备渲染阶段,2D引擎从ARKit获取摄像头的画面,制作成纹理上传到GPU,并将在画布对象上绘制背景的命令加入命令缓冲区。
在绘制阶段,立方体的坐标已经在数值计算阶段更新了,因此,3D引擎可以直接将绘制立方体的命令加到命令缓冲区。在这个阶段,也可以采用当前渲染引擎自身的标准图形来绘制立方体,并将绘制立方体的命令加到命令缓冲区。
最后执行这个命令缓冲区,可以按照缓冲区里各渲染命令的顺序,先画背景,再画几个立方体。这样既可实现这个AR效果。
在本发明实施例中,当前渲染引擎可以起到将多种渲染引擎和工具库联合在一起的作用。当前渲染引擎能够缓存资源、更新坐标,并且还可以提供共用的画布对象使得多种渲染引擎和工具库可以在该画布对象中一起画,从而渲染出更加丰富的效果。
图5示出根据本发明实施例的渲染过程中的资源调用装置的结构框图。如图5所示,该渲染过程中的资源调用装置可以包括:
获取模块51,用于获取渲染过程中画布对象的渲染需求信息;
第一存储模块52,用于如果所述渲染需求信息中包括需要调用多个渲染引擎的资源,则将多个渲染引擎的渲染命令按照设定顺序存储在渲染命令缓冲区;
执行模块53,用于在所述画布对象内,按照所述设定顺序执行所述渲染命令缓冲区中的各渲染命令,以在所述画布对象内调用多个渲染引擎的资源。
在一种实施方式中,所述第一存储模块52还用于:
在准备渲染阶段,将当前渲染引擎、二维游戏渲染引擎和三维游戏渲染引擎的至少两个渲染命令按照设定顺序串联地存储在第一渲染命令缓冲区;和/或
在图形渲染阶段,将当前渲染引擎、二维游戏渲染引擎和三维游戏渲染引擎的至少两个渲染命令按照按照设定顺序串联地存储在第二渲染命令缓冲区。
在一种实施方式中,如图6所示,该装置还包括:
第二存储模块61,用于如果所述渲染需求信息中还包括需要调用着色器库的资源,则将多个渲染引擎的渲染命令和所述着色器库的渲染命令按照设定顺序串联地存储在所述渲染命令缓冲区。
在一种实施方式中,所述第二存储模块61还用于:
在准备渲染阶段,将当前渲染引擎、二维游戏渲染引擎、三维游戏渲染引擎和着色器库的至少两个渲染命令按照设定顺序串联地存储在第一渲染命令缓冲区;和/或
在图形渲染阶段,将当前渲染引擎、二维游戏渲染引擎、三维游戏渲染引擎和着色器库的至少两个渲染命令按照按照设定顺序串联地存储在第二渲染命令缓冲区。
在一种实施方式中,该装置还包括:
三维模型调用模块62,用于如果所述渲染需求信息中还包括需要调用三维模型工具库的资源,则从所述三维模型工具库中调用所需的坐标信息。
在一种实施方式中,该装置还包括:
增强现实调用模块63,用于如果所述渲染需求信息中还包括需要调用增强现实引擎的资源,则在计算阶段,计算增强现实效果对应的效果参数。
本发明实施例各装置中的各模块的功能可以参见上述方法中的对应描述,在此不再赘述。
本发明实施例提供一种渲染引擎,包括本发明实施例的任意一种渲染过程中的资源调用装置。
在一种应用示例中,基于渲染应用程序编程接口例如Metal,开发一套图形渲染引擎。该渲染引擎可以执行上述实施例中的任意一种实施方式的渲染过程中的资源调用方法。Metal是一种低层次的渲染应用程序编程接口,提供了软件所需的最低层,保证软件可以运行在不同的图形芯片上。该渲染引擎可以应用于iOS设备中,具有轻量、易接入、高性能、可多实例化等特点。此外,该渲染引擎具有在Feed流中提供多实例的三维、光照等图形学效果渲染能力。
在一种示例中,该图形渲染引擎实现方案主要包括:
1、采用单例核心控制器(例如,单例VGMetalCore)管理Metal的基础设施,并管理缓冲对象(例如,VGMetalCache对象)。采用系统屏幕刷新通知类(例如CADisplayLink)驱动渲染事件。例如,CADisplayLink每一帧发出一个渲染驱动事件,可以使得渲染引擎中的画布对象以与显示器的刷新屏幕显示界面相同的频率进行绘图。
2、采用核函数核心控制器(例如VGMetalKernelCore)和增强现实核心控制器(例如VGARCore)作为系统高性能着色器函数工具(例如MetalPerformanceShaders)和增强现实工具(例如ARKit)的入口。
3、由VGMetalCore控制各个名为VGMetalCanvas的画布对象依次触发渲染事件。
4、画布对象内部的结构可以参见图2。如图2所示,在一种示例中,在一个渲染周期内,三个画布对象(在图2中简称为画布)串联地触发渲染事件。其中,从系统屏幕刷新通知类发出渲染驱动事件到所有运行的画布对象渲染结束,可以看做为一个渲染周期。每个画布对象在一个渲染过程包括事件抛出、数值计算、准备渲染、图形渲染和交换缓冲区等多个阶段。其中,在事件抛出阶段,可以包括该画布对象监听到单例核心控制器抛出的渲染驱动通知,该通知中可以包括一些字符串,这些字符串用于表示系统屏幕刷新通知类发出了渲染驱动事件。在数值计算阶段,可以计算该画布对象的各效果的效果参数。在准备渲染阶段,可以处理GPU资源。在图形渲染阶段,可以调用渲染命令完成对画布对象内的待渲染图形的各效果的渲染。在交换缓冲区阶段,可以将画布对象当前使用的缓冲区与未使用的缓冲区交换,准备在屏幕中显示渲染效果。例如:将当前使用的缓冲区H1与未使用的缓冲区H2交换之后,可以在H2渲染下一帧。渲染完成后将H2与H1再交换,这样可以使得渲染效果更加连续。
参见图2的示例,三个画布对象分别具有自己的两个缓冲区,第一个画布对象的缓冲区为H1-1和H2-1,第二个画布对象的缓冲区为H1-2和H2-2,第三个画布对象的缓冲区为H1-3和H2-3。假设屏幕也具有两个缓冲区C1和C2。一个在前台显示时,另一个在后台隐藏。在一个渲染周期内,某一帧时,三个画布对象的渲染结果分别在缓冲区H1-1、H1-2和H1-3中。这三个缓冲区的渲染结果可以全部包括在屏幕的缓冲区C1中。这时可以将C1显示在前台,将C2隐藏。下一帧时,C2可以包括H2-1、H2-2、H2-3的渲染效果,然后,再将C1与C2交换,在屏幕中显示下一帧的渲染效果。通过不同的缓冲区的互换,实现在屏幕上连续地显示渲染效果。
在本示例中,第一个画布对象的渲染过程结束后,第二个对象的渲染过程开始。第二个画布对象的渲染过程结束后,第三个画布对象的渲染过程开始。在图2中仅画出了第一个画布对象的渲染过程所包括的各个阶段,第二个画布对象和第三个画布对象的渲染过程虽未示出,但与第一个画布对象的渲染过程类似。
在一种示例中,如图7所示,为画布对象(Canvas)的内部结构的示意图。假设该画布对象的名称为VanGogh Canvas,该画布对象可以包括系统类,例如:系统图层(CAMetalLayer)、系统绘制(CAMetalDrawable)、颜色纹理(Color Texture)。其中,CAMetalLayer可以显示由Metal在图层中呈现的内容。
该画布对象还可以包括深度纹理(Depth Texture)、管线描述子(MTL RenderPass Descriptor)和效果列表(Effect List)。其中,效果列表中可以包括多个效果(Effect)。每个效果可以包括,例如:光源描述子(Multi Light Descriptor)、摄像机(Camera)、绘制列表(Draw List)等。其中,摄像机可以包括透视描述子(PerspectiveDescriptor)、视角变换描述子(Eye Transform Descriptor)、其他描述子(OtherDescriptor)等。绘制列表中包括多个绘制对象(Draw)。每个绘制对象可以包括该效果每一笔的绘制所需要的资源。例如:材质描述子(Material Descriptor)、顶点内容(VertexContent)、片源内容(Fragment Content)、管线状态(Metal Pipeline State)、深度模板状态(Metal Depth Stencil State)、顶点一致缓冲区(Vertex Uniform Buffer)、片源一致缓冲区(Fragment Uniform Buffer)。在顶点内容中可以包括顶点缓冲区(VertexBuffer)、索引缓冲区(Index Buffer)和其他顶点描述子(Other Vertex Descriptor)。在片源内容中可以包括RGB、Y贴图和UV贴图等纹理(Texture)以及其他片源描述子(OtherFragment Descriptor)。其中,Vertex Uniform Buffer、Fragment Uniform Buffer、Vertex Buffer、Index Buffer和RGB、Y贴图和UV贴图等纹理(Texture)可以设置于GPU中。
如图8所示,该应用示例的主要渲染流程可以包括:
步骤S81、系统屏幕刷新通知类例如CADisplayLink触发渲染驱动事件,CADisplayLink可以每一帧触发一次渲染驱动事件。核心控制器例如VGMetalCore收到渲染驱动事件后抛出渲染驱动通知。一个或多个画布对象可以监听到该通知。其中,画布对象是渲染图形的宿主。如果应用程序(Application,App)中同时存在多个画布对象,它们收到通知后,可以串行地依次触发渲染事件。
步骤S82、画布对象例如VGMetalCanvas(其中,VGMetalCanvas可以为VanGoghCanvas在代码中的类名)持有当前应该被渲染的效果对象例如VGEffect。VGEffect可以是一个类簇,通过不同的子类实现不同的效果。当前应该被渲染的效果对象可以包括一个待渲染效果,也可以包括由多个待渲染效果组成的效果列表。画布对象支持将多个效果画在一起。当画布对象接收到通知后,会遍历效果对象,触发效果对象的“计算”事件。
如果需要在画布对象中渲染2D游戏效果、3D游戏效果、AR效果,在遍历过程中,可以发现这些效果。
例如,如果有AR效果,在触发“计算”事件进入计算阶段后,可以将ARKit所追踪的物体的坐标输出到当前渲染引擎中。
步骤S83、效果对象接收到“计算”事件后,根据类簇不同的类,进行不同的数值计算。这些计算可以由中央处理器(CPU,Central Processing Unit)执行。不同效果对象计算出的效果参数可能不同,例如:有些效果对象的效果参数可以是旋转一定角度,有些效果对象的效果参数可以是移动一段距离,根据效果对象具体的特点而定。
步骤S84、计算完成以后,画布对象可以基于计算结果判定效果对象是否需要重绘。例如,如果计算出的效果参数没有变化,可能属于静态的效果,一些静态的效果是不需要重绘的。对于一些不需要重绘的效果,可以不用执行渲染命令,可以减少不必要的重绘,节约性能和电量消耗。
步骤S85、对于需要重绘的效果对象,画布对象可以进一步触发“准备渲染”事件。该事件可以用于处理GPU资源。例如生成GPU缓冲区,或是生成纹理资源。其中,生成纹理资源的一种示例包括:在准备渲染时,生成在场景渲染阴影时所需要的阴影深度贴图。
步骤S86、效果对象处理完“准备渲染”事件后,画布对象触发“图形渲染”事件。效果对象开始准备渲染,计算变换矩阵,计算光源描述子,最终会生成一个渲染上下文结构体,传递给该效果对象内部持有的若干个渲染对象进行渲染。其中,渲染对象可以例如图7中的绘制对象(Draw)。渲染对象也可以是个类簇,不同的子类可以有不同的实现方式。
在当前渲染引擎中可以利用MPS的资源。例如,在进入准备渲染阶段后,可以调用利用MPS生成高斯模糊结果。在图形渲染阶段,利用高斯模糊结果进行贴图。
步骤S87、渲染对象接收到渲染上下文后,会访问内部持有的顶点内容(VertexContent)和片源内容(FragmentContent)两个着色器相关的绘制对象、也即渲染对象。这两个对象会根据渲染上下文更新到和GPU共享的UniformBuffer缓冲区内,FragmentContent此时还会从CPU向GPU上传纹理,并由VertexContent调用Metal的渲染命令进行最终的图形渲染。
在进入准备渲染阶段或图形渲染阶段后,如果需要在画布对象中渲染2D游戏效果、3D游戏效果等,还可以在准备渲染的缓冲区中按照一定顺序保存这些效果的渲染命令。例如,将当前渲染引擎、2D游戏引擎SpriteKit、3D游戏引擎SceneKit的渲染命令,通过Metal底层的渲染命令缓冲区串联到一起。将SpriteKit、SceneKit的渲染命令和当前渲染引擎其他渲染命令一起提交到同一个渲染命令缓冲区,当这个缓冲区被执行的时候,所有的内容都将被渲染在同一个画布之中,实现引擎联合使用。
此外,在图形渲染阶段,如果需要绘制立方体、圆柱、球体等三维物体的图形,可以调用Model I/O等三维模型工具库中的顶点、纹理、法线等坐标数据。当然,如果在GPU例如:顶点一致缓冲区(Vertex Uniform Buffer)、片源一致缓冲区(Fragment UniformBuffer)、顶点缓冲区(Vertex Buffer)、索引缓冲区(Index Buffer)等中,缓存了这些坐标数据,也可以直接使用已经缓存的坐标数据来绘制三维物体的图形。
在该应用示例中,渲染引擎的渲染应用程序编程接口使用Metal技术,而非使用常规的OpenGL ES技术,具有以下特点。
a)更加适应现代多核心GPU,渲染引擎可以拥有更高的性能和更稳定的帧率。
b)采用C/S模型,与GPU的通信更易于管理,渲染引擎的结构更加清晰。
c)渲染引擎稳定性和健壮性好,在线上崩溃(Crash)更少。一方面,应用程序编程接口(API,Application Programming Interface)检查,能在调试时帮助开发者发现问题。另一方面,运行时保护,使GPU出现挂起(hang)等问题时并不会直接使得APP崩溃,降低风险。
d)着色器语言MSL基于C++14扩展,使得渲染引擎的着色器代码更加现代,性能更好。
e)采用预编译机制,编译时生成了语法树,使得渲染引擎的着色器代码加载更加快,在运行时能更快加载。
进一步地,充分缓存GPU资源,可以提高渲染的速度。一种情况下,由于Feed需要频繁滑入、滑出屏幕,资源加载耗时非常关键,稍长的耗时会造成Feed流卡顿,严重影响体验。渲染引擎本身对渲染管线等需要GPU编译的耗时资源进行缓存,使得渲染管线切换和加载能在极短的时间内完成。另一种情况下,渲染引擎内部提供了矩形、立方体等内置形状。由于这些内置形状的顶点和索引数据是不会改变的,因此可以在首次访问这些形状时进行缓存,使加载这些内置形状的顶点数据、索引数据等,也能在极短的时间里完成。
通过该渲染引擎,能够快速开发基于图形学渲染的高级样式。这些基于图形学渲染的高级创意样式,其吸睛的效果和高级感能够受到担保式保量投放(GuaranteedDelivery,GD)广告主的青睐。另外渲染引擎还具有轻量且功能强大,易于移植,不依赖其他第三方库等特点,可以迅速移植到其他产品线。
将多个渲染引擎的渲染命令按照设定顺序存储在渲染命令缓冲区,可以在同一画布对象中渲染多种渲染引擎的资源,实现多个渲染引擎的联合使用,能够兼容多种架构的渲染引擎,提供更加丰富的渲染效果,有利于实现更高级的创意。
图9示出根据本发明实施例的渲染过程中的资源调用装置的结构框图。如图9所示,该装置包括:存储器910和处理器920,存储器910内存储有可在处理器920上运行的计算机程序。所述处理器920执行所述计算机程序时实现上述实施例中的渲染过程中的资源调用方法。所述存储器910和处理器920的数量可以为一个或多个。
该装置还包括:
通信接口930,用于与外界设备进行通信,进行数据交互传输。
存储器910可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
如果存储器910、处理器920和通信接口930独立实现,则存储器910、处理器920和通信接口930可以通过总线相互连接并完成相互间的通信。所述总线可以是工业标准体系结构(ISA,Industry Standard Architecture)总线、外部设备互连(PCI,PeripheralComponent)总线或扩展工业标准体系结构(EISA,Extended Industry StandardComponent)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果存储器910、处理器920及通信接口930集成在一块芯片上,则存储器910、处理器920及通信接口930可以通过内部接口完成相互间的通信。
本发明实施例提供了一种计算机可读存储介质,其存储有计算机程序,该程序被处理器执行时实现上述实施例中任一所述的方法。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。所述存储介质可以是只读存储器,磁盘或光盘等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到其各种变化或替换,这些都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (15)

1.一种渲染过程中的资源调用方法,其特征在于,包括:
获取渲染过程中画布对象的渲染需求信息;
如果所述渲染需求信息中包括需要调用多个渲染引擎的资源,则将多个渲染引擎的渲染命令按照设定顺序存储在渲染命令缓冲区;其中,所述多个渲染引擎的渲染层具有共同的渲染命令缓冲区;
在所述画布对象内,按照所述设定顺序执行所述渲染命令缓冲区中的各渲染命令,以在所述画布对象内调用多个渲染引擎的资源。
2.根据权利要求1所述的方法,其特征在于,将多个渲染引擎的渲染命令按照设定顺序存储在渲染命令缓冲区,包括:
在准备渲染阶段,将当前渲染引擎、二维游戏渲染引擎和三维游戏渲染引擎的至少两个渲染命令按照设定顺序串联地存储在第一渲染命令缓冲区;和/或
在图形渲染阶段,将当前渲染引擎、二维游戏渲染引擎和三维游戏渲染引擎的至少两个渲染命令按照设定顺序串联地存储在第二渲染命令缓冲区。
3.根据权利要求1所述的方法,其特征在于,还包括:
如果所述渲染需求信息中还包括需要调用着色器库的资源,则将多个渲染引擎的渲染命令和所述着色器库的渲染命令按照设定顺序串联地存储在所述渲染命令缓冲区。
4.根据权利要求3所述的方法,其特征在于,将多个渲染引擎的渲染命令和所述着色器库的渲染命令按照设定顺序串联地存储在所述渲染命令缓冲区,包括:
在准备渲染阶段,将当前渲染引擎、二维游戏渲染引擎、三维游戏渲染引擎和着色器库的至少两个渲染命令按照设定顺序串联地存储在第一渲染命令缓冲区;和/或
在图形渲染阶段,将当前渲染引擎、二维游戏渲染引擎、三维游戏渲染引擎和着色器库的至少两个渲染命令按照设定顺序串联地存储在第二渲染命令缓冲区。
5.根据权利要求1至4中任一项所述的方法,其特征在于,还包括:
如果所述渲染需求信息中还包括需要调用三维模型工具库的资源,则从所述三维模型工具库中调用所需的坐标信息。
6.根据权利要求1至4中任一项所述的方法,其特征在于,还包括:
如果所述渲染需求信息中还包括需要调用增强现实引擎的资源,则在计算阶段,计算增强现实效果对应的效果参数。
7.一种渲染过程中的资源调用装置,其特征在于,包括:
获取模块,用于获取渲染过程中画布对象的渲染需求信息;
第一存储模块,用于如果所述渲染需求信息中包括需要调用多个渲染引擎的资源,则将多个渲染引擎的渲染命令按照设定顺序存储在渲染命令缓冲区;其中,所述多个渲染引擎的渲染层具有共同的渲染命令缓冲区;
执行模块,用于在所述画布对象内,按照所述设定顺序执行所述渲染命令缓冲区中的各渲染命令,以在所述画布对象内调用多个渲染引擎的资源。
8.根据权利要求7所述的装置,其特征在于,所述第一存储模块还用于:
在准备渲染阶段,将当前渲染引擎、二维游戏渲染引擎和三维游戏渲染引擎的至少两个渲染命令按照设定顺序串联地存储在第一渲染命令缓冲区;和/或
在图形渲染阶段,将当前渲染引擎、二维游戏渲染引擎和三维游戏渲染引擎的至少两个渲染命令按照设定顺序串联地存储在第二渲染命令缓冲区。
9.根据权利要求7所述的装置,其特征在于,还包括:
第二存储模块,用于如果所述渲染需求信息中还包括需要调用着色器库的资源,则将多个渲染引擎的渲染命令和所述着色器库的渲染命令按照设定顺序串联地存储在所述渲染命令缓冲区。
10.根据权利要求9所述的装置,其特征在于,所述第二存储模块还用于:
在准备渲染阶段,将当前渲染引擎、二维游戏渲染引擎、三维游戏渲染引擎和着色器库的至少两个渲染命令按照设定顺序串联地存储在第一渲染命令缓冲区;和/或
在图形渲染阶段,将当前渲染引擎、二维游戏渲染引擎、三维游戏渲染引擎和着色器库的至少两个渲染命令按照设定顺序串联地存储在第二渲染命令缓冲区。
11.根据权利要求7至10中任一项所述的装置,其特征在于,还包括:
三维模型调用模块,用于如果所述渲染需求信息中还包括需要调用三维模型工具库的资源,则从所述三维模型工具库中调用所需的坐标信息。
12.根据权利要求7至10中任一项所述的装置,其特征在于,还包括:
增强现实调用模块,用于如果所述渲染需求信息中还包括需要调用增强现实引擎的资源,则在计算阶段,计算增强现实效果对应的效果参数。
13.一种渲染过程中的资源调用装置,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1至6中任一项所述的方法。
14.一种渲染引擎,其特征在于,包括:权利要求7至13中任一项的渲染过程中的资源调用装置。
15.一种计算机可读存储介质,其存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至6中任一项所述的方法。
CN201910004657.8A 2019-01-03 2019-01-03 渲染过程中的资源调用方法、装置和渲染引擎 Active CN111400024B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910004657.8A CN111400024B (zh) 2019-01-03 2019-01-03 渲染过程中的资源调用方法、装置和渲染引擎

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910004657.8A CN111400024B (zh) 2019-01-03 2019-01-03 渲染过程中的资源调用方法、装置和渲染引擎

Publications (2)

Publication Number Publication Date
CN111400024A CN111400024A (zh) 2020-07-10
CN111400024B true CN111400024B (zh) 2023-10-10

Family

ID=71435834

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910004657.8A Active CN111400024B (zh) 2019-01-03 2019-01-03 渲染过程中的资源调用方法、装置和渲染引擎

Country Status (1)

Country Link
CN (1) CN111400024B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111797192B (zh) * 2020-07-27 2023-09-01 平安科技(深圳)有限公司 Gis点数据渲染方法、装置、计算机设备和存储介质
CN112052097B (zh) * 2020-10-15 2024-05-03 腾讯科技(深圳)有限公司 虚拟场景的渲染资源处理方法、装置、设备及存储介质
CN112652025B (zh) * 2020-12-18 2022-03-22 完美世界(北京)软件科技发展有限公司 图像渲染方法、装置、计算机设备及可读存储介质
CN114756359B (zh) * 2020-12-29 2025-03-25 华为技术有限公司 一种图像处理方法和电子设备
CN112445624B (zh) * 2021-02-01 2021-04-23 江苏北弓智能科技有限公司 一种面向任务的gpu资源优化配置方法及装置
CN114549762B (zh) * 2022-02-25 2025-05-30 睿宇时空科技(重庆)股份有限公司 基于三维gis平台多渲染引擎自适应切换方法及系统、存储介质
CN114247138B (zh) * 2022-02-25 2022-05-13 腾讯科技(深圳)有限公司 图像渲染方法、装置、设备及存储介质
CN114821002B (zh) * 2022-04-12 2024-09-03 支付宝(杭州)信息技术有限公司 基于ar的互动方法、装置及电子设备

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101080698A (zh) * 2004-12-20 2007-11-28 辉达公司 使用可编程硬件进行的实时显示后处理
CN101789030A (zh) * 2010-02-03 2010-07-28 南京师范大学 Vge符号模型及基于该模型的地图符号共享系统和方法
CN102246146A (zh) * 2008-11-07 2011-11-16 谷歌公司 针对使用本地代码模块的web应用的硬件加速图形
CN103713891A (zh) * 2012-10-09 2014-04-09 阿里巴巴集团控股有限公司 一种在移动设备上进行图形渲染的方法和装置
CN103942823A (zh) * 2014-02-27 2014-07-23 优视科技有限公司 一种游戏引擎渲染方法及装置
CN105096373A (zh) * 2015-06-30 2015-11-25 华为技术有限公司 一种媒体内容渲染的方法、用户设备及系统
CN105487929A (zh) * 2015-11-19 2016-04-13 山东大学 一种集群渲染过程中镜头共享数据管理的方法
TW201719571A (zh) * 2015-09-25 2017-06-01 英特爾股份有限公司 經由渲染命令串流器之僅關於位置的著色器背景提交
CN108305316A (zh) * 2018-03-08 2018-07-20 网易(杭州)网络有限公司 基于ar场景的渲染方法、装置、介质和计算设备
CN108352051A (zh) * 2015-11-13 2018-07-31 英特尔公司 促进对计算装置处的捆绑状态的高效图形命令处理
CN108780438A (zh) * 2016-01-05 2018-11-09 夸克逻辑股份有限公司 以交互式内容交换视觉元素及填入个人相关显示的方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2638453C (en) * 2006-03-14 2010-11-09 Transgaming Technologies Inc. General purpose software parallel task engine

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101080698A (zh) * 2004-12-20 2007-11-28 辉达公司 使用可编程硬件进行的实时显示后处理
CN102246146A (zh) * 2008-11-07 2011-11-16 谷歌公司 针对使用本地代码模块的web应用的硬件加速图形
CN101789030A (zh) * 2010-02-03 2010-07-28 南京师范大学 Vge符号模型及基于该模型的地图符号共享系统和方法
CN103713891A (zh) * 2012-10-09 2014-04-09 阿里巴巴集团控股有限公司 一种在移动设备上进行图形渲染的方法和装置
CN103942823A (zh) * 2014-02-27 2014-07-23 优视科技有限公司 一种游戏引擎渲染方法及装置
CN105096373A (zh) * 2015-06-30 2015-11-25 华为技术有限公司 一种媒体内容渲染的方法、用户设备及系统
TW201719571A (zh) * 2015-09-25 2017-06-01 英特爾股份有限公司 經由渲染命令串流器之僅關於位置的著色器背景提交
CN108352051A (zh) * 2015-11-13 2018-07-31 英特尔公司 促进对计算装置处的捆绑状态的高效图形命令处理
CN105487929A (zh) * 2015-11-19 2016-04-13 山东大学 一种集群渲染过程中镜头共享数据管理的方法
CN108780438A (zh) * 2016-01-05 2018-11-09 夸克逻辑股份有限公司 以交互式内容交换视觉元素及填入个人相关显示的方法
CN108305316A (zh) * 2018-03-08 2018-07-20 网易(杭州)网络有限公司 基于ar场景的渲染方法、装置、介质和计算设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Aleksandar M. Dimitrijević 等.Ellipsoidal Clipmaps – A planet-sized terrain rendering algorithm.《Computers & Graphics》.2015,第52卷43-61. *
徐泽骅 等.基于OpenGL的地图渲染引擎设计与实现.《地理信息世界》.2015,第22卷(第6期),32-36,50. *

Also Published As

Publication number Publication date
CN111400024A (zh) 2020-07-10

Similar Documents

Publication Publication Date Title
CN111400024B (zh) 渲染过程中的资源调用方法、装置和渲染引擎
US12211143B2 (en) Patched shading in graphics processing
CN112381918B (zh) 图像渲染方法、装置、计算机设备和存储介质
US9978115B2 (en) Sprite graphics rendering system
US9799088B2 (en) Render target command reordering in graphics processing
US11908039B2 (en) Graphics rendering method and apparatus, and computer-readable storage medium
US20130127858A1 (en) Interception of Graphics API Calls for Optimization of Rendering
CN119698638A (zh) 渲染的优化方法、电子设备和计算机可读存储介质
US11094036B2 (en) Task execution on a graphics processor using indirect argument buffers
CN115393505A (zh) 渲染方法、引擎、电子设备及存储介质
CN111402349B (zh) 渲染方法、渲染装置和渲染引擎
CN111402375B (zh) 百叶窗效果的形成方法、装置和渲染引擎
HK40038691A (zh) 图像渲染方法、装置、计算机设备和存储介质
CN119478188A (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