« SIGGRAPH ASIA 2018 Technical Paperトレイラー | トップページ | 11/13と11/14のShader.jp記事の更新 »

2018.11.12

HLSL ベースの新しいシェーダ言語Slang

NVIDIAのFalcorのリポジトリを見ていたらシェーダはHLSL以外にSlangというのが使えるという話が書かれていました。

Slang
https://github.com/shader-slang/slang

Slangの言語仕様や設計についてはSIGGRAPH 2018で発表されています。この言語はHLSLを拡張したシェーダ言語のようですね。逆にC++と近づけていく…と言うわけでは無いようです。

Slang: Language Mechanisms for Extensible Real-time Shading Systems
http://graphics.cs.cmu.edu/projects/slang/

Slangは、Direct3D12(DXBC/DXIL)とVulkan(SPIR-V)向けの言語(GLSLも出せなくはないそうですが完全ではないそうです)で拡張性や保守性を考慮した言語になっているようですね。

言語のサンプルを見ているとおおむねHLSLの文法に近いですが、ParameterBlockという仕組みでdescriptor table /setsの部分を扱いやすくしたり、ジェネリックやinterfaceという構文の拡張でプリプロセッサだらけになるのを防いだり...という部分が拡張されているようですね。

あと、registerやlayoutなども記述しないで済むというところも良いところですね。特にDirect3D / Vulkanのマルチなどのケースでは抽象化された方がいいですね。

https://github.com/shader-slang/slang/blob/master/examples/hello-world/shaders.slang

https://github.com/shader-slang/slang/blob/master/examples/model-viewer/shaders.slang

シェーダがDXILやSPIR-Vなど中間言語型に移っていくとフロントエンドはHLSLやGLSLのままでなくて良いわけですし、C++の方向に向かう以外にも既存のシェーダ言語のそのAPI独自の部分を隠す形というのがいいのかもしれませんね。

« SIGGRAPH ASIA 2018 Technical Paperトレイラー | トップページ | 11/13と11/14のShader.jp記事の更新 »

Programming」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« SIGGRAPH ASIA 2018 Technical Paperトレイラー | トップページ | 11/13と11/14のShader.jp記事の更新 »