Skip to content

第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表示の例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 HarriesPoly HavenCC0 1.0 Universal

なお一部の情報をUnity教材用に調整しています。

提供元のライセンス説明も確認できます。
また、Packageを取り込んだ後のAssets/ThirdParty/PolyHaven/FoodApple01/に、ライセンス全文のLICENSE-CC0.txt、出典を記したREADME.md、加工記録のprovenance.jsonを同梱しています。