本申请涉及计算机,尤其涉及一种着色器代码的生成方法、装置、设备及存储介质。
背景技术:
1、目前,shader编程语言的种类有很多,同个种类的shader的版本也很多,每种shader语言匹配的图形api各不相同,但有相似之处,且不同版本适应的设备也不同,因此针对某一图形api接口和硬件设备,就需要写一套shader的代码来实现显示需求,针对不同的设备和接口,则需要重复实现相同的底层逻辑,会耗费较多的时间。此外,编写的shader的代码无法像传统的编程语言那样在编写代码时,提供基础的类型检查来实现提前报错。
技术实现思路
1、鉴于以上内容,本申请提供一种着色器代码的生成方法、装置、设备及存储介质,其目的在于解决上述技术问题。
2、第一方面,本申请提供一种着色器代码的生成方法,所述方法包括:
3、获取预先构建的着色器对应的多个节点;
4、利用预先生成的构建器及所述多个节点,生成所述着色器对应的着色器图;
5、利用预先配置的代码生成器,生成所述着色器图对应的着色器的目标代码。
6、优选地,所述获取预先构建的着色器对应的多个节点,包括:
7、获取所述着色器对应的变量、函数及逻辑操作;
8、将所述变量、所述函数及所述逻辑操作为所述节点。
9、优选地,所述利用预先生成的构建器及所述多个节点,生成所述着色器对应的着色器图,包括:
10、将所述着色器的程序文本转换成抽象语法树;
11、将所述抽象语法树和所述多个节点输入所述构建器,生成所述着色器对应的着色器图。
12、优选地,所述构建器是基于rust语言生成的。
13、优选地,所述将所述抽象语法树和所述多个节点输入所述构建器,生成所述着色器对应的着色器图,包括:
14、确定所述多个节点之间的连接关系;
15、基于所述连接关系及所述抽象语法树,利用所述构建器生成所述着色器对应的着色器图。
16、优选地,所述利用预先配置的代码生成器,生成所述着色器图对应的着色器的目标代码,包括:
17、利用预先配置的glsl语言的代码生成器,生成所述着色器图对应的glsl语言的着色器的目标代码;及/或
18、利用预先配置的hlsl语言的代码生成器,生成所述着色器图对应的hlsl语言的着色器的目标代码。
19、第二方面,本申请提供一种着色器代码的生成装置,所述装置包括:
20、获取模块:用于获取预先构建的着色器对应的多个节点;
21、第一生成模块:利用预先生成的构建器及所述多个节点,生成所述着色器对应的着色器图;
22、第二生成模块:利用预先配置的代码生成器,生成所述着色器图对应的着色器的目标代码。
23、第三方面,本申请提供一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
24、存储器,用于存放计算机程序;
25、处理器,用于执行存储器上所存放的程序时,实现第一方面任一项实施例所述的着色器代码的生成方法。
26、优选地,所述获取预先构建的着色器对应的多个节点,包括:
27、获取所述着色器对应的变量、函数及逻辑操作;
28、将所述变量、所述函数及所述逻辑操作为所述节点。
29、第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面任一项实施例所述的着色器代码的生成方法。
30、本申请实施例提供的上述技术方案与现有技术相比具有如下优点:
31、本申请通过将shader语言中共享的概念抽象成中间表达形式,利用外部编程语言构建统一的着色器图,这个过程可以进行类型检查,提前排除各种低级的shader代码错误,实现提前报错。用不同的代码生成器,结合着色器图生成对应shader语言的实际shader代码,针对不同的设备和接口,不需要重复实现相同的底层逻辑。
1.一种着色器代码的生成方法,其特征在于,所述方法包括:
2.如权利要求1所述的着色器代码的生成方法,其特征在于,所述获取预先构建的着色器对应的多个节点,包括:
3.如权利要求1所述的着色器代码的生成方法,其特征在于,所述利用预先生成的构建器及所述多个节点,生成所述着色器对应的着色器图,包括:
4.如权利要求1或3所述的着色器代码的生成方法,其特征在于,所述构建器是基于rust语言生成的。
5.如权利要求4所述的着色器代码的生成方法,其特征在于,所述将所述抽象语法树和所述多个节点输入所述构建器,生成所述着色器对应的着色器图,包括:
6.如权利要求1所述的着色器代码的生成方法,其特征在于,所述利用预先配置的代码生成器,生成所述着色器图对应的着色器的目标代码,包括:
7.一种着色器代码的生成装置,其特征在于,所述装置包括:
8.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
9.如权利要求8所述的电子设备,其特征在于,所述获取预先构建的着色器对应的多个节点,包括:
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6中任一项所述的着色器代码的生成方法。