# 第14回 HLSL入門

`Scenes/14_SimpleHLSL.unity`を開くと、単色・テクスチャ・簡易照明を左から順に比較できます。`Scenes/14_ShaderGraphComparison.unity`では、同じ式を使うHLSLとShader Graphを比較できます。

Play Modeでは、光方向を固定したまま全てのリンゴがY軸を中心に毎秒60度で回転します。模様がモデルと一緒に回る様子と、表面の向きによる明暗の変化を比較してください。MaterialのInspectorでパラメーターを変更できます。向きを止めて観察するときは、UnityのPauseを使います。

## ファイル

| 場所 | 内容 |
| --- | --- |
| `Shaders/AppleSolid.shader` | Tintの単色を出力 |
| `Shaders/AppleTexture.shader` | テクスチャ色とTintを乗算 |
| `Shaders/AppleLambert.shader` | UV・法線の受け渡しと簡易照明 |
| `Shaders/AppleLambertGraph.shadergraph` | 同等の計算を使うUnlit Graph |
| `Materials/` | 各シェーダーの比較用Material |
| `Scripts/AppleRotation.cs` | リンゴを同じ速さで回転 |

## 基準状態

Cameraの位置は`(0, 1, -10)`、回転は`(0, 0, 0)`、スケールは`(1, 1, 1)`、Orthographic Sizeは3です。3つのリンゴのX座標は−3・0・3、比較Sceneでは−2・2です。リンゴはY・Zを0、回転を`(0, -30, 0)`、スケールを`(2, 2, 2)`へそろえています。正面から同じ条件で色と明暗を比較するための設定です。

確認画像と動画は16:10の1728×1080pxです。背景色は`#141324`にそろえています。CameraのInspectorのBackgroundから確認できます。

TextureはFoodApple01_BaseColor、Tilingは`(1, 1)`、Offsetは`(0, 0)`、Tintは白です。Ambientは0.2にします。SceneのDirectional Lightの位置は`(0, 3, 0)`、回転は`(45, 40, 0)`です。GraphではTilingとOffsetを別のプロパティとして指定しています。

照明はSceneの主ライトの方向を`GetMainLight()`で取得するランバート式です。影、光沢、Normal Map、ライトベイクは使いません。URPのRendererはDepth Priming ModeがDisabledの環境を使用します。

リンゴのモデルとテクスチャは`Assets/ThirdParty/PolyHaven/FoodApple01/`にあります。出典、作者、CC0のライセンス全文、加工記録も同じ場所に保存しています。

## 設定の変更と復元

設定を試すときは、Sceneと変更するMaterial・Graphを自分の作業フォルダーへ複製してください。基準状態からやり直す場合は、配布ZIPを別のフォルダーへ展開します。

授業の手順は教材サイトの第14回で確認できます。
