2011-08-19 114 views
0

個體是否可以創建着色器編程語言?創建着色器語言

+0

爲什麼不呢?只需將你的語言編譯成GLSL或其他任何東西。 –

+0

那麼如何創建另一個GLSL,如果你知道我的意思 – Ishihara

+0

首先,你知道如何用通用語言編寫着色器嗎?因爲在從頭開始創建語言之前,您需要了解問題域以及如何實現基礎功能。 – Marcin

回答

1

作爲第一條評論,SK邏輯的答案就在那裏。您可以構建一個自定義着色語言編譯器,它採用自定義語言並將其「編譯」爲GLSL語言或HLSL或其他任何語言。

這是一個現實的問題,因爲現有的着色方法可以創建着色器的組合爆炸,可以使你的shader實現變得非常受限制的,相互依存的。自定義着色器語言可以使這些依賴關係自動化變得容易,例如,多層效果或細節層次控制。

可以使着色器的工作他們的方式,你「想」,他們的工作。如果需要,它還增加了一個完美的可移植性層,完全抽象底層着色語言。

生成的着色器會去這需要它的方式休息並編譯本地代碼的GPU驅動程序。

製作編譯器非常簡單。所有你需要的是一個(詞法分析器)解析器,從它構建一個抽象語法樹,然後在樹上做幾個遍以收集你需要知道的信息,做一些簡單的常量表達式優化,並生成着色器作爲輸出從語法樹中。我最近使用檸檬作爲解析器生成器。