第14回 HLSL入門
ここまでUnity上でのグラフィックスプラグラミングをShader Graphで行ってきました。
Shader Graphはグラフィカルにシェーダーの計算を組み立てる優れたソフトウエアですが、実はGPUプログラミングに必須のツールではありません。
GPUを用いたグラフィックスプログラミング、特にシェーダープログラミングでは、一般にHLSLと呼ばれるシェーダー言語が使用されます。
Shader Graphが代替していてくれた手続きの多くを自分で書くことになるためやや繁雑ですが、Shader Graphでは扱えなかったより細かな制御が可能になります。
ここでは簡単なHLSLから始めてシェーダープログラムを実際に書き、また書き上げた機能をShader Graphに組み込み拡張する方法に触れます。
この回のゴール
- HLSLの来歴と機能、目的について理解する
- HLSLで簡単なシェーダーを記述する
- Shader Graphの限界を理解し、その上でShader Graphと併用する方法に触れる
配布教材の準備
この教材ではUnity 6.6(6000.6.0f1)、URP・Shader Graph 17.6.0を使用します。配布プロジェクトも同じ環境で開いてください。
初めて使用する場合は、初回の環境準備を済ませてください。
第14回のUnity Packageをダウンロードし、UnityのAssets > Import Asset Packageから全ての項目をImportします。
詳しい取り込み手順と、既存プロジェクトで必要な設定は配布ファイルで確認できます。
動作サンプル
HLSLでの簡単な3D表示の例
左から単色、テクスチャ、テクスチャと簡易照明で描いたリンゴを並べたサンプルです。
Play Modeを開始すると、光方向を固定したまま3つのリンゴが回転します。Assets/UNSLOW/ShaderBasics/Lessons/SecondTerm/14_IntroductionToHLSL/Scenes/14_SimpleHLSL.unity
また、HLSLとShader Graphの動作の比較サンプルも用意しています。
これらはShader Graphで最低限のテクスチャーマップや簡易照明を実装したものと同等の動作をHLSLで記述しています。Assets/UNSLOW/ShaderBasics/Lessons/SecondTerm/14_IntroductionToHLSL/Scenes/14_ShaderGraphComparison.unity
第14回の目次
ライセンス
この回では、以下の外部アセットを使用しています。
| アセット | 作者 | 提供元 | ライセンス |
|---|---|---|---|
| Food Apple 01のモデル・テクスチャ | Oliver Harries | Poly Haven | CC0 1.0 Universal |
なお一部の情報をUnity教材用に調整しています。
提供元のライセンス説明も確認できます。
また、Packageを取り込んだ後のAssets/ThirdParty/PolyHaven/FoodApple01/に、ライセンス全文のLICENSE-CC0.txt、出典を記したREADME.md、加工記録のprovenance.jsonを同梱しています。