しがないエンジニアのブログ

技術的な内容をメモ代わりにつらつら

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

公式サイト

http://events.unity3d.jp/unitetokyo2018/session-lineup.html#session52

講演者

高橋 啓治郎 (ユニティ・テクノロジーズ・ジャパン合同会社)

SlideShare

資料なし(ライブデモのみ)

Github

https://github.com/keijiro/ShaderGraphExamples

概要

  • Unity2018から使えるShader Graph入門
    • 基本的な使い方
    • 動作原理
    • テクニック

内容

  • シェーダグラフ
    • ノードベースのエディタ
      1. かんたんにシェーダが組める
      2. シェーダの互換性を高める
        • カメラのrendering pathごとにシェーダを組む必要
          • scriptable render pipelineの追加対応など


  • セットアップ手順
    • Lightweight RPをインストールする
      1. package manager 経由でインストール
      2. Light weight PBR Graph
    • Create > Shader > PBR Graph, Sub Graph, ...


  • シェーダグラフの基礎
    • PRB
      • ライティングあり
    • Sub
      • 割愛
    • Unlit
      • ライティングなし(出色を直接指定)
    • ex)
      • Input > Basic > Color 色を作成
      • UI左上 Save Assetで保存→shaderとして登録
      • propertyを追加して、エディタ上で編集することも可能


実装例

  1. ディゾルブエフェクト

    • Alpha Cutout
      • cutoff値を生成
        • それより低い値が透明になる
      • 線形
        • なめらかなグラデーション
      • ノイズ
        • もや〜っとした感じ
    • Step Node
    • Time, Fraction
      • アニメーション処理を自動管理
  2. エネルギーゲージ

    • グラデーション素材とthresholdの組み合わせ
    • Remap
      • In Min ~ Maxの値がOut Min ~ Maxで出力される
        • ex) in 0, 1 out 1, 0とすると、
          0 ~ 1を入力すると1 ~ 0で出力される
    • Smooth Step
      • 2つのedgeを指定してthresholdのedgeをなめらかにする
    • Lerp
      • 値の補間、2点の間をつなぐ
  3. 古風なTVエフェクト

    • Sin, (Split, Combine), Saturate
      • Sinで櫛状の縞模様を作成
      • SplitのG成分でUVのY軸の値を取り出す
      • Saturateでsinの0以下の値を切り捨て
    • Gradient Noise
      • 画像を揺らがせる
      • CombineでU値にAdd
      • Remapで出力を調整
      • Timeをかませることで、ゆらぎの強弱をつける


カスタムシェーダも作成可能