CN117369820A - 渲染流程图的生成方法、装置及设备 - Google Patents
渲染流程图的生成方法、装置及设备 Download PDFInfo
- Publication number
- CN117369820A CN117369820A CN202311236205.5A CN202311236205A CN117369820A CN 117369820 A CN117369820 A CN 117369820A CN 202311236205 A CN202311236205 A CN 202311236205A CN 117369820 A CN117369820 A CN 117369820A
- Authority
- CN
- China
- Prior art keywords
- rendering
- nodes
- node
- resource
- flow chart
- 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
- 238000009877 rendering Methods 0.000 title claims abstract description 401
- 238000000034 method Methods 0.000 title claims abstract description 80
- 230000006870 function Effects 0.000 claims abstract description 50
- 230000008569 process Effects 0.000 claims abstract description 37
- 238000012545 processing Methods 0.000 claims description 21
- 238000010586 diagram Methods 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 11
- 230000008859 change Effects 0.000 claims description 7
- 238000011144 upstream manufacturing Methods 0.000 claims description 6
- 230000002045 lasting effect Effects 0.000 claims description 5
- 239000000872 buffer Substances 0.000 description 13
- 230000003068 static effect Effects 0.000 description 13
- 238000004891 communication Methods 0.000 description 7
- 238000010276 construction Methods 0.000 description 7
- 238000005286 illumination Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 6
- 238000011161 development Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000013468 resource allocation Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/34—Graphical or visual programming
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种渲染流程图的生成方法、装置及设备,涉及渲染技术领域,能够使得渲染系统在代码编译过程中更加灵活,提升渲染引擎的运行效率。其中方法包括:读取使用脚本文件构建的编译对象,所述编译对象为对接至不同渲染平台的资源结构体,所述资源结构体中记录有节点之间的依赖关系;将所述编译对象输出至渲染系统,以使得所述渲染系统读取所述编译对象中的资源结构体,根据所述资源结构体生成渲染链路上的操作指令;根据所述渲染链路上的操作指令调用各个节点的渲染函数,按照所述节点之间的依赖关系执行所述渲染函数,生成渲染流程图。
Description
技术领域
本申请涉及渲染技术领域,尤其是涉及到一种渲染流程图的生成方法、装置及设备。
背景技术
随着现代CPU和GPU以及游戏行业的高速发展,游戏引擎以及图像渲染的应用技术越来越复杂,一个精致的三维渲染场景往往需要多个渲染子系统,例如,地形、粒子、全局光照、贴花等,各个渲染子系统之间存在着直接或间接依赖的关系。如果涉及到不同的渲染风格,例如,基于物理渲染或者非真实渲染等,整个渲染系统的复杂度也会随之上升。
相关技术中,可通过渲染导图来创建渲染流程图,以降低渲染系统的复杂度,渲染导图是基于编译期间的静态代码去控制生成的,通过使用静态编译语言,开发人员可以利用其强大的编译能力和灵活性来创建复杂的渲染流程图,以满足特定的渲染需求。然而,使用静态代码生成的渲染导图需要开发人员具备较高的编程技能,并且需要投入更多的时间和精力去编写和维护代码,对于开发资源和技术要求都较高,使得渲染系统在代码编译过程中的灵活性较差,影响渲染引擎的运行效率。
发明内容
有鉴于此,本申请提供了一种渲染流程图的生成方法、装置及设备,主要目的在于解决现有技术中渲染系统在代码编译过程中的灵活性较差,影响渲染引擎的运行效率的问题。
根据本申请的第一个方面,提供了一种渲染流程图的生成方法,包括:
读取使用脚本文件构建的编译对象,所述编译对象为对接至不同渲染平台的资源结构体,所述资源结构体中记录有节点之间的依赖关系;
将所述编译对象输出至渲染系统,以使得所述渲染系统读取所述编译对象中的资源结构体,根据所述资源结构体生成渲染链路上的操作指令;
根据所述渲染链路上的操作指令调用各个节点的渲染函数,按照所述节点之间的依赖关系执行所述渲染函数,生成渲染流程图。
进一步地,在所述读取使用脚本文件构建的编译对象之前,所述方法还包括:
获取渲染流程图的节点配置信息,所述节点配置信息包括节点的资源配置信息、连接配置信息和参数配置信息;
根据所述节点配置信息构建编译对象。
进一步地,所述获取渲染流程图的节点配置信息,具体包括:
在脚本文件中定义渲染流程图的节点,所述节点为渲染过程中抽象表示的一个环节;
对所述渲染流程图中的每个节点进行资源配置、连接配置以及参数配置,得到节点配置信息。
进一步地,在所述获取渲染流程图的节点配置信息之后,所述方法还包括:
在脚本文件中定义渲染流程图中节点的渲染结构,所述渲染结构包括节点之间连接关系,所述连接关系包括输入关系和输出关系;
根据节点之间的输入关系和输出关系,确定节点之间的依赖关系。
进一步地,所述在脚本文件中定义渲染流程图中节点的渲染结构之后,所述方法还包括:
在脚本文件中创建渲染流程图对象,当接收到节点之间输入关系和输出关系的变更指令,使用所述渲染流程图对象处理所述节点之间的连接关系。
进一步地,所述根据所述节点配置信息构建编译对象,具体包括:
读取节点配置信息,得到节点资源数据,所述节点资源数据包括节点、资源以及渲染结构;
在宿主语言中创建对应的底层渲染数据结构体,将所述节点资源数据写入至所述底层渲染数据结构体,得到资源结构体;
由脚本文件中节点、资源以及渲染结构将资源结构体持久化至存储器中,构建编译对象,以使得所述编译对象在渲染运行时根据不同渲染平台读取相应的资源结构体。
进一步地,所述根据所述渲染链路上的操作指令调用各个节点的渲染函数,按照所述节点之间的依赖关系执行所述渲染函数,生成渲染流程图,具体包括:
根据所述渲染链路上的操作指令,确定各个节点的资源流向;
根据所述各个节点的资源流向,调用各个节点的渲染函数;
按照所述节点之间的依赖关系执行所述渲染函数,根据所述资源流向将上游节点的资源输出传递至下游节点,形成渲染流程图。
根据本申请的第二个方面,提供了一种渲染流程图的生成装置,包括:
读取单元,用于读取使用脚本文件构建的编译对象,所述编译对象为对接至不同渲染平台的资源结构体,所述资源结构体中记录有节点之间的依赖关系;
输出单元,用于将所述编译对象输出至渲染系统,以使得所述渲染系统读取所述编译对象中的资源结构体,根据所述资源结构体生成渲染链路上的操作指令;
生成单元,用于根据所述渲染链路上的操作指令调用各个节点的渲染函数,按照所述节点之间的依赖关系执行所述渲染函数,生成渲染流程图。
进一步地,所述装置还包括:
获取单元,用于在所述读取使用脚本文件构建的编译对象之前,获取渲染流程图的节点配置信息,所述节点配置信息包括节点的资源配置信息、连接配置信息和参数配置信息;
构建单元,用于根据所述节点配置信息构建编译对象。
进一步地,所述获取单元包括:
第一定义模块,用于用于在脚本文件中定义渲染流程图的节点,所述节点为渲染过程中抽象表示的一个环节;
配置模块,用于对所述渲染流程图中的每个节点进行资源配置、连接配置以及参数配置,得到节点配置信息。
进一步地,所述获取单元还包括:
第二定义模块,用于在所述获取渲染流程图的节点配置信息之后,在脚本文件中定义渲染流程图中节点的渲染结构,所述渲染结构包括节点之间连接关系,所述连接关系包括输入关系和输出关系;
确定模块,用于根据节点之间的输入关系和输出关系,确定节点之间的依赖关系。
进一步地,所述获取单元还包括:
处理模块,用于所述在脚本文件中定义渲染流程图中节点的渲染结构之后,在脚本文件中创建渲染流程图对象,当接收到节点之间输入关系和输出关系的变更指令,使用所述渲染流程图对象处理所述节点之间的连接关系。
进一步地,所述构建单元,具体用于读取节点配置信息,得到节点资源数据,所述节点资源数据包括节点、资源以及渲染结构;在宿主语言中创建对应的底层渲染数据结构体,将所述节点资源数据写入至所述底层渲染数据结构体,得到资源结构体;由脚本文件中节点、资源以及渲染结构将资源结构体持久化至存储器中,构建编译对象,以使得所述编译对象在渲染运行时根据不同渲染平台读取相应的资源结构体。
进一步地,所述生成单元,具体用于根据所述渲染链路上的操作指令,确定各个节点的资源流向;根据所述各个节点的资源流向,调用各个节点的渲染函数;按照所述节点之间的依赖关系执行所述渲染函数,根据所述资源流向将上游节点的资源输出传递至下游节点,形成渲染流程图。
根据本申请的第三个方面,提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述方法的步骤。
根据本申请的第四个方面,提供了一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的方法的步骤。
借由上述技术方案,本申请提供的一种渲染流程图的生成方法、装置及设备,与目前现有技术中通过渲染导图来创建渲染流程图的方式相比,本申请通过读取使用脚本文件构建的编译对象,该编译对象为对接至不同渲染平台的资源结构体,资源结构体中记录有节点之间的依赖关系,然后将编译对象输出至渲染系统,以使得渲染系统读取编译对象中的资源结构体,根据资源结构体生成渲染链路上的操作指令,最后根据渲染链路上的操作指令调用各个节点的渲染函数,按照节点之间的依赖关系执行所述渲染函数,生成渲染流程图。整个过程使用脚本文件构建编译对象,将渲染过程中各个环节的资源配置信息经由脚本对象的序列化进行存储,进而在下次运行时无需重复编译,通过脚本文件来改变渲染结构,使得渲染系统在代码编译过程中更加灵活,提升渲染引擎的运行效率。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是本申请一实施例中渲染流程图的生成方法的流程示意图;
图2是本申请另一实施例中渲染流程图的生成方法的流程示意图;
图3是图2中步骤201的一具体实施方式流程示意图;
图4为图2中步骤202的一具体实施方式流程示意图;
图5为图1中步骤103的一具体实施方式流程示意图;
图6是本申请一实施例中渲染流程图的生成装置的结构示意图;
图7是本发明实施例提供的一种计算机设备的装置结构示意图。
具体实施方式
现在将参照若干示例性实施例来论述本发明的内容。应当理解,论述了这些实施例仅是为了使得本领域普通技术人员能够更好地理解且因此实现本发明的内容,而不是暗示对本发明的范围的任何限制。
如本文中所使用的,术语“包括”及其变体要被解读为意味着“包括但不限于”的开放式术语。术语“基于”要被解读为“至少部分地基于”。术语“一个实施例”和“一种实施例”要被解读为“至少一个实施例”。术语“另一个实施例”要被解读为“至少一个其他实施例”。
相关技术中,可通过渲染导图来创建渲染流程图,以降低渲染系统的复杂度,渲染导图是基于编译期间的静态代码去控制生成的,通过使用静态编译语言,开发人员可以利用其强大的编译能力和灵活性来创建复杂的渲染流程图,以满足特定的渲染需求。然而,使用静态代码生成的渲染导图需要开发人员具备较高的编程技能,并且需要投入更多的时间和精力去编写和维护代码,对于开发资源和技术要求都较高,使得渲染系统在代码编译过程中的灵活性较差,影响渲染引擎的运行效率。
为了解决该问题,本实施例提供了一种渲染流程图的生成方法,如图1所示,该方法应用于渲染引擎对应的服务端,包括如下步骤:
101、读取使用脚本文件构建的编译对象。
在本实施例中,可将渲染流程中各个环节抽象为渲染流程图中的节点,使用脚本文件将渲染流程图中节点的配置信息构建成一个编译对象,该编译对象为对接至不同渲染平台的资源结构体,相当于实际系统运行的最小单位,并通过底层渲染接口去生成真正的渲染通道,分配GPU资源等,该资源结构体中记录有节点之间的依赖关系,例如,几何化处理环节之后是光照计算环节,光照计算环节之后是映射环节。
具体在读取使用脚本文件构建的编译对象过程中,可读取脚本文件中的节点定义、资源定义、连接关系和参数配置,并在宿主语言中创建相对应的底层渲染数据结构体,根据底层渲染数据结构体将脚本文件中对接至不同平台资源,得到编译对象,即实际渲染数据、渲染函数调用、渲染资源以及渲染认为等一系列资源结构体。
进一步地,为了便于渲染系统进行代码管理,这里可由脚本定义的节点、资源、渲染结构以及渲染任务等可将编译对象持久化至存储器上,以使得下一次运行时直接读取资源结构体中的节点配置信息,无需重新构建底层的渲染代码,使得渲染系统的构建和修改更加灵活。
对于本实施例的执行主体可以为渲染流程图的生成装置或设备,可以配置在渲染引擎对应的服务端,通过将描述渲染图形的描述和配置信息放入脚本文件,使用脚本文件构建的编译对象来对接不同渲染平台,这样渲染系统的构建和修改更加灵活,开发人员可在脚本文件中改变渲染图形的结构和参数配置,无需修改底层的渲染引擎或代码,提升渲染引擎的运行效率。
102、将所述编译对象输出至渲染系统,以使得所述渲染系统读取所述编译对象中的资源结构体,根据所述资源结构体生成渲染链路上的操作指令。
可以理解的是,由于渲染流程过于复杂,这里通过编译对象将渲染流程中各个环节的资源配置信息存储至资源结构体中,并在渲染系统中根据编译对象中记录的资源配置信息生成渲染连路上的操作指令。
具体在编译系统读取编译对象中的资源结构体之后,可将资源结构体中的各个节点的资源配置信息绑定至渲染管线的对应阶段,例如,将顶点缓冲区绑定到顶点着色器,将纹理绑定到像素着色器等,进一步根据需要设置渲染状态,例如,深度测试、剔除模式、混合模式等,并通过资源结构体将渲染状态传递给渲染管线,根据渲染光线对应渲染状态生成渲染链路上的操作指令。
103、根据所述渲染链路上的操作指令调用各个节点的渲染函数,按照所述节点之间的依赖关系执行所述渲染函数,生成渲染流程图。
在执行渲染链路上的操作指令过程中,可通过调用渲染引擎或框架提供的渲染函数,将资源结构体传递至渲染管线,并针对不同操作指令调用相应的渲染函数实现相应的渲染功能,生成渲染流程图,由于渲染流程图是序列化保存的,记录有实际渲染系统所需要所有渲染数据结构以及渲染指令,所以在下一次加载的时候可以直接进行复用,而无需进行编译。
具体针对创建顶点缓冲区的操作指令,可使用渲染接口提供的渲染函数,根据资源结构体中的顶点数据创建一个顶点缓冲区;具体针对创建索引缓冲区的操作指令,可使用渲染接口提供的渲染函数,根据资源结构体中的索引数据创建一个索引缓冲区;具体针对创建纹理的操作指令,可使用渲染接口提供的渲染函数,根据资源结构体中的纹理数据创建一个纹理对象;具体针对设置着色器的操作指令,可使用渲染接口提供的渲染函数,根据资源结构体中的着色器对象设置为当前使用的着色器;具体针对设置渲染状态的操作指令,可使用渲染接口提供的渲染函数,根据资源结构体中的渲染状态设置渲染管线的状态;具体针对绘制模型的操作指令,可使用渲染接口提供的渲染函数,根据资源结构体中的顶点缓冲区和索引缓冲区,以及其他渲染状态执行绘制操作。
应说明的是,实际渲染过程通常更为复杂,涉及到多个操作指令和状态设置,具体的实现方式和渲染函数的调用可根据使用的渲染接口而有所不同,在此不进行具体限制。
进一步地,为了便于渲染流程的展示,根据渲染引擎或框架的配置,将渲染流程图呈现到屏幕上或者其他输出设备上。应说明的是,不同资源结构体的使用方式可能因对接至不同渲染平台中的渲染引擎或框架而有所不同,在实际开发过程中,需要根据具体的渲染引擎或框架的文档和示例进行操作。
本申请实施例提供的渲染流程图的生成方法,与目前现有技术中通过渲染导图来创建渲染流程图的方式相比,本申请通过读取使用脚本文件构建的编译对象,该编译对象为对接至不同渲染平台的资源结构体,资源结构体中记录有节点之间的依赖关系,然后将编译对象输出至渲染系统,以使得渲染系统读取编译对象中的资源结构体,根据资源结构体生成渲染链路上的操作指令,最后根据渲染链路上的操作指令调用各个节点的渲染函数,按照节点之间的依赖关系执行所述渲染函数,生成渲染流程图。整个过程使用脚本文件构建编译对象,将渲染过程中各个环节的资源配置信息经由脚本对象的序列化进行存储,进而在下次运行时无需重复编译,通过脚本文件来改变渲染结构,使得渲染系统在代码编译过程中更加灵活,提升渲染引擎的运行效率。
在上述实施例中,编译对象可以是预先构建好的,也可以是,进一步地,如图2所示,步骤101之前,方法还包括如下步骤:
201、获取渲染流程图的节点配置信息。
202、根据所述节点配置信息构建编译对象。
渲染流程图是用于描述渲染过程中的各个阶段和操作的图形表示,各个阶段可使用节点表示。具体对渲染流程图中的节点进行配置通常需要根据渲染需求和引擎,节点配置信息包括节点的资源配置信息、连接配置信息和参数配置信息。
可以理解的是,上述节点配置信息是使用脚本编写得到的,在完成节点配置信息的脚本编写后,将脚本解析编译并构建编译对象,该编译对象由脚本语言进行生产、存储和维护,具体解析脚本过程将读取脚本中的节点定义、资源定义、连接关系和参数配置,并在宿主语言中创建相对应的底层渲染数据结构体,通过底层渲染结构体形成实际渲染数据以及渲染函数调用、渲染资源、渲染任务等一系列资源结构体,并将资源结构体对接至不同渲染平台,构建编译对象。
具体地,在上述实施例中,如图3所示,步骤201包括如下步骤:
301、在脚本文件中定义渲染流程图的节点。
302、对所述渲染流程图中的每个节点进行资源配置、连接配置以及参数配置,得到节点配置信息。
其中,渲染流程图的节点相当于渲染过程中抽象表示的一个环节,例如,几何处理、光照计算、特效处理等,主要包括以下几个节点,输入节点表示输入数据,如模型数据、纹理数据,顶点处理节点表示对输入的顶点数据进行处理,如变换、光照计算等,图元装配节点表示将顶点数据组装成图元,如三角形、线段等,光栅化节点表示将图元转换为像素,并计算像素的位置和属性,像素处理节点表示对每个像素进行处理,如纹理采样、颜色计算等,输出节点表示最终渲染结果的输出,如将像素数据写入帧缓冲区或显示器。
具体对每个节点进行资源配置主要是针对节点所需资源进行配置,相应得到的资源配置信息为节点所需的资源,例如,像素处理节点需要着色器,输出节点需要顶点缓冲区。具体对每个节点进行连接配置主要节是针对点之间输入输出结构进行配置,相应得到的连接配置信息为节点之间的连接关系,例如,输入节点连接顶点处理节点,顶点处理节点连接图元装配节点。具体对每个节点进行参数配置主要是针对节点进行参数配置,每个节点可能需要一些特定的参数和配置,用于控制其行为和效果,相应得到的参数配置信息为节点所需的参数,例如,多材质参数、光源光照参数等,这些参数将影响节点的渲染效果。
本实施例是建立在任意脚本语言上提出来的,由于脚本的特性,在运行时可更改脚本代码,则可进一步达到运行时进行重新编译,重新载入代码。
具体地,在上述实施例中,如图4所示,步骤202包括如下步骤:
401、读取节点配置信息,得到节点资源数据。
402、在宿主语言中创建对应的底层渲染数据结构体,将所述节点资源数据写入至所述底层渲染数据结构体,得到资源结构体。
403、由脚本文件中节点、资源以及渲染结构将资源结构体持久化至存储器中,构建编译对象,以使得所述编译对象在渲染运行时根据不同渲染平台读取相应的资源结构体。
其中,节点资源数据包括节点、资源以及渲染结构。可以理解的是,在渲染过程中,资源结构体是一种用于管理和存储渲染所需数据的数据结构。它通常包含了渲染所需的各种资源,如顶点缓冲区、纹理、着色器等。
进一步地,在获取渲染流程图的节点配置信息之后,在脚本文件中定义渲染流程图中节点的渲染结构,该渲染结构包括节点之间连接关系,连接关系包括输入关系和输出关系,然后根据节点之间的输入关系和输出关系,确定节点之间的依赖关系。
可以理解的是,定义渲染流程图中的节点是一个有输入和输出关系的结构,每个节点处理一个或者多个渲染子任务,节点的输入指节点在渲染过程中当前的任务所需要的输入图,相应的,节点的输出指节点在渲染过程中当前的任务的输出图,通过每个节点的输入输出,可确定节点之间的依赖关系,这里节点的输入可以是其他节点的输出,或者是从外部传入的资源,通过正确设置节点之间的连接关系,可准确构建完整的渲染流程。
本实施例兼顾静态编译和动态编程,具体是建立在宿主语言的静态编译和在其之上的脚本语言一起构建而成的。在宿主语言上,本身是基于静态编译的渲染系统,可以在最大程度上做到基于静态的运行时优化,在脚本语言上,又利用脚本语言运行时可重新编程,重新加载的特性,以达到动态编程的目的。
进一步地,考虑到渲染流程的灵活性,每个节点都可通过任意增加删除输入输出,并根据调整后的输入输出更新节点之间的依赖关系。具体地,可在脚本文件中定义渲染流程图中节点的渲染结构之后,在脚本文件中创建渲染流程图对象,该渲染流程图对象相当于承载节点配置信息的容器,通过渲染流程图对象可承载所有节点和资源,并管理节点之间的连接和依赖关系,同时处理渲染所需的资源生成与销毁,并做好资源池等工作。当接收到节点之间输入关系和输出关系的变更指令,使用渲染流程图对象处理节点之间的连接关系。
应说明的是,节点之间的连接关系由编译者确定,在后期的时候可通过编译去保证节点之间的关系被正确连接,不会出现输入与输出无法匹配、资源位定义、节点之间出现循环依赖的现象。
具体地,在上述实施例中,如图5所示,步骤103包括如下步骤:
501、根据所述渲染链路上的操作指令,确定各个节点的资源流向。
502、根据所述各个节点的资源流向,调用各个节点的渲染函数。
503、按照所述节点之间的依赖关系执行所述渲染函数,根据所述资源流向将上游节点的资源输出传递至下游节点,形成渲染流程图。
可以理解的是,渲染流程图中节点相当于渲染链路中的一个环节,渲染链路上的操作指令即为该环节需要执行的操作,具体在渲染阶段,需要执行的实际操作,通常包括绑定顶点缓冲区、纹理等资源,设置着色器程序、并调用绘制函数进行绘制。
具体在根据各个节点的资源流向,调用各个节点的渲染函数过程中,首先准备渲染所需的资源,如顶点缓冲区、纹理等,设置渲染所需的参数,如视图矩阵、投影矩阵、光照参数等,然后绑定顶点缓冲区、纹理等资源,进一步设置角色器程序,调用绘制函数进行绘制操作,具体的渲染过程和调用方式可能因不同渲染渲染引擎或框架而有所不同。在实际开发中,可以根据需求和使用的渲染引擎来调用相应的渲染函数。每个节点将读取输入资源、执行相应的计算或渲染操作,并生成输出资源,这些资源将被传递给下游的节点,形成渲染流程图,这里渲染流程图并不依赖于具体某一种渲染平台或者渲染接口,本身是基于渲染流程的抽象化设计,所以在宿主语言层可以接入各种渲染平台。
可以理解的是,渲染链路上的操作指令为按照编译对象中由实际的宿主语言生成的渲染指令、渲染控制逻辑、渲染任务以及渲染资源等,按序依次或者并行执行这些渲染指令,并将上游节点的资源输出传递至下游节点,形成渲染流程图。
本实施例中,在脚本中定义的节点和数据可经由脚本对象的序列化进行存储,使得下次运行时无需进行重复编译,相比于静态的编译语言,脚本语言具有语法简单的特性,学习和使用同样优于静态编译语言,进而直接在宿主语言中创造真正的渲染结构体,然后执行渲染结案,这样渲染系统的修改和构建更加灵活。
进一步的,作为图1-5方法的具体实现,本申请实施例提供了一种渲染流程图的生成装置,如图6所示,该装置包括:读取单元61、输出单元62、生成单元63。
读取单元61,用于读取使用脚本文件构建的编译对象,所述编译对象为对接至不同渲染平台的资源结构体,所述资源结构体中记录有节点之间的依赖关系;
输出单元62,用于将所述编译对象输出至渲染系统,以使得所述渲染系统读取所述编译对象中的资源结构体,根据所述资源结构体生成渲染链路上的操作指令;
生成单元63,用于根据所述渲染链路上的操作指令调用各个节点的渲染函数,按照所述节点之间的依赖关系执行所述渲染函数,生成渲染流程图。
本发明实施例提供的渲染流程图的生成装置,与目前现有技术中通过渲染导图来创建渲染流程图的方式相比,本申请通过读取使用脚本文件构建的编译对象,该编译对象为对接至不同渲染平台的资源结构体,资源结构体中记录有节点之间的依赖关系,然后将编译对象输出至渲染系统,以使得渲染系统读取编译对象中的资源结构体,根据资源结构体生成渲染链路上的操作指令,最后根据渲染链路上的操作指令调用各个节点的渲染函数,按照节点之间的依赖关系执行所述渲染函数,生成渲染流程图。整个过程使用脚本文件构建编译对象,将渲染过程中各个环节的资源配置信息经由脚本对象的序列化进行存储,进而在下次运行时无需重复编译,通过脚本文件来改变渲染结构,使得渲染系统在代码编译过程中更加灵活,提升渲染引擎的运行效率。
在具体的应用场景中,所述装置还包括:
获取单元,用于在所述读取使用脚本文件构建的编译对象之前,获取渲染流程图的节点配置信息,所述节点配置信息包括节点的资源配置信息、连接配置信息和参数配置信息;
构建单元,用于根据所述节点配置信息构建编译对象。
在具体的应用场景中,所述获取单元包括:
第一定义模块,用于用于在脚本文件中定义渲染流程图的节点,所述节点为渲染过程中抽象表示的一个环节;
配置模块,用于对所述渲染流程图中的每个节点进行资源配置、连接配置以及参数配置,得到节点配置信息。
在具体的应用场景中,所述获取单元还包括:
第二定义模块,用于在所述获取渲染流程图的节点配置信息之后,在脚本文件中定义渲染流程图中节点的渲染结构,所述渲染结构包括节点之间连接关系,所述连接关系包括输入关系和输出关系;
确定模块,用于根据节点之间的输入关系和输出关系,确定节点之间的依赖关系。
在具体的应用场景中,所述获取单元还包括:
处理模块,用于所述在脚本文件中定义渲染流程图中节点的渲染结构之后,在脚本文件中创建渲染流程图对象,当接收到节点之间输入关系和输出关系的变更指令,使用所述渲染流程图对象处理所述节点之间的连接关系。
在具体的应用场景中,所述构建单元,具体用于读取节点配置信息,得到节点资源数据,所述节点资源数据包括节点、资源以及渲染结构;在宿主语言中创建对应的底层渲染数据结构体,将所述节点资源数据写入至所述底层渲染数据结构体,得到资源结构体;由脚本文件中节点、资源以及渲染结构将资源结构体持久化至存储器中,构建编译对象,以使得所述编译对象在渲染运行时根据不同渲染平台读取相应的资源结构体。
在具体的应用场景中,所述生成单元63,具体用于根据所述渲染链路上的操作指令,确定各个节点的资源流向;根据所述各个节点的资源流向,调用各个节点的渲染函数;按照所述节点之间的依赖关系执行所述渲染函数,根据所述资源流向将上游节点的资源输出传递至下游节点,形成渲染流程图。
需要说明的是,本实施例提供的一种渲染流程图的生成装置所涉及各功能单元的其它相应描述,可以参考图1-图5中的对应描述,在此不再赘述。
基于上述如图1-图5所示方法,相应的,本申请实施例还提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述如图1-图5所示的渲染流程图的生成方法。
基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施场景所述的方法。
基于上述如图1-图5所示的方法,以及图6所示的虚拟装置实施例,为了实现上述目的,本申请实施例还提供了一种渲染流程图的生成的实体设备,具体可以为计算机,智能手机,平板电脑,智能手表,服务器,或者网络设备等,该实体设备包括存储介质和处理器;存储介质,用于存储计算机程序;处理器,用于执行计算机程序以实现上述如图1-图5所示的渲染流程图的生成方法。
可选的,该实体设备还可以包括用户接口、网络接口、摄像头、射频(RadioFrequency,RF)电路,传感器、音频电路、WI-FI模块等等。用户接口可以包括显示屏(Display)、输入单元比如键盘(Keyboard)等,可选用户接口还可以包括USB接口、读卡器接口等。网络接口可选的可以包括标准的有线接口、无线接口(如WI-FI接口)等。
在示例性实施例中,参见图7,上述实体设备包括通信总线、处理器、存储器和通信接口,还可以包括、输入输出接口和显示设备,其中,各个功能单元之间可以通过总线完成相互间的通信。该存储器存储有计算机程序,处理器,用于执行存储器上所存放的程序,执行上述实施例中的渲染流程图的生成方法。
本领域技术人员可以理解,本实施例提供的一种渲染流程图的生成的实体设备结构并不构成对该实体设备的限定,可以包括更多或更少的部件,或者组合某些部件,或者不同的部件布置。
存储介质中还可以包括操作系统、网络通信模块。操作系统是管理上述渲染流程图的生成的实体设备硬件和软件资源的程序,支持信息处理程序以及其它软件和/或程序的运行。网络通信模块用于实现存储介质内部各组件之间的通信,以及与信息处理实体设备中其它硬件和软件之间通信。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可以借助软件加必要的通用硬件平台的方式来实现,也可以通过硬件实现。通过应用本申请的技术方案,与目前现有方式相比,本申请使用脚本文件构建编译对象,可将渲染过程中各个环节的资源配置信息经由脚本对象的序列化进行存储,进而在下次运行时无需重复编译,通过脚本文件来改变渲染结构,使得渲染系统在代码编译过程中更加灵活,提升渲染引擎的运行效率。
本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本申请所必须的。本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本申请序号仅仅为了描述,不代表实施场景的优劣。以上公开的仅为本申请的几个具体实施场景,但是,本申请并非局限于此,任何本领域的技术人员能思之的变化都应落入本申请的保护范围。
Claims (10)
1.一种渲染流程图的生成方法,其特征在于,包括:
读取使用脚本文件构建的编译对象,所述编译对象为对接至不同渲染平台的资源结构体,所述资源结构体中记录有节点之间的依赖关系;
将所述编译对象输出至渲染系统,以使得所述渲染系统读取所述编译对象中的资源结构体,根据所述资源结构体生成渲染链路上的操作指令;
根据所述渲染链路上的操作指令调用各个节点的渲染函数,按照所述节点之间的依赖关系执行所述渲染函数,生成渲染流程图。
2.根据权利要求1所述的方法,其特征在于,在所述读取使用脚本文件构建的编译对象之前,所述方法还包括:
获取渲染流程图的节点配置信息,所述节点配置信息包括节点的资源配置信息、连接配置信息和参数配置信息;
根据所述节点配置信息构建编译对象。
3.根据权利要求2所述的方法,其特征在于,所述获取渲染流程图的节点配置信息,具体包括:
在脚本文件中定义渲染流程图的节点,所述节点为渲染过程中抽象表示的一个环节;
对所述渲染流程图中的每个节点进行资源配置、连接配置以及参数配置,得到节点配置信息。
4.根据权利要求2所述的方法,其特征在于,在所述获取渲染流程图的节点配置信息之后,所述方法还包括:
在脚本文件中定义渲染流程图中节点的渲染结构,所述渲染结构包括节点之间连接关系,所述连接关系包括输入关系和输出关系;
根据节点之间的输入关系和输出关系,确定节点之间的依赖关系。
5.根据权利要求4所述的方法,其特征在于,所述在脚本文件中定义渲染流程图中节点的渲染结构之后,所述方法还包括:
在脚本文件中创建渲染流程图对象,当接收到节点之间输入关系和输出关系的变更指令,使用所述渲染流程图对象处理所述节点之间的连接关系。
6.根据权利要求2所述的方法,其特征在于,所述根据所述节点配置信息构建编译对象,具体包括:
读取节点配置信息,得到节点资源数据,所述节点资源数据包括节点、资源以及渲染结构;
在宿主语言中创建对应的底层渲染数据结构体,将所述节点资源数据写入至所述底层渲染数据结构体,得到资源结构体;
由脚本文件中节点、资源以及渲染结构将资源结构体持久化至存储器中,构建编译对象,以使得所述编译对象在渲染运行时根据不同渲染平台读取相应的资源结构体。
7.根据权利要求1-6中任一项所述的方法,其特征在于,所述根据所述渲染链路上的操作指令调用各个节点的渲染函数,按照所述节点之间的依赖关系执行所述渲染函数,生成渲染流程图,具体包括:
根据所述渲染链路上的操作指令,确定各个节点的资源流向;
根据所述各个节点的资源流向,调用各个节点的渲染函数;
按照所述节点之间的依赖关系执行所述渲染函数,根据所述资源流向将上游节点的资源输出传递至下游节点,形成渲染流程图。
8.一种渲染流程图的生成装置,其特征在于,包括:
读取单元,用于读取使用脚本文件构建的编译对象,所述编译对象为对接至不同渲染平台的资源结构体,所述资源结构体中记录有节点之间的依赖关系;
输出单元,用于将所述编译对象输出至渲染系统,以使得所述渲染系统读取所述编译对象中的资源结构体,根据所述资源结构体生成渲染链路上的操作指令;
生成单元,用于根据所述渲染链路上的操作指令调用各个节点的渲染函数,按照所述节点之间的依赖关系执行所述渲染函数,生成渲染流程图。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述渲染流程图的生成方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述渲染流程图的生成方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311236205.5A CN117369820B (zh) | 2023-09-22 | 2023-09-22 | 渲染流程图的生成方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311236205.5A CN117369820B (zh) | 2023-09-22 | 2023-09-22 | 渲染流程图的生成方法、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117369820A true CN117369820A (zh) | 2024-01-09 |
CN117369820B CN117369820B (zh) | 2024-04-02 |
Family
ID=89399276
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311236205.5A Active CN117369820B (zh) | 2023-09-22 | 2023-09-22 | 渲染流程图的生成方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117369820B (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5987256A (en) * | 1997-09-03 | 1999-11-16 | Enreach Technology, Inc. | System and process for object rendering on thin client platforms |
US20050253739A1 (en) * | 2004-05-14 | 2005-11-17 | Oracle International Corporation | Cross platform transportable tablespaces |
CN102831497A (zh) * | 2012-07-26 | 2012-12-19 | 深圳市融创天下科技股份有限公司 | 一种创建工作流程的方法、系统和终端设备 |
US9268562B1 (en) * | 2015-01-21 | 2016-02-23 | PredictSpring, Inc. | Methods and apparatuses for dynamically generating mobile application layouts using client-independent configuration |
CN108415702A (zh) * | 2018-01-22 | 2018-08-17 | 北京奇艺世纪科技有限公司 | 一种移动终端应用界面动态渲染方法和装置 |
WO2019086764A1 (en) * | 2017-11-06 | 2019-05-09 | Basemark Oy | Graphics engine resource management and allocation system |
CN110113196A (zh) * | 2019-04-26 | 2019-08-09 | 中车青岛四方机车车辆股份有限公司 | 一种协议配置方法、装置、设备及介质 |
CN111260752A (zh) * | 2020-01-14 | 2020-06-09 | 北京明略软件系统有限公司 | 一种流程图绘制方法、装置及设备、存储介质 |
CN111508562A (zh) * | 2020-03-17 | 2020-08-07 | 北京荣之联科技股份有限公司 | 流程描述性语言的可视化显示方法、装置、设备和介质 |
CN114547514A (zh) * | 2021-12-31 | 2022-05-27 | 瑞庭网络技术(上海)有限公司 | 组件动态渲染方法、装置、设备及介质 |
CN115423901A (zh) * | 2022-08-18 | 2022-12-02 | 北京优锘科技有限公司 | 一种基于json片段绘制canvas的方法及装置 |
CN116414436A (zh) * | 2021-12-30 | 2023-07-11 | 魔门塔(苏州)科技有限公司 | 一种兼容的统一开发平台开发方法、装置、介质及设备 |
-
2023
- 2023-09-22 CN CN202311236205.5A patent/CN117369820B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5987256A (en) * | 1997-09-03 | 1999-11-16 | Enreach Technology, Inc. | System and process for object rendering on thin client platforms |
US20050253739A1 (en) * | 2004-05-14 | 2005-11-17 | Oracle International Corporation | Cross platform transportable tablespaces |
CN102831497A (zh) * | 2012-07-26 | 2012-12-19 | 深圳市融创天下科技股份有限公司 | 一种创建工作流程的方法、系统和终端设备 |
US9268562B1 (en) * | 2015-01-21 | 2016-02-23 | PredictSpring, Inc. | Methods and apparatuses for dynamically generating mobile application layouts using client-independent configuration |
WO2019086764A1 (en) * | 2017-11-06 | 2019-05-09 | Basemark Oy | Graphics engine resource management and allocation system |
CN108415702A (zh) * | 2018-01-22 | 2018-08-17 | 北京奇艺世纪科技有限公司 | 一种移动终端应用界面动态渲染方法和装置 |
CN110113196A (zh) * | 2019-04-26 | 2019-08-09 | 中车青岛四方机车车辆股份有限公司 | 一种协议配置方法、装置、设备及介质 |
CN111260752A (zh) * | 2020-01-14 | 2020-06-09 | 北京明略软件系统有限公司 | 一种流程图绘制方法、装置及设备、存储介质 |
CN111508562A (zh) * | 2020-03-17 | 2020-08-07 | 北京荣之联科技股份有限公司 | 流程描述性语言的可视化显示方法、装置、设备和介质 |
CN116414436A (zh) * | 2021-12-30 | 2023-07-11 | 魔门塔(苏州)科技有限公司 | 一种兼容的统一开发平台开发方法、装置、介质及设备 |
CN114547514A (zh) * | 2021-12-31 | 2022-05-27 | 瑞庭网络技术(上海)有限公司 | 组件动态渲染方法、装置、设备及介质 |
CN115423901A (zh) * | 2022-08-18 | 2022-12-02 | 北京优锘科技有限公司 | 一种基于json片段绘制canvas的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN117369820B (zh) | 2024-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP4198909A1 (en) | Image rendering method and apparatus, and computer device and storage medium | |
CN100507852C (zh) | 用于优化流处理程序的方法、装置和系统 | |
KR101732288B1 (ko) | 스프라이트 그래픽 렌더링 시스템 | |
EP3137985B1 (en) | Method and system to create a rendering pipeline | |
US8743126B2 (en) | Systems and methods for portable animation rigs | |
US20080266287A1 (en) | Decompression of vertex data using a geometry shader | |
US11615575B2 (en) | Methods and systems for constructing a shader | |
CN111158866A (zh) | 一种引擎系统及其渲染方法 | |
JP5281660B2 (ja) | 宣言型プレゼンテーション・フレームワークのためのシェーダーベースの拡張 | |
CN109564694A (zh) | 用于基于入库的图形处理的顶点着色器 | |
CN112529995A (zh) | 图像渲染计算方法、装置、存储介质以及终端 | |
Angel et al. | Teaching a shader-based introduction to computer graphics | |
US20130120381A1 (en) | Fast rendering of knockout groups using a depth buffer of a graphics processing unit | |
CN112037117A (zh) | 用于运行高性能gpu应用的方法、装置及计算机存储介质 | |
CN117501312A (zh) | 图形渲染的方法及装置 | |
CN110928610B (zh) | 验证着色器函数的方法、装置及计算机存储介质 | |
CN117369820B (zh) | 渲染流程图的生成方法、装置及设备 | |
US8203567B2 (en) | Graphics processing method and apparatus implementing window system | |
CN111383314A (zh) | 一种验证着色器函数的方法、装置及计算机存储介质 | |
CN112585573A (zh) | 编译控制方法、编译控制装置和存储介质 | |
CN110543620A (zh) | 一种基于OpenGL ES2.0绘制图元的方法及系统 | |
CN117392301B (zh) | 图形渲染方法、系统、装置、电子设备及计算机存储介质 | |
Peddie | The GPU Environment—Software Extensions and Custom Features | |
US20230205584A1 (en) | Control flow invariant resource identification | |
CN113687879B (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 |