「水面をゆらゆら揺らしたい」「敵が被弾したら白く光らせたい」——やりたい表現は明確なのに、調べると出てくるのはHLSLの呪文のようなコード。シェーダーはやりたいことと学習コストのギャップが一番大きい分野かもしれません。
そのギャップを埋めるのが Shader Graph——Unity公式のノードベースビジュアルシェーダーエディタです。ノードを線でつなぐだけで、発光するマテリアルや波打つ水面、ホログラムのようなエフェクトまで、コードを1行も書かずに作れます。
この記事でわかること
- Shader Graphの構成要素(Master Stack・Blackboard・プロパティ)
- 作成から適用までの基本操作と、テクスチャ・スクロールの実例
- スクリプトからの変更とMaterialPropertyBlockの使いどころ
- Sub Graph・Keyword・Custom Functionによる発展
- 実践:被弾で白く点滅するシェーダーを組む
目次
Sponsored
従来のシェーダーとの違い
従来のシェーダーの課題
- プログラミングの知識が必須
- デバッグが難しい
- 試行錯誤に時間がかかる
- 非エンジニアには敷居が高い
Shader Graphの利点
- プログラミング不要 - ノードを接続するだけ
- ビジュアルで分かりやすい - 処理の流れが視覚的に理解できる
- リアルタイムプレビュー - 変更結果を即座に確認
- 再利用性が高い - Sub Graphで共通パーツを作成
- URPとHDRPに対応 - Built-in RPはバージョンにより対応状況が異なる
Built-in RP対応状況:
| Unityバージョン | Built-in RP対応状況 |
|---|---|
| 2021.1以前 | 非対応 |
| 2021.2以降(Shader Graph 12〜) | Built-Inターゲット で Lit / Unlit とも対応 |
Built-Inターゲットでは、URP/HDRP向けに先行して追加される一部ノード・設定が使えない制限があります。挙動が違うと感じたら、公式ドキュメントで対象ターゲットの対応状況を確認してください(本記事の検証はUnity 6 / 6000.0時点)。
Shader Graphの構成要素
| 要素 | 説明 |
|---|---|
| Shader Graphアセット | シェーダーの設定を保存するファイル |
| Blackboard | プロパティとキーワードのリスト |
| Master Stack | シェーダーへの最終的な出力 |
| ノード | シェーダーの処理単位 |
| プロパティ | シェーダーの外部パラメータ |
| Sub Graph | 再利用可能なパーツ |
Shader Graphアセットの種類
| 種類 | 用途 |
|---|---|
| Unlit Shader Graph | ライトの影響を受けない(UI、エフェクト向け) |
| Lit Shader Graph | ライトの影響を受ける(PBRマテリアル向け) |
Master Stackの構造
Master Stackは2つのステージで構成されています:

| ステージ | 処理内容 | 主な用途 |
|---|---|---|
| Vertex | 頂点シェーダー処理 | 頂点アニメーション、位置変形 |
| Fragment | フラグメントシェーダー処理 | 色、テクスチャ、ライティング |
Position端子: Vertexステージの Position 端子に接続することで、頂点の位置を変形できます(波打つ水面、風になびく草など)。
Lit Shader GraphのPBRパラメータ
| パラメータ | 説明 |
|---|---|
| Base Color | 基本色 |
| Normal | 法線マップ(凹凸表現) |
| Metallic | 金属度(0=非金属、1=金属) |
| Smoothness | 滑らかさ(0=ザラザラ、1=ツルツル) |
| Emission | 発光色 |
| Ambient Occlusion | 環境遮蔽(影の濃さ) |
| Alpha | 透明度(Transparent設定時に使用) |
透明・半透明マテリアルの設定
ガラスや半透明のマテリアルを作成するには:
- Shader Graphを選択し、Graph Inspector を開く
- Surface Type を
Transparentに変更 - Master Stackの Alpha 端子に透明度を接続(0=完全透明、1=不透明)
Graph Inspectorの主要設定一覧:
| 設定 | 選択肢 | 用途 |
|---|---|---|
| Surface Type | Opaque / Transparent | 不透明 / 透明 |
| Render Face | Front / Back / Both | 描画面 |
| Alpha Clipping | On / Off | テクスチャ切り抜き |
| Two Sided | On / Off | 両面描画 |
| Cast Shadows | On / Off | 影の投影 |
Alpha Clipping: 葉や草など、テクスチャで切り抜きたい場合は Alpha Clipping を有効にし、Alpha Clip Threshold を設定します。
Sponsored
Shader Graphの作成と基本操作
Shader Graphアセットの作成
- Projectウィンドウで右クリック
Create > Shader Graph > URP > Unlit Shader Graph