LoginSignup
6
4

More than 5 years have passed since last update.

Unite2018Tokyo ShaderGraph 公演まとめ

Last updated at Posted at 2018-06-18

Pref.

Unite2018Tokyoで高橋さんがご登壇された
「新機能Shader Graphを使えばプログラミング無しにシェーダーが作れるようになります!」
の中で紹介されたUnity2018からPreview実装されているShaderGraphの機能紹介とテクニック紹介
を簡単にまとめした.

【Unite Tokyo 2018】新機能Shader Graphを使えばプログラミング無しにシェーダーが作れるようになります!

Shader Graphとは

ノードベースのShader Editor.
グラフィカルな環境でShaderでの絵作りが可能になる.

利用することでの利点

1. 簡単にShaderを扱える

Shaderを手書きでソースから書くと難しいのに比べノードベースのShader EditorであるShader Graphは
誰でも簡単に扱うことができる.

2. 互換性

最終的な画面の描画までの様々な描画処理の流れをRender Piplineというが,従来のShaderの仕組みでは
Render PiplineごとにShaderを書き直さなければならなかったが,従来のRender Piplineは大きく
2つしか存在していなかったので特に問題は起きなかった.

しかしこれから「Scriptable Render Pipline」機能,つまりスクリプトによる
カスタムRender Piplineの登場により,Render Piplineが無数に追加が可能になる.
そういったときに従来のShaderの仕組みではそれぞれでの最適化が難しくなる.

Shader Graphは一回ShaderをShader Graph上で作成してしまえばそれら全てに対応できる仕組みになっている.
Shaderに抽象性を持たせる,結果どのレンダリングパイプラインでも使い回せるようになっている.

いわばShader GraphはSRP(Scriptable Render Pipline)世代のUnityにおいて
シェーダを組むための標準の仕組みである.

Shader Graphセットアップ手順

現在2通りの方法があるが1のLightweight-RPテンプレートを利用の方が簡単である.

1. Lightweight-RPテンプレートを利用

Unityのプロジェクトを構築するときにテンプレート「Lightweight-RP」を選択する.

2. Package Manager経由でインストール

Package Managerを利用してShader Graphをインストールする.
この方法だと私の環境では現時点でうまく行かなかったので
打開策をhttps://qiita.com/nmxi/items/cddf16f1ade9913e0780に書いておきました.

実際にShader GraphでShaderを作ってみる

UnityエディタのProjectタブ内を右クリックして,いつも通りShaderを新規作成するタブに

  • PBR Graph (Phisicaly Based Rendering ライティグあり)
  • Sub Grap (複雑なので今回の公演では説明は割愛)
  • Unlit Graph (ライティングなし)

が追加されているので,それぞれ選択する.
するとこれまたいつも通りにファイルが生成されるので(.ShaderGraphファイル)
ダブルクリックでShader Graphのエディタ画面に移ることができる.

紹介されたノード

ノード名 説明
Sample texture 2D 2Dテクスチャを読み込む
Sample Noise ノイズを生成
Add 値を足し算
Step ある値以上を抽出
Smooth Step Stepノードのなめらかに値が変化する版
Fraction 小数点以下を返す 1.1→0.1 2.4→0.4 0.5→0.5
Invert Color 色を反転
Time ゲームが開始されてからの経過時間を秒で返す
Multiply 色を掛け合わせる
Remap 値一次変換 In,Min,Maxでの範囲で値の範囲で入力された値がOut,Min,Maxの範囲で出力されるように一次変換してくれる
Lerp 値の補間 A,Bの間を繋ぐ
Split ベクトルを成分に分解 Combineとセットで覚えると良い
Combine ベクトル成分を結合 Splitとセットで覚えると良い
Saturate 0~1以外の値を切り捨てる 負の値はバグになりやすいのでその点有効
Sine sin波 周期的な値を生成

紹介されたテクニック

とても端折ってるので動画を見たほうが早いです.

反復アニメーション

Timeノード - Fractionノード
4wersg.gif

image.png

明るさを補う

Multiplyノードで1以上を掛ける
image.png

時間軸を素にした適当な値を出力

Timeノード - Gradient Noiseノード
ecWc.gif

image.png

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4