[发明专利]一种跨平台模块化的着色器语言通用集成方法在审
申请号: | 202111371752.5 | 申请日: | 2021-11-18 |
公开(公告)号: | CN114077433A | 公开(公告)日: | 2022-02-22 |
发明(设计)人: | 刘歆宁 | 申请(专利权)人: | 大连东软信息学院 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06T15/00;G06T15/50 |
代理公司: | 大连至诚专利代理事务所(特殊普通合伙) 21242 | 代理人: | 王丹;陈义华 |
地址: | 116000 辽*** | 国省代码: | 辽宁;21 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 平台 模块化 着色 语言 通用 集成 方法 | ||
本发明公开了一种跨平台模块化的着色器语言通用集成方法,包括,定义宏定义解析文件的格式与语法,创建宏定义解析文件;创建语法解析器Shader‑X,使用Shader‑X解析器预编译着色器文件;解析宏定义解析文件,生成宏定义结果集合,根据宏定义结果集合生成宏定义结果有序列表;分别计算宏定义结果有序列表的哈希值,分别根据宏定义结果生成宏定义结果所对应平台的着色器文件,通过Shader‑X解析器将着色器文件预编译为二进制文件,并通过宏定义结果的哈希值以及平台对二进制文件进行标记;渲染程序根据宏定义结果有序列表的哈希值以及平台,定位二进制文件并执行。实现同一着色器代码可在不同平台使用,无需在线编译,支持模块化编程方案,提高着色器编程效率。
技术领域
本发明涉及图像渲染技术领域,尤其涉及一种跨平台模块化的着色器语言通用集成方法。
背景技术
图像渲染是将三维的光能传递处理转换为一个二维图像的过程。场景和实体用三维形式表示,更接近于现实世界,便于操纵和变换,而图形的显示设备大多是二维的光栅化显示器和点阵化打印机。从三维实体场景的表示N维光栅和点阵化的表示就是图像渲染——即光栅化。光栅显示器可以看作是一个像素矩阵,在光栅显示器上显示的任何一个图形,实际上都是一些具有一种或多种颜色和灰度象素的集合。
着色器语言Shader Language目前主要有3种语言:基于OpenGL的OpenGL ShadingLanguage,简称GLSL;基于DirectX的High Level Shading Language,简称HLSL;还有Metal语言,具体如下:
OpenGL(全写Open Graphics Library)是一个定义了跨编程语言、跨平台的编程接口规格的专业图形程序接口。它用于三维图像(二维亦可),是一个功能强大,调用方便的底层图形库。
DirectX(Direct eXtension,简称DX)是由微软公司创建的多媒体编程接口。由C++编程语言实现,遵循COM。被广泛适用于Microsoft Windows、Microsoft XBOX、MicrosoftXBOX 360和Microsoft XBOX ONE电子游戏开发,并且只能支持这些平台。
Metal提供对图形处理器(GPU)的接近直接访问,能最大程度地发挥iOS、macOS和Apple tvOS app中的图形和计算潜能。Metal构建于易用的低开销架构之上,而且提供预编译的GPU着色器和精细的资源控制,并支持多线程处理。目前,在图像渲染API中,不同平台分别对应了不同的着色器语言(Shader Language),这些着色语言不兼容,如:Windows平台使用DirectX,其他平台基本都是基于OpenGL,移动端平台出于性能考虑使用GLSL的一个子集——GLES,除此之外,Metal及Vulkan等API也应运而生。如此众多的图形API接口都提供了各自的着色器语言,在进行跨平台开发时,同一个功能需要针对多个平台编写多份着色器程序,使得编程效率低下。
为了解决跨平台的渲染问题,目前比较主流的的解决方案为编写GLSL程序,再利用glslang编译器将GLSL编译成一种“中间表示语言”SPIR-V,再利用SPIRV-Cross反编译为各个平台的可使用的Shader,如GLSL/HLSL/MSL等。此方案利用SPIR-V作为中间语言编写一份着色器程序,以实现跨平台。
现有技术存在以下缺陷:第一,将GLSL编译成SPIR-V有使用限制,即在实际的使用过程中,着色器需要根据宏定义设置参数,那么着色器程序只能根据传入的宏定义在线编译生成SPIR-V,然后再反编译为各个平台对应的Shader,这就需要有在线编译和反编译两个步骤,这使得整个渲染过程非常耗时,在渲染引擎中经常是无法直接使用的。第二,着色器不支持如C/C++这种高级语言的模块引入语法,这就导致在编写着色器时,底层共通的代码段不得不分布在各个着色器中,导致程序规模扩大时,难以维护。无法做到模块通用性。
发明内容
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于大连东软信息学院,未经大连东软信息学院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111371752.5/2.html,转载请声明来源钻瓜专利网。