A cross-compiler and compiling method based on HLSL for multi-platform and multi-objective languages are presented. The compiler includes a code processor, a lexical analyzer, a parser and a code generator, in which the code processor is used to pre-process HLSL code, and the lexical analyzer is used to pre-process HLSL code. The code is lexically analyzed to generate tokens; the parser is used to parse the generated tokens and construct an abstract grammar tree; the code generator is used to generate platform-independent intermediate code according to the abstract grammar tree; and the intermediate code is used to generate the target language code. The cross compiler and compiling method of the multi-platform multi-target language based on HLSL can realize cross compiling of multi-platform multi-target language.
【技术实现步骤摘要】
基于HLSL的多平台多目标语言的交叉编译器及编译方法
本专利技术涉及着色器语言
,特别是涉及一种基于HLSL的多平台多目标语言的交叉编译器及编译方法。
技术介绍
着色器语言是一种用于可编程GPU管线的开发语言,着色器语言编写的代码会被着色器编译器编译成为GPU可执行的指令。目前常见的着色器语言有用于Direct3D的HLSL、用于OpenGL的GLSL,以及用于Metal的MSL,这些着色器语言互相之间语法不兼容,并且具有各自平台独自的编译器。随着技术的发展,尤其是移动平台的兴起,大型的游戏引擎都需要支持多平台、多图形接口,为了节省开发和维护成本,多平台通用的着色器语言成为了一个常见需求。目前常见的技术解决方案有以下三种:1.使用宏定义封装不同着色器语言之间的差异,这套宏编写的代码最终在各平台展开为目标语言。此种方案的缺点是需要使用者对被封装的语言差异非常了解,才能编写出正确的代码。2.开发一种新语言,交叉编译至各种目标平台的语言,通常还支持基于节点的图形化编辑器。此种方案的缺点是工作量大,并且需要使用者学习一种新语言或者新编辑工具。3.开发者直接使用HLS ...
【技术保护点】
1.一种基于HLSL的多平台多目标语言的交叉编译器,其特征在于,包括:代码处理器、词法分析器、语法分析器和代码生成器,其中,所述代码处理器,用于对HLSL代码进行预处理;所述词法分析器,用于对预处理后的HLSL代码进行词法分析,生成记号;所述语法分析器,用于对生成的记号进行语法分析,构建出抽象语法树;所述代码生成器,用于根据抽象语法树生成与平台无关的中间代码;以及用于将中间代码生成目标语言代码。
【技术特征摘要】
1.一种基于HLSL的多平台多目标语言的交叉编译器,其特征在于,包括:代码处理器、词法分析器、语法分析器和代码生成器,其中,所述代码处理器,用于对HLSL代码进行预处理;所述词法分析器,用于对预处理后的HLSL代码进行词法分析,生成记号;所述语法分析器,用于对生成的记号进行语法分析,构建出抽象语法树;所述代码生成器,用于根据抽象语法树生成与平台无关的中间代码;以及用于将中间代码生成目标语言代码。2.根据权利要求1所述的基于HLSL的多平台多目标语言的交叉编译器,其特征在于,所述预处理的内容包括:对引用文件的展开,对预定义宏的展开,移除代码中的注释,以及移除掉使用宏控制的无用代码。3.根据权利要求1所述的基于HLSL的多平台多目标语言的交叉编译器,其特征在于,所述代码生成器还包括:代码优化器,其用于对中间代码进行优化。4.根据权利要求1所述的基于HLSL的多平台多目标语言的交叉编译器,其特征在于,所述目标语言代码含有反射信息,所述反射信息中包含着对着色器代码中使用GPU资源情况的描述。5.根据权利要求1所述的基于HLSL的多平台多目标语言的...
【专利技术属性】
技术研发人员:翟佳龙,
申请(专利权)人:苏州蜗牛数字科技股份有限公司,
类型:发明
国别省市:江苏,32
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。