Slide 1

Slide 1 text

Unity Shader Breakdown 2021/07/09 CA.unity #2 株式会社Colorful Palette / 山口 智也 1

Slide 2

Slide 2 text

@togucchi ● 所属 株式会社Colorful Palette 「プロジェクトセカイ カラフルステージ! feat.初音ミク」 開発チーム ● 職種 Unity/グラフィックスエンジニア 3D周辺やバーチャルライブの開発を担当 ● 経歴 2020年 4月 株式会社CyberAgent 新卒入社 2020年 5月 株式会社Colorful Palette 配属 山口 智也 (Yamaguchi Tomoya) 2

Slide 3

Slide 3 text

● Unityでのシェーダ実装に興味がある人 ● ゲーム制作で独自の特殊な絵作りをしたい人 今回のLTのターゲット 3

Slide 4

Slide 4 text

1. 概要 2. シェーダ解説 a. 深度フォグ b. フレア・パラ c. ディフュージョン d. ゴッドレイ 3. まとめ アジェンダ 4

Slide 5

Slide 5 text

概要 5

Slide 6

Slide 6 text

映像,VFXのメイキング映像 「VFX Breakdown」などで 検索すると出てきます Breakdown? https://www.youtube.com/results?search_query=vfx+breakdown 6

Slide 7

Slide 7 text

7 © Unity Technologies Japan/UCL

Slide 8

Slide 8 text

8 ● 深度フォグ ● フレア・パラ ● ディフュージョン ● ゴッドレイ 空気感を出すための ポストエフェクトを中心に解説 © Unity Technologies Japan/UCL

Slide 9

Slide 9 text

シェーダ解説 9

Slide 10

Slide 10 text

画面の深度(depth)を元に 指定した色にフェードさせる 画面全体の色味の操作や 奥行き感を出すのに有効 Render Pipeline Assetの Depth Textureをtrueにする 深度フォグ 10 © Unity Technologies Japan/UCL

Slide 11

Slide 11 text

ランプテクスチャを使って 距離によるフォグの強さや 色を自由に制御 ランプテクスチャをUnityの Gradientから生成する拡張を 作成 深度フォグ 11 © Unity Technologies Japan/UCL

Slide 12

Slide 12 text

アニメの撮影処理などで よく用いられる,画面全体にグラ デーションをかける処理 画面全体のまとまりや 雰囲気の向上 フレア … 薄く明るくする光 パラ … 暗くする影 フレア・パラ 12 フレア パラ © Unity Technologies Japan/UCL

Slide 13

Slide 13 text

フレア,パラそれぞれに 円形の範囲指定,色の指定を できるようにして実装 フレアは元の色に対して加算 パラは乗算でブレンド フレア・パラ 13 フレア パラ © Unity Technologies Japan/UCL

Slide 14

Slide 14 text

フレア・パラ 14 薄紫色のフレア プロセカの例 ♪ ワーワーワールド

Slide 15

Slide 15 text

画面全体の光の拡散を表現 アニメ等でよく使われる 全体の絵がやわらかく, ふんわりとしたものになる ディフュージョン 15 © Unity Technologies Japan/UCL

Slide 16

Slide 16 text

カラーを縮小バッファに コピー + コントラスト調整 ガウシアンブラーを適用後 元のカラーにブレンド (今回はスクリーン合成) ディフュージョン 16 負荷の軽減 + 大きくぼかすために 縮小バッファを使用する © Unity Technologies Japan/UCL

Slide 17

Slide 17 text

17 ディフュージョン プロセカの例 ディフュージョン + 被写界深度 により全体がふわっと した雰囲気に ♪ ウミユリ海底譚

Slide 18

Slide 18 text

光が差し込んでいるような表現 いわゆるVolumetric Lighting 今回はURP標準の デプスシャドウのShadowMapを 使ったRaymarchingで実現 ゴッドレイ 18 © Unity Technologies Japan/UCL

Slide 19

Slide 19 text

各ピクセルからレイを飛ばし, 一定間隔でサンプリングする 光が遮蔽されていないポイントで 適当な係数をかけつつα値を 加算していく 解像度 ✕ サンプル数 → 処理負荷が非常に高い ゴッドレイ 19 各ポイントの座標で ShadowMapをサンプリングする

Slide 20

Slide 20 text

深度テクスチャを元に オブジェクトに遮蔽されている部分 は計算しないようにする 時間をseedにした(疑似)乱数で レイのサンプリング開始位置を ピクセルごとにずらして ループ数を低減 ゴッドレイ - 工夫 - 20 ループ数48, 乱数なし ループ数48, 乱数あり © Unity Technologies Japan/UCL

Slide 21

Slide 21 text

まとめ 21

Slide 22

Slide 22 text

22 ゴッドレイ © Unity Technologies Japan/UCL

Slide 23

Slide 23 text

23 フォグ © Unity Technologies Japan/UCL

Slide 24

Slide 24 text

24 ディフュージョン © Unity Technologies Japan/UCL

Slide 25

Slide 25 text

25 フレア・パラ © Unity Technologies Japan/UCL 完成!

Slide 26

Slide 26 text

26 ベース © Unity Technologies Japan/UCL

Slide 27

Slide 27 text

27 © Unity Technologies Japan/UCL 完成!

Slide 28

Slide 28 text

今回の発表のサンプル https://github.com/togucchi/urp-postprocessing-examples 28

Slide 29

Slide 29 text

シェーダ実装で より自由な絵作りを 29