[发明专利]基于HLSL的多平台多目标语言的交叉编译器及编译方法在审
申请号: | 201810547153.6 | 申请日: | 2018-05-31 |
公开(公告)号: | CN108874396A | 公开(公告)日: | 2018-11-23 |
发明(设计)人: | 翟佳龙 | 申请(专利权)人: | 苏州蜗牛数字科技股份有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 北京德崇智捷知识产权代理有限公司 11467 | 代理人: | 王金双 |
地址: | 215000 江苏省*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 多目标 多平台 交叉编译器 编译 预处理 抽象语法树 词法分析器 代码处理器 代码生成器 语法分析器 中间代码 语言 目标语言代码 词法分析 交叉编译 平台无关 语法分析 编译器 构建 | ||
一种基于HLSL的多平台多目标语言的交叉编译器及编译方法,所述编译器包括:代码处理器、词法分析器、语法分析器和代码生成器,其中,所述代码处理器,用于对HLSL代码进行预处理;所述词法分析器,用于对预处理后的HLSL代码进行词法分析,生成记号;所述语法分析器,用于对生成的记号进行语法分析,构建出抽象语法树;所述代码生成器,用于根据抽象语法树生成与平台无关的中间代码;以及用于将中间代码生成目标语言代码。本发明的基于HLSL的多平台多目标语言的交叉编译器及编译方法,可以实现多平台多目标语言的交叉编译。
技术领域
本发明涉及着色器语言技术领域,特别是涉及一种基于HLSL的多平台多目标语言的交叉编译器及编译方法。
背景技术
着色器语言是一种用于可编程GPU管线的开发语言,着色器语言编写的代码会被着色器编译器编译成为GPU可执行的指令。目前常见的着色器语言有用于Direct3D的HLSL、用于OpenGL的GLSL,以及用于Metal的MSL,这些着色器语言互相之间语法不兼容,并且具有各自平台独自的编译器。
随着技术的发展,尤其是移动平台的兴起,大型的游戏引擎都需要支持多平台、多图形接口,为了节省开发和维护成本,多平台通用的着色器语言成为了一个常见需求。
目前常见的技术解决方案有以下三种:
1.使用宏定义封装不同着色器语言之间的差异,这套宏编写的代码最终在各平台展开为目标语言。此种方案的缺点是需要使用者对被封装的语言差异非常了解,才能编写出正确的代码。
2.开发一种新语言,交叉编译至各种目标平台的语言,通常还支持基于节点的图形化编辑器。此种方案的缺点是工作量大,并且需要使用者学习一种新语言或者新编辑工具。
3.开发者直接使用HLSL编写代码,使用Direct3D的编译器把HLSL代码编译至DXBC字节码,再从DXBC字节码转换至其他语言。此种方案的缺点是D3DCompiler只在Windows平台可用,其他平台需要使用Wine调用D3DCompiler,非常不方便。
发明内容
为了解决现有技术存在的不足,本发明的目的在于提供一种基于HLSL的多平台多目标语言的交叉编译器及编译方法,可以实现多平台多目标语言的交叉编译。
为实现上述目的,本发明提供的基于HLSL的多平台多目标语言的交叉编译器,包括:代码处理器、词法分析器、语法分析器和代码生成器,其中,
所述代码处理器,用于对HLSL代码进行预处理;
所述词法分析器,用于对预处理后的HLSL代码进行词法分析,生成记号;
所述语法分析器,用于对生成的记号进行语法分析,构建出抽象语法树;
所述代码生成器,用于根据抽象语法树生成与平台无关的中间代码;以及用于将中间代码生成目标语言代码。
进一步地,所述预处理的内容包括:对引用文件的展开,对预定义宏的展开,移除代码中的注释,以及移除掉使用宏控制的无用代码。
进一步地,所述代码生成器还包括:代码优化器,其用于对中间代码进行优化。
进一步地,所述目标语言代码含有反射信息,所述反射信息中包含着对着色器代码中使用GPU资源情况的描述。
进一步地,所述目标语言代码与平台的图形接口相匹配。
为实现上述目的,本发明提供的基于HLSL的多平台多目标语言的交叉编译方法,包括以下步骤:
编写HLSL代码;
对HLSL代码进行预处理,词法分析,语法分析,生成与平台无关的中间代码,将中间代码转换成目标语言代码;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于苏州蜗牛数字科技股份有限公司,未经苏州蜗牛数字科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810547153.6/2.html,转载请声明来源钻瓜专利网。