CN111402349B - 渲染方法、渲染装置和渲染引擎 - Google Patents
渲染方法、渲染装置和渲染引擎 Download PDFInfo
- Publication number
- CN111402349B CN111402349B CN201910004988.1A CN201910004988A CN111402349B CN 111402349 B CN111402349 B CN 111402349B CN 201910004988 A CN201910004988 A CN 201910004988A CN 111402349 B CN111402349 B CN 111402349B
- Authority
- CN
- China
- Prior art keywords
- rendering
- effect
- rendered
- canvas
- event
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/001—Texturing; Colouring; Generation of texture or colour
-
- 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
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture mapping
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
Abstract
本发明实施例提出一种渲染方法、渲染装置和渲染引擎。其中该方法包括:控制各画布对象监听渲染驱动通知;控制监听到所述渲染驱动通知的各画布对象依次触发渲染事件;获取已触发渲染事件的画布对象自身的各待渲染效果;按照各所述待渲染效果对所述已触发渲染事件的画布对象内的待渲染图形进行渲染。本发明实施例通过渲染驱动通知来驱动各画布对象的渲染过程,控制监听到渲染驱动通知的各画布对象依次触发渲染事件,能够实现多实例渲染,提高了渲染的速度和效率。
Description
技术领域
本发明涉及图像处理技术领域,尤其涉及一种渲染方法、渲染装置和渲染引擎。
背景技术
随着Feed流(feed flow,信息流)广告创新的需要,越来越多包含特效、可动元素的创意被提出。实现这些特效往往难度极大,需要数学、图形学的知识作为支撑。
在Feed流中实现图形学特效的方案有:使用苹果UIKit(User Interface Kit,用户界面工具)、CoreGraphics(核心图形)等原生框架提供的少量特效接口,接入成熟的第三方游戏引擎。苹果提供的接口能够满足部分特效的需求,但对于高级创意如着色器特效无法实现,局限性大且性能不可控。成熟的第三方游戏引擎往往体积庞大,且无法支持多实例渲染。在Feed流中只能支持一个实例动,并不能实现多个实例同时动。
综上,目前的渲染引擎存在架构不兼容、体积庞大或是无法多实例化渲染等问题。
发明内容
本发明实施例提供一种渲染方法、渲染装置和渲染引擎,以解决现有技术中的一个或多个技术问题。
第一方面,本发明实施例提供了一种渲染方法,包括:
控制各画布对象监听渲染驱动通知;
控制监听到所述渲染驱动通知的各画布对象依次触发渲染事件;
获取已触发渲染事件的画布对象自身的各待渲染效果;
按照各所述待渲染效果对所述已触发渲染事件的画布对象内的待渲染图形进行渲染。
在一种实施方式中,控制各画布对象监听渲染驱动通知,包括:控制多个画布对象同时监听核心控制器抛出的渲染驱动通知,其中,所述核心控制器在接收到系统屏幕刷新通知类的渲染驱动事件后抛出所述渲染驱动通知;
控制监听到所述渲染驱动通知的各画布对象依次触发渲染事件,包括:控制监听到渲染驱动通知的多个画布对象,按照各画布对象的创建顺序依次触发渲染事件,其中,触发渲染事件的顺序包括:在当前画布对象触发渲染事件并完成渲染后,下一画布对象触发渲染事件。
在一种实施方式中,获取已触发渲染事件的画布对象自身的各待渲染效果,包括:
遍历所述已触发渲染事件的画布对象自身的效果列表,获取至少一个待渲染效果。
在一种实施方式中,按照各所述待渲染效果对所述已触发渲染事件的画布对象内的待渲染图形进行渲染,包括:
触发所述待渲染效果的计算事件,以计算所述待渲染效果的效果参数;
利用所述待渲染效果的效果参数判断所述待渲染效果是否需要重绘;
如果所述待渲染效果需要重绘,则触发准备渲染事件,以处理GPU资源;
在处理GPU资源之后,触发图形渲染事件,以生成渲染上下文;
将所述渲染上下文传递给所述待渲染效果的渲染对象,以调用渲染应用程序编程接口的渲染命令,所述渲染命令用于对所述待渲染图形进行渲染。
在一种实施方式中,处理GPU资源,包括:
生成GPU缓冲区和/或生成纹理资源。
在一种实施方式中,触发图形渲染事件,以生成渲染上下文,包括:
控制所述待渲染效果执行开始准备渲染、计算变换矩阵和计算光源描述子中的至少一个动作,以生成渲染上下文。
在一种实施方式中,将所述渲染上下文传递给所述待渲染效果的渲染对象,以调用渲染应用程序编程接口的渲染命令,包括:
控制顶点内容渲染对象和片源内容渲染对象将所述渲染上下文更新到CPU与GPU共享的缓冲区;
控制所述片源内容渲染对象从CPU向GPU上传纹理;
控制所述顶点内容渲染对象调用渲染应用程序编程接口的渲染命令。
在一种实施方式中,该方法还包括:
在GPU中预先缓存需要GPU编译的耗时资源,所述耗时资源包括画布对象的渲染管线、内置图形的关键数据和预设贴图中的至少一项,其中所述内置图形的关键数据包括所述内置图形的顶点数据和索引数据中的至少一项。
第二方面,本发明实施例提供了一种渲染装置,包括:
监听模块,用于控制各画布对象监听渲染驱动通知;
触发模块,用于控制监听到所述渲染驱动通知的各画布对象依次触发渲染事件;
获取模块,用于获取已触发渲染事件的画布对象自身的各待渲染效果;
渲染模块,用于按照各所述待渲染效果对所述已触发渲染事件的画布对象内的待渲染图形进行渲染。
在一种实施方式中,所述监听模块还用于控制多个画布对象同时监听核心控制器抛出的渲染驱动通知,其中,所述核心控制器在接收到系统屏幕刷新通知类的渲染驱动事件后抛出所述渲染驱动通知;
所述触发模块还用于控制监听到渲染驱动通知的多个画布对象,按照各画布对象的创建顺序依次触发渲染事件,其中,触发渲染事件的顺序包括:在当前画布对象触发渲染事件并完成渲染后,下一画布对象触发渲染事件。
在一种实施方式中,所述获取模块还用于遍历所述已触发渲染事件的画布对象自身的效果列表,获取至少一个待渲染效果。
在一种实施方式中,所述渲染模块包括:
计算子模块,用于触发所述待渲染效果的计算事件,以计算所述待渲染效果的效果参数;
重绘判断子模块,用于利用所述待渲染效果的效果参数判断所述待渲染效果是否需要重绘;
准备渲染子模块,用于如果所述待渲染效果需要重绘,则触发准备渲染事件,以处理GPU资源;
图形渲染子模块,用于在处理GPU资源之后,触发图形渲染事件,以生成渲染上下文;
命令调用子模块,用于将所述渲染上下文传递给所述待渲染效果的渲染对象,以调用渲染应用程序编程接口的渲染命令,所述渲染命令用于对所述待渲染图形进行渲染。
在一种实施方式中,所述准备渲染子模块还用于生成GPU缓冲区和/或生成纹理资源。
在一种实施方式中,所述图形渲染子模块还用于控制所述待渲染效果执行开始准备渲染、计算变换矩阵和计算光源描述子中的至少一个动作,以生成渲染上下文。
在一种实施方式中,所述命令调用子模块还用于:
控制顶点内容渲染对象和片源内容渲染对象将所述渲染上下文更新到CPU与GPU共享的缓冲区;
控制所述片源内容渲染对象从CPU向GPU上传纹理;
控制所述顶点内容渲染对象调用渲染应用程序编程接口的渲染命令。
在一种实施方式中,该装置还包括:
缓存模块,用于在GPU中预先缓存需要GPU编译的耗时资源,所述耗时资源包括画布对象的渲染管线、内置图形的关键数据和预设贴图中的至少一项,其中所述内置图形的关键数据包括所述内置图形的顶点数据和索引数据中的至少一项。
第三方面,本发明实施例提供了一种渲染装置,所述装置的功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
在一种实施方式中,所述装置的结构中包括处理器和存储器,所述存储器用于存储支持所述装置执行上述渲染方法的程序,所述处理器被配置为用于执行所述存储器中存储的程序。所述装置还可以包括通信接口,用于与其他设备或通信网络通信。
第四方面,本发明实施例提供了一种渲染引擎,包括:
系统屏幕刷新通知类,用于发出渲染驱动事件;
核心控制器,用于在收到所述系统屏幕刷新通知类的渲染驱动事件后抛出所述渲染驱动通知;
画布对象,包括本发明实施例的任意一种渲染装置。
第五方面,本发明实施例提供了一种计算机可读存储介质,用于存储渲染装置所用的计算机软件指令,其包括用于执行上述渲染方法所涉及的程序。
上述技术方案中的一个技术方案具有如下优点或有益效果:通过渲染驱动通知来驱动各画布对象的渲染过程,控制监听到渲染驱动通知的各画布对象依次触发渲染事件,能够实现多实例渲染,提高了渲染的速度和效率。
上述技术方案中的另一个技术方案具有如下优点或有益效果:充分缓存GPU资源,可以进一步提高了渲染的速度和效率。
上述概述仅仅是为了说明书的目的,并不意图以任何方式进行限制。除上述描述的示意性的方面、实施方式和特征之外,通过参考附图和以下的详细描述,本发明进一步的方面、实施方式和特征将会是容易明白的。
附图说明
在附图中,除非另外规定,否则贯穿多个附图相同的附图标记表示相同或相似的部件或元素。这些附图不一定是按照比例绘制的。应该理解,这些附图仅描绘了根据本发明公开的一些实施方式,而不应将其视为是对本发明范围的限制。
图1示出根据本发明实施例的渲染方法的流程图。
图2示出根据本发明实施例的渲染方法的流程图。
图3示出根据本发明实施例的渲染装置的结构框图。
图4示出根据本发明实施例的渲染装置的结构框图。
图5示出根据本发明实施例的渲染引擎的结构框图。
图6示出根据本发明实施例的渲染引擎中一个渲染周期的示例图。
图7示出根据本发明实施例的渲染引擎中画布对象的内部结构示意图。
图8示出根据本发明实施例的渲染引擎的渲染流程的示意图。
图9示出根据本发明实施例的渲染装置的结构框图。
具体实施方式
在下文中,仅简单地描述了某些示例性实施例。正如本领域技术人员可认识到的那样,在不脱离本发明的精神或范围的情况下,可通过各种不同方式修改所描述的实施例。因此,附图和描述被认为本质上是示例性的而非限制性的。
图1示出根据本发明实施例的渲染方法的流程图。如图1所示,该方法可以包括:
步骤S11、控制各画布对象监听渲染驱动通知;
步骤S12、控制监听到所述渲染驱动通知的各画布对象依次触发渲染事件;
步骤S13、获取已触发渲染事件的画布对象自身的各待渲染效果;
步骤S14、按照各所述待渲染效果对所述已触发渲染事件的画布对象内的待渲染图形进行渲染。
在一种实施方式中,如图2所示,步骤S11包括:
步骤S21、控制多个画布对象同时监听核心控制器抛出的渲染驱动通知,其中,所述核心控制器在接收到系统屏幕刷新通知类的渲染驱动事件后抛出所述渲染驱动通知。
在一种实施方式中,如图2所示,步骤S12包括:
步骤S22、控制监听到渲染驱动通知的多个画布对象,按照各画布对象的创建顺序依次触发渲染事件。其中,触发渲染事件的顺序包括:在当前画布对象触发渲染事件并完成渲染后,下一画布对象触发渲染事件。
在一种示例中,渲染引擎可以包括系统屏幕刷新通知类、核心控制器和多个画布对象。其中,系统屏幕刷新通知类可以每一帧发出一个渲染驱动事件,以使得画布对象与屏幕保持相同刷新时间。核心控制器接收到渲染驱动事件后,可以抛出渲染驱动通知。在渲染引擎中可以按照一定的顺序创建多个画布对象。每个画布对象都可以监听核心控制器的渲染驱动通知。监听到渲染驱动通知后,各画布对象可以按照各自的创建顺序触发渲染事件。例如,如果创建顺序为画布对象A、画布对象B、画布对象C,则画布对象A先触发渲染事件。待画布对象A执行完这一帧渲染过程后,画布对象B触发渲染事件。待画布对象B执行完这一帧渲染过程后,画布对象C触发渲染事件。待画布对象C执行完这一帧渲染过程后,这一帧完成渲染过程。然后,各画布对象可以继续监听渲染驱动通知,开始下一帧的渲染过程。
在一种实施方式中,如图2所示,步骤S13包括:
步骤S23、遍历所述已触发渲染事件的画布对象自身的效果列表,获取至少一个待渲染效果。
本实施例中,每个画布对象需要渲染的各种效果(也可以称为特效)可以预先保存到自身的效果列表中。例如,画布对象A需要渲染光照、飞入、飞出等效果,则可以将这些效果保存到画布对象A的效果列表中。再如,画布对象B需要渲染滚动、切换、火焰等效果,则可以将这些效果保存到画布对象B的效果列表中。
如果画布对象的效果列表中包括多个效果,可以设定各效果的渲染顺序。例如,画布对象A的各效果的渲染顺序为:飞入、光照、飞出。画布对象B的各效果的渲染顺序为:火焰、滚动、切换。
遍历某个画布对象的效果列表后,可以获得该画布对象需要渲染的各效果及其渲染顺序。然后,在每一帧的渲染过程中,对该画布对象中的待渲染图形,按照该渲染顺序依次施加对应的效果。例如,对于画布对象A中的图像依次施加飞入、光照、飞出。
在一种实施方式中,如图2所示,步骤S14包括:
步骤S24、触发所述待渲染效果的计算事件,以计算所述待渲染效果的效果参数。
步骤S25、利用所述待渲染效果的效果参数判断所述待渲染效果是否需要重绘。
步骤S26、如果所述待渲染效果需要重绘,则触发准备渲染事件,以处理图形处理器(GPU,Graphic Processing Unit)资源。
步骤S27、在处理GPU资源之后,触发图形渲染事件,以生成渲染上下文。
步骤S28、将所述渲染上下文传递给所述待渲染效果的渲染对象,以调用渲染应用程序编程接口的渲染命令,所述渲染命令用于对所述待渲染图形进行渲染。
一般来说,每一种效果根据自身的特点具有相应的效果参数。触发计算事件可以计算出效果对应的效果参数。例如,对于火焰效果,可以计算出火焰的数量,每个时刻每个火焰的大小、高度、颜色、亮度等参数。再如,对于一些静态的效果,每一帧没有变化,计算出的效果参数可能是空的。
有些静态的效果是无需重绘的,动态的效果则大多需要重绘。计算出效果对应的效果参数后,根据效果参数可以判断该效果是否需要重绘。如果某个效果在多个时刻的效果参数是变化的,则该效果可能需要重绘。例如,火焰效果在不同时刻的火焰的大小、高度、颜色、亮度不同,则该火焰效果需要重绘。
对于需要重绘的效果,可以触发准备渲染事件,以处理GPU资源。然后触发图形渲染事件,以生成渲染上下文。再将渲染上下文传递给渲染对象,由渲染对象调用渲染应用程序编程接口例如Metal的渲染命令,完成对画布对象内的待渲染图形对渲染。
在一种实施方式中,在步骤S26中,处理GPU资源,包括:生成GPU缓冲区和/或生成纹理资源。例如,可以在GPU中缓存画布对象的渲染管线等。对于某一些效果,例如阴影效果,可以预先生成阴影所需要的纹理资源。
在一种实施方式中,在步骤S27中,触发图形渲染事件,以生成渲染上下文,包括:控制所述待渲染效果执行开始准备渲染、计算变换矩阵和计算光源描述子中的至少一个动作,以生成渲染上下文。其中,不同的效果可能具有不同的渲染上下文。在一种示例中,渲染上下文可以包括渲染过程中的所有数据和状态信息。
在一种实施方式中,在步骤S28中,将所述渲染上下文传递给所述待渲染效果的渲染对象,以调用渲染应用程序编程接口的渲染命令,包括:
控制顶点内容渲染对象和片源内容渲染对象将所述渲染上下文更新到CPU与GPU共享的缓冲区;
控制所述片源内容渲染对象从CPU向GPU上传纹理;
控制所述顶点内容渲染对象调用渲染应用程序编程接口的渲染命令。
在一种实施方式中,可以预先缓存一些资源和数据,以加快渲染速度。该方法还包括:在GPU中预先缓存需要GPU编译的耗时资源,所述耗时资源包括画布对象的渲染管线、内置图形的关键数据和预设贴图中的至少一项,其中所述内置图形的关键数据包括所述内置图形的顶点数据和索引数据中的至少一项。其中,缓存的方式包括多种,示例如下:
示例一:在GPU中预先缓存画布对象的渲染管线。
如果在GPU中预先缓存了画布对象的渲染管线,则在步骤S26中,画布对象可以直接从GPU中读取之前缓存的该画布对象的渲染管线,GPU不用再重新编译渲染管线,因此,可以加速渲染过程。
示例二:在GPU缓冲区中预先缓存内置图形的顶点数据和索引数据等关键数据。
首次访问内置图形例如:长方体、锥形等,可以获得这些内置图形的顶点数据和索引数据等关键数据。可以将这些关键数据保存到GPU缓冲区中。这样,在下一次再使用渲染引擎加载这些内置图形时,可以调用GPU缓冲区中这些内置图形的关键数据,快速地生成这些图形。
示例三:在GPU中预先缓存具有特定尺寸的贴图,例如一张1x1的纯黑贴图,在没有贴图时可以使用该纯黑贴图。当然,也可以缓存其他尺寸和颜色的贴图,具体可根据实际需求设定。
图3示出根据本发明实施例的渲染装置的结构框图。如图3所示,该渲染装置可以包括:
监听模块31,用于控制各画布对象监听渲染驱动通知;
触发模块32,用于控制监听到所述渲染驱动通知的各画布对象依次触发渲染事件;
获取模块33,用于获取已触发渲染事件的画布对象自身的各待渲染效果;
渲染模块34,用于按照各所述待渲染效果对所述已触发渲染事件的画布对象内的待渲染图形进行渲染。
在一种实施方式中,所述监听模块31还用于控制多个画布对象同时监听核心控制器抛出的渲染驱动通知,其中,所述核心控制器在接收到系统屏幕刷新通知类的渲染驱动事件后抛出所述渲染驱动通知;
所述触发模块32还用于控制监听到渲染驱动通知的多个画布对象,按照各画布对象的创建顺序依次触发渲染事件,其中,触发渲染事件的顺序包括:在当前画布对象触发渲染事件并完成渲染后,下一画布对象触发渲染事件。
在一种实施方式中,所述获取模块33还用于遍历所述已触发渲染事件的画布对象自身的效果列表,获取至少一个待渲染效果。
在一种实施方式中,如图4所示,所述渲染模块34包括:
计算子模块41,用于触发所述待渲染效果的计算事件,以计算所述待渲染效果的效果参数;
重绘判断子模块42,用于利用所述待渲染效果的效果参数判断所述待渲染效果是否需要重绘;
准备渲染子模块43,用于如果所述待渲染效果需要重绘,则触发准备渲染事件,以处理GPU资源;
图形渲染子模块44,用于在处理GPU资源之后,触发图形渲染事件,以生成渲染上下文;
命令调用子模块,用于将所述渲染上下文传递给所述待渲染效果的渲染对象,以调用渲染应用程序编程接口的渲染命令,所述渲染命令用于对所述待渲染图形进行渲染。
在一种实施方式中,所述准备渲染子模块还用于生成GPU缓冲区和/或生成纹理资源。
在一种实施方式中,所述图形渲染子模块还用于控制所述待渲染效果执行开始准备渲染、计算变换矩阵和计算光源描述子中的至少一个动作,以生成渲染上下文。
在一种实施方式中,所述命令调用子模块还用于:
控制顶点内容渲染对象和片源内容渲染对象将所述渲染上下文更新到CPU与GPU共享的缓冲区;
控制所述片源内容渲染对象从CPU向GPU上传纹理;
控制所述顶点内容渲染对象调用渲染应用程序编程接口的渲染命令。
在一种实施方式中,该装置还包括:
缓存模块35,用于在GPU中预先缓存需要GPU编译的耗时资源,所述耗时资源包括画布对象的渲染管线、内置图形的关键数据和预设贴图中的至少一项,其中所述内置图形的关键数据包括所述内置图形的顶点数据和索引数据中的至少一项。
本发明实施例各装置中的各模块的功能可以参见上述方法中的对应描述,在此不再赘述。
图5示出根据本发明实施例的渲染引擎的结构框图。如图5所示,该渲染引擎可以包括:
系统屏幕刷新通知类51,用于发出渲染驱动事件;
核心控制器52,用于在收到所述系统屏幕刷新通知类的渲染驱动事件后抛出所述渲染驱动通知;
画布对象53,包括本发明实施例的任意一种渲染装置。
在一种应用示例中,基于渲染应用程序编程接口例如Metal,开发一套图形渲染引擎。该渲染引擎可以执行上述实施例中的任意一种实施方式的渲染方法。Metal是一种低层次的渲染应用程序编程接口,提供了软件所需的最低层,保证软件可以运行在不同的图形芯片上。该渲染引擎可以应用于iOS设备中,具有轻量、易接入、高性能、可多实例化等特点。此外,该渲染引擎具有在Feed流中提供多实例的三维、光照等图形学效果渲染能力。
在一种示例中,该图形渲染引擎实现方案主要包括:
1、采用单例核心控制器(例如,单例VGMetalCore)管理Metal的基础设施,并管理缓冲对象(例如,VGMetalCache对象)。采用系统屏幕刷新通知类(例如CADisplayLink)驱动渲染事件。例如,CADisplayLink每一帧发出一个渲染驱动事件,可以使得渲染引擎中的画布对象以与显示器的刷新屏幕显示界面相同的频率进行绘图。
2、采用核函数核心控制器(例如VGMetalKernelCore)和增强现实核心控制器(例如VGARCore)作为系统高性能着色器函数工具(例如MetalPerformanceShaders)和增强现实工具(例如ARKit)的入口。
3、由VGMetalCore控制各个名为VGMetalCanvas的画布对象依次触发渲染事件。
4、画布对象内部的结构可以参见图6。如图6所示,在一种示例中,在一个渲染周期内,三个画布对象(在图6中简称为画布)串联地触发渲染事件。其中,从系统屏幕刷新通知类发出渲染驱动事件到所有运行的画布对象渲染结束,可以看做为一个渲染周期。每个画布对象在一个渲染过程包括事件抛出、数值计算、准备渲染、图形渲染和交换缓冲区等多个阶段。其中,在事件抛出阶段,可以包括该画布对象监听到单例核心控制器抛出的渲染驱动通知,该通知中可以包括一些字符串,这些字符串用于表示系统屏幕刷新通知类发出了渲染驱动事件。在数值计算阶段,可以计算该画布对象的各效果的效果参数。在准备渲染阶段,可以处理GPU资源。在图形渲染阶段,可以调用渲染命令完成对画布对象内的待渲染图形的各效果的渲染。在交换缓冲区阶段,可以将画布对象当前使用的缓冲区与未使用的缓冲区交换,准备在屏幕中显示渲染效果。例如:将当前使用的缓冲区H1与未使用的缓冲区H2交换之后,可以在H2渲染下一帧。渲染完成后将H2与H1再交换,这样可以使得渲染效果更加连续。
参见图6的示例,三个画布对象分别具有自己的两个缓冲区,第一个画布对象的缓冲区为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交换,在屏幕中显示下一帧的渲染效果。通过不同的缓冲区的互换,实现在屏幕上连续地显示渲染效果。
在本示例中,第一个画布对象的渲染过程结束后,第二个对象的渲染过程开始。第二个画布对象的渲染过程结束后,第三个画布对象的渲染过程开始。在图6中仅画出了第一个画布对象的渲染过程所包括的各个阶段,第二个画布对象和第三个画布对象的渲染过程虽未示出,但与第一个画布对象的渲染过程类似。
在一种示例中,如图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可以是一个类簇,通过不同的子类实现不同的效果。当前应该被渲染的效果对象可以包括一个待渲染效果,也可以包括由多个待渲染效果组成的效果列表。画布对象支持将多个效果画在一起。当画布对象接收到通知后,会遍历效果对象,触发效果对象的“计算”事件。
步骤S83、效果对象接收到“计算”事件后,根据类簇不同的类,进行不同的数值计算。这些计算可以由中央处理器(CPU,Central Processing Unit)执行。不同效果对象计算出的效果参数可能不同,例如:有些效果对象的效果参数可以是旋转一定角度,有些效果对象的效果参数可以是移动一段距离,根据效果对象具体的特点而定。
步骤S84、计算完成以后,画布对象可以基于计算结果判定效果对象是否需要重绘。例如,如果计算出的效果参数没有变化,可能属于静态的效果,一些静态的效果是不需要重绘的。对于一些不需要重绘的效果,可以不用执行渲染命令,可以减少不必要的重绘,节约性能和电量消耗。
步骤S85、对于需要重绘的效果对象,画布对象可以进一步触发“准备渲染”事件。该事件可以用于处理GPU资源。例如生成GPU缓冲区,或是生成纹理资源。其中,生成纹理资源的一种示例包括:在准备渲染时,生成在场景渲染阴影时所需要的阴影深度贴图。
步骤S86、效果对象处理完“准备渲染”事件后,画布对象触发“图形渲染”事件。效果对象开始准备渲染,计算变换矩阵,计算光源描述子,最终会生成一个渲染上下文结构体,传递给该效果对象内部持有的若干个渲染对象进行渲染。其中,渲染对象可以例如图7中的绘制对象(Draw)。渲染对象也可以是个类簇,不同的子类可以有不同的实现方式。
步骤S87、渲染对象接收到渲染上下文后,会访问内部持有的顶点内容(VertexContent)和片源内容(FragmentContent)两个着色器相关的绘制对象、也即渲染对象。这两个对象会根据渲染上下文更新到和GPU共享的UniformBuffer缓冲区内,FragmentContent此时还会从CPU向GPU上传纹理,并由VertexContent调用Metal的渲染命令进行最终的图形渲染。
在该应用示例中,渲染引擎的渲染应用程序编程接口使用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编译的耗时资源进行缓存,使得渲染管线切换和加载能在极短的时间内完成。另一种情况下,渲染引擎内部提供了矩形、立方体等内置形状。由于这些内置形状的顶点和索引数据是不会改变的,因此可以在首次访问这些形状时进行缓存,使加载这些内置形状的顶点数据、索引数据等,也能在极短的时间里完成。
在一种实施方式中,渲染引擎的纹理除了支持多种图片格式,也支持视频。
例如,渲染引擎支持从RGB8888直接生成纹理。对于RGB888(WebP)的图片,引擎使用iOS内置的硬件加速库Accelerate的vImage接口以极高的性能进行硬件加速图片格式转换,生成纹理。
再如,渲染引擎支持从视频解码器(例如CVPixelBuffer)更新纹理。CVPixelBuffer视频解码器输出的视频帧结构可以直接使用接口更新贴图。渲染引擎使用核心视频(CoreVideo)的接口,以极高的性能直接在GPU生成Y贴图和UV贴图,生成纹理。
在一种实施方式中,渲染引擎还可以支持在macOS上运行。Mac OS是一套运行于苹果Macintosh系列电脑上的操作系统。对渲染引擎进行跨平台兼容性开发,在macOS上运行时统一打开Layer(图层)渲染,同样使用CAMetalLayer进行渲染。对特殊数据结构如NSImage等进行转换。对Metal的配置方面也进行相应调整,如在macOS上纹理的存储模式(StorageMode)并不支持共享的MTL存储模式(MTLStorageModeShared),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 (17)
1.一种渲染方法,其特征在于,包括:
控制各画布对象监听渲染驱动通知;
控制监听到所述渲染驱动通知的各画布对象依次触发渲染事件;
获取已触发渲染事件的画布对象自身的各待渲染效果;
按照各所述待渲染效果对所述已触发渲染事件的画布对象内的待渲染图形进行渲染;
控制各画布对象监听渲染驱动通知,包括:控制多个画布对象同时监听核心控制器抛出的渲染驱动通知,其中,所述核心控制器在接收到系统屏幕刷新通知类的渲染驱动事件后抛出所述渲染驱动通知;
控制监听到所述渲染驱动通知的各画布对象依次触发渲染事件,包括:控制监听到渲染驱动通知的多个画布对象,按照各画布对象的创建顺序依次触发渲染事件,其中,触发渲染事件的顺序包括:在当前画布对象触发渲染事件并完成渲染后,下一画布对象触发渲染事件,直至最后一个创建的监听到所述渲染驱动通知的画布对象完成渲染。
2.根据权利要求1所述的方法,其特征在于,获取已触发渲染事件的画布对象自身的各待渲染效果,包括:
遍历所述已触发渲染事件的画布对象自身的效果列表,获取至少一个待渲染效果。
3.根据权利要求1所述的方法,其特征在于,按照各所述待渲染效果对所述已触发渲染事件的画布对象内的待渲染图形进行渲染,包括:
触发所述待渲染效果的计算事件,以计算所述待渲染效果的效果参数;
利用所述待渲染效果的效果参数判断所述待渲染效果是否需要重绘;
如果所述待渲染效果需要重绘,则触发准备渲染事件,以处理GPU资源;
在处理GPU资源之后,触发图形渲染事件,以生成渲染上下文;
将所述渲染上下文传递给所述待渲染效果的渲染对象,以调用渲染应用程序编程接口的渲染命令,所述渲染命令用于对所述待渲染图形进行渲染。
4.根据权利要求3所述的方法,其特征在于,处理GPU资源,包括:
生成GPU缓冲区和/或生成纹理资源。
5.根据权利要求3所述的方法,其特征在于,触发图形渲染事件,以生成渲染上下文,包括:
控制所述待渲染效果执行开始准备渲染、计算变换矩阵和计算光源描述子中的至少一个动作,以生成渲染上下文。
6.根据权利要求3所述的方法,其特征在于,将所述渲染上下文传递给所述待渲染效果的渲染对象,以调用渲染应用程序编程接口的渲染命令,包括:
控制顶点内容渲染对象和片源内容渲染对象将所述渲染上下文更新到CPU与GPU共享的缓冲区;
控制所述片源内容渲染对象从CPU向GPU上传纹理;
控制所述顶点内容渲染对象调用渲染应用程序编程接口的渲染命令。
7.根据权利要求1至6中任一项所述的方法,其特征在于,还包括:
在GPU中预先缓存需要GPU编译的耗时资源,所述耗时资源包括画布对象的渲染管线、内置图形的关键数据和预设贴图中的至少一项,其中所述内置图形的关键数据包括所述内置图形的顶点数据和索引数据中的至少一项。
8.一种渲染装置,其特征在于,包括:
监听模块,用于控制各画布对象监听渲染驱动通知;
触发模块,用于控制监听到所述渲染驱动通知的各画布对象依次触发渲染事件;
获取模块,用于获取已触发渲染事件的画布对象自身的各待渲染效果;
渲染模块,用于按照各所述待渲染效果对所述已触发渲染事件的画布对象内的待渲染图形进行渲染;
所述监听模块还用于控制多个画布对象同时监听核心控制器抛出的渲染驱动通知,其中,所述核心控制器在接收到系统屏幕刷新通知类的渲染驱动事件后抛出所述渲染驱动通知;
所述触发模块还用于控制监听到渲染驱动通知的多个画布对象,按照各画布对象的创建顺序依次触发渲染事件,其中,触发渲染事件的顺序包括:在当前画布对象触发渲染事件并完成渲染后,下一画布对象触发渲染事件,直至最后一个创建的监听到所述渲染驱动通知的画布对象完成渲染。
9.根据权利要求8所述的装置,其特征在于,所述获取模块还用于遍历所述已触发渲染事件的画布对象自身的效果列表,获取至少一个待渲染效果。
10.根据权利要求8所述的装置,其特征在于,所述渲染模块包括:
计算子模块,用于触发所述待渲染效果的计算事件,以计算所述待渲染效果的效果参数;
重绘判断子模块,用于利用所述待渲染效果的效果参数判断所述待渲染效果是否需要重绘;
准备渲染子模块,用于如果所述待渲染效果需要重绘,则触发准备渲染事件,以处理GPU资源;
图形渲染子模块,用于在处理GPU资源之后,触发图形渲染事件,以生成渲染上下文;
命令调用子模块,用于将所述渲染上下文传递给所述待渲染效果的渲染对象,以调用渲染应用程序编程接口的渲染命令,所述渲染命令用于对所述待渲染图形进行渲染。
11.根据权利要求10所述的装置,其特征在于,所述准备渲染子模块还用于生成GPU缓冲区和/或生成纹理资源。
12.根据权利要求10所述的装置,其特征在于,所述图形渲染子模块还用于控制所述待渲染效果执行开始准备渲染、计算变换矩阵和计算光源描述子中的至少一个动作,以生成渲染上下文。
13.根据权利要求10所述的装置,其特征在于,所述命令调用子模块还用于:
控制顶点内容渲染对象和片源内容渲染对象将所述渲染上下文更新到CPU与GPU共享的缓冲区;
控制所述片源内容渲染对象从CPU向GPU上传纹理;
控制所述顶点内容渲染对象调用渲染应用程序编程接口的渲染命令。
14.根据权利要求8至13中任一项所述的装置,其特征在于,还包括:
缓存模块,用于在GPU中预先缓存需要GPU编译的耗时资源,所述耗时资源包括画布对象的渲染管线、内置图形的关键数据和预设贴图中的至少一项,其中所述内置图形的关键数据包括所述内置图形的顶点数据和索引数据中的至少一项。
15.一种渲染装置,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1至7中任一项所述的方法。
16.一种渲染引擎,其特征在于,包括:
系统屏幕刷新通知类,用于发出渲染驱动事件;
核心控制器,用于在收到所述系统屏幕刷新通知类的渲染驱动事件后抛出所述渲染驱动通知;
画布对象,包括权利要求8至15中任一项的渲染装置。
17.一种计算机可读存储介质,其存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910004988.1A CN111402349B (zh) | 2019-01-03 | 2019-01-03 | 渲染方法、渲染装置和渲染引擎 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910004988.1A CN111402349B (zh) | 2019-01-03 | 2019-01-03 | 渲染方法、渲染装置和渲染引擎 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111402349A CN111402349A (zh) | 2020-07-10 |
CN111402349B true CN111402349B (zh) | 2023-09-08 |
Family
ID=71433978
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910004988.1A Active CN111402349B (zh) | 2019-01-03 | 2019-01-03 | 渲染方法、渲染装置和渲染引擎 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111402349B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112749033B (zh) * | 2021-01-22 | 2023-02-17 | 海信视像科技股份有限公司 | 一种显示设备及系统通知调用方法 |
CN115209117B (zh) * | 2022-07-20 | 2024-06-18 | 北京字跳网络技术有限公司 | 一种投屏方法及装置 |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103593168A (zh) * | 2012-08-13 | 2014-02-19 | 株式会社突飞软件 | 利用多重处理的渲染处理装置及方法 |
CN103942823A (zh) * | 2014-02-27 | 2014-07-23 | 优视科技有限公司 | 一种游戏引擎渲染方法及装置 |
CN104978413A (zh) * | 2015-06-24 | 2015-10-14 | 北京超图软件股份有限公司 | Gis线数据在浏览器端可视化的装置和方法 |
CN105393282A (zh) * | 2013-05-15 | 2016-03-09 | 谷歌公司 | 图形元素的有效合成和渲染 |
CN105741227A (zh) * | 2016-01-26 | 2016-07-06 | 网易(杭州)网络有限公司 | 渲染方法和装置 |
CN106527713A (zh) * | 2016-11-07 | 2017-03-22 | 金陵科技学院 | Vr的三维数据渲染系统及其方法 |
CN107203960A (zh) * | 2016-06-30 | 2017-09-26 | 北京新媒传信科技有限公司 | 图像渲染方法及装置 |
CN107463370A (zh) * | 2017-06-30 | 2017-12-12 | 百度在线网络技术(北京)有限公司 | 跨进程渲染方法及系统 |
CN107507262A (zh) * | 2017-08-31 | 2017-12-22 | 城市生活(北京)资讯有限公司 | 一种大场景的三维渲染方法及系统 |
CN107845074A (zh) * | 2017-10-24 | 2018-03-27 | 维沃移动通信有限公司 | 一种图像渲染方法和移动终端 |
CN108242073A (zh) * | 2016-12-23 | 2018-07-03 | 深圳先进技术研究院 | 一种渲染方法及渲染装置 |
CN108305316A (zh) * | 2018-03-08 | 2018-07-20 | 网易(杭州)网络有限公司 | 基于ar场景的渲染方法、装置、介质和计算设备 |
CN108665520A (zh) * | 2018-04-24 | 2018-10-16 | 微梦创科网络科技(中国)有限公司 | 一种页面动画渲染的方法及装置 |
CN109064538A (zh) * | 2018-08-01 | 2018-12-21 | Oppo广东移动通信有限公司 | 视图渲染方法、装置、存储介质及智能终端 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103713891B (zh) * | 2012-10-09 | 2017-11-24 | 阿里巴巴集团控股有限公司 | 一种在移动设备上进行图形渲染的方法和装置 |
CN103336816B (zh) * | 2013-06-28 | 2017-02-08 | 广州市动景计算机科技有限公司 | 安卓系统上基于GPU实现的Canvas元素渲染方法及装置 |
-
2019
- 2019-01-03 CN CN201910004988.1A patent/CN111402349B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103593168A (zh) * | 2012-08-13 | 2014-02-19 | 株式会社突飞软件 | 利用多重处理的渲染处理装置及方法 |
CN105393282A (zh) * | 2013-05-15 | 2016-03-09 | 谷歌公司 | 图形元素的有效合成和渲染 |
CN103942823A (zh) * | 2014-02-27 | 2014-07-23 | 优视科技有限公司 | 一种游戏引擎渲染方法及装置 |
CN104978413A (zh) * | 2015-06-24 | 2015-10-14 | 北京超图软件股份有限公司 | Gis线数据在浏览器端可视化的装置和方法 |
CN105741227A (zh) * | 2016-01-26 | 2016-07-06 | 网易(杭州)网络有限公司 | 渲染方法和装置 |
CN107203960A (zh) * | 2016-06-30 | 2017-09-26 | 北京新媒传信科技有限公司 | 图像渲染方法及装置 |
CN106527713A (zh) * | 2016-11-07 | 2017-03-22 | 金陵科技学院 | Vr的三维数据渲染系统及其方法 |
CN108242073A (zh) * | 2016-12-23 | 2018-07-03 | 深圳先进技术研究院 | 一种渲染方法及渲染装置 |
CN107463370A (zh) * | 2017-06-30 | 2017-12-12 | 百度在线网络技术(北京)有限公司 | 跨进程渲染方法及系统 |
CN107507262A (zh) * | 2017-08-31 | 2017-12-22 | 城市生活(北京)资讯有限公司 | 一种大场景的三维渲染方法及系统 |
CN107845074A (zh) * | 2017-10-24 | 2018-03-27 | 维沃移动通信有限公司 | 一种图像渲染方法和移动终端 |
CN108305316A (zh) * | 2018-03-08 | 2018-07-20 | 网易(杭州)网络有限公司 | 基于ar场景的渲染方法、装置、介质和计算设备 |
CN108665520A (zh) * | 2018-04-24 | 2018-10-16 | 微梦创科网络科技(中国)有限公司 | 一种页面动画渲染的方法及装置 |
CN109064538A (zh) * | 2018-08-01 | 2018-12-21 | Oppo广东移动通信有限公司 | 视图渲染方法、装置、存储介质及智能终端 |
Non-Patent Citations (1)
Title |
---|
"基于互动机顶盒的嵌入式浏览器的设计和研究";吴杨;《中国优秀硕士学位论文全文数据库》;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111402349A (zh) | 2020-07-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11769294B2 (en) | Patched shading in graphics processing | |
CN111400024B (zh) | 渲染过程中的资源调用方法、装置和渲染引擎 | |
US9978115B2 (en) | Sprite graphics rendering system | |
KR101563098B1 (ko) | 커맨드 프로세서를 갖는 그래픽 프로세싱 유닛 | |
EP3108452B1 (en) | Shader pipeline with shared data channels | |
US9069567B1 (en) | High performance execution environment | |
US20080284798A1 (en) | Post-render graphics overlays | |
US11094036B2 (en) | Task execution on a graphics processor using indirect argument buffers | |
CN109885464B (zh) | 一种基于开放图形库的数据处理方法及系统 | |
CN111402349B (zh) | 渲染方法、渲染装置和渲染引擎 | |
CN115393505A (zh) | 渲染方法、引擎、电子设备及存储介质 | |
CN117036562A (zh) | 一种三维显示方法和相关装置 | |
CN111402348B (zh) | 光照效果的形成方法、装置和渲染引擎 | |
CN114924837A (zh) | 数据处理方法、电子设备和可读存储介质 | |
US20210209717A1 (en) | Out of order wave slot release for a terminated wave | |
CN111402375B (zh) | 百叶窗效果的形成方法、装置和渲染引擎 | |
US20240281919A1 (en) | Effect processing method and device |
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 |