[發明專利]一種跨平臺模塊化的著色器語言通用集成方法在審
| 申請號: | 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.szxzyx.cn/pat/books/202111371752.5/2.html,轉載請聲明來源鉆瓜專利網。





