[Unite2018] 新機能Shader Graphを使えばプログラミング無しにシェーダーが作れるようになります!
公式サイト
http://events.unity3d.jp/unitetokyo2018/session-lineup.html#session52
講演者
高橋 啓治郎 (ユニティ・テクノロジーズ・ジャパン合同会社)
SlideShare
資料なし(ライブデモのみ)
Github
https://github.com/keijiro/ShaderGraphExamples
概要
- Unity2018から使えるShader Graph入門
- 基本的な使い方
- 動作原理
- テクニック
内容
- シェーダグラフ
- ノードベースのエディタ
- かんたんにシェーダが組める
- シェーダの互換性を高める
- カメラのrendering pathごとにシェーダを組む必要
- scriptable render pipelineの追加対応など
- カメラのrendering pathごとにシェーダを組む必要
- ノードベースのエディタ
- セットアップ手順
- Lightweight RPをインストールする
- package manager 経由でインストール
- Light weight PBR Graph
- Create > Shader > PBR Graph, Sub Graph, ...
- Lightweight RPをインストールする
- シェーダグラフの基礎
- PRB
- ライティングあり
- Sub
- 割愛
- Unlit
- ライティングなし(出色を直接指定)
- ex)
- Input > Basic > Color 色を作成
- UI左上 Save Assetで保存→shaderとして登録
- propertyを追加して、エディタ上で編集することも可能
- PRB
実装例
ディゾルブエフェクト
- Alpha Cutout
- cutoff値を生成
- それより低い値が透明になる
- 線形
- なめらかなグラデーション
- ノイズ
- もや〜っとした感じ
- cutoff値を生成
- Step Node
- しきい値処理
- Time, Fraction
- アニメーション処理を自動管理
- Alpha Cutout
エネルギーゲージ
- グラデーション素材とthresholdの組み合わせ
- Remap
- In Min ~ Maxの値がOut Min ~ Maxで出力される
- ex) in 0, 1 out 1, 0とすると、
0 ~ 1を入力すると1 ~ 0で出力される
- ex) in 0, 1 out 1, 0とすると、
- In Min ~ Maxの値がOut Min ~ Maxで出力される
- Smooth Step
- 2つのedgeを指定してthresholdのedgeをなめらかにする
- Lerp
- 値の補間、2点の間をつなぐ
古風なTVエフェクト
- Sin, (Split, Combine), Saturate
- Sinで櫛状の縞模様を作成
- SplitのG成分でUVのY軸の値を取り出す
- Saturateでsinの0以下の値を切り捨て
- Gradient Noise
- 画像を揺らがせる
- CombineでU値にAdd
- Remapで出力を調整
- Timeをかませることで、ゆらぎの強弱をつける
- Sin, (Split, Combine), Saturate
カスタムシェーダも作成可能
[Unite2018] エディター拡張マニアクス2018
公式サイト
http://events.unity3d.jp/unitetokyo2018/session-lineup.html#session36
講演者
SlideShare
https://www.slideshare.net/UnityTechnologiesJapan/unite-2018-tokyo2018-96373327
概要
- ここ3年の間に実装された機能について
- 公開済・非公開含む
内容
赤文字は開発段階
- Scripted Importer
- 未対応ファイルのインポートを自動化
- 拡張子ごとに作成
- Unityがサポート済の拡張子には対応できない
- OnImportAsset()
※アセットIDは変更しないこと
- 拡張子ごとに作成
- 未対応ファイルのインポートを自動化
- UI Elements
- UnityエディタはIMGUIで設定されている
- UIが複雑になるほどコード量が増える
- 処理が1箇所にまとまってしまう
↓
- RMGUIであるUI Elementsの開発
- まだinternal customer (Unity社員)向け
- 概要
- UI Elementsの今後
- 色々課題が多い
- Custom Editor
- Property Drawer
- Performance
- おそらく2019.x 後半
- 色々課題が多い
- UnityエディタはIMGUIで設定されている
- Graph View
- 現状
- まだ社員向け機能
- まだdocumentもない
- 現状
- Shortcut System
- ex) Shift + A のショートカットコマンドを実装
- 特定のEditor Windowでショートカットを実装する場合
- Eventからショートカットコマンドを検知
- Menu Itemで実装する場合
- グローバルなコマンドとして実装
- 特定のEditor Windowでショートカットを実装する場合
- ショートカット機能の実装は難易度が高い!
- OSによるキーの違いも考慮する必要
- ショートカットキーのコンフリクトを調べられない
- ショートカットのリスト化が困難
- Unity2018.2から新しいシステムを実装
- まだプレビュー段階
- できるようになること
- ショートカットのリスト化
- ユーザによるショートカットキー変更
- ショートカットキーがコンフリクトした場合の修正
- 実装方法
- Menu Itemのような実装方法
- ex) Shift + A のショートカットコマンドを実装
- Preset
- Package Manager
- Assetを配信するシステム
Module Manager
との違い- コンセプトは同じ
- 失敗点を改善
- 扱うモジュールがcore部分に強く依存していて切り離しが難しい
- 最終的に
Module Manager
がなくなり、Package Manager
に完全移行 - 基盤システムは
npm
- そのためパッケージ情報は
package.json
で管理
- そのためパッケージ情報は
- 今後
unitypackage
は過去のフォーマットになる
- Unity C# Reference
用語
[Unite2018] その最適化、本当に最適ですか!? ~正しい最適化を行うためのテクニック~
公式サイト
http://events.unity3d.jp/unitetokyo2018/session-lineup.html#session32
講演者
Valentin Simonov (Unity Technologies Field Engineer)
SlideShare
概要
- メモリの種類について
- Dirty Memoryを最小限に抑えるべし
- 最適化ツールの紹介
内容
- メモリ消費の管理
- ツールごとに値が様々
- what kind of memory?
- RAM(物理メモリ)
- 物理的なメモリ
- 上限を超えられない
- Virtual Memory(VM)
- Resident Memory
- VMの一部
- 使用せず、確保するだけ
- Clean and Dirty Memory
- Clean Memory
- readonlyなメモリ領域
- binaryファイルなど
- readonlyなメモリ領域
- Dirty Memory
- そのた
- そのた
- Clean Memory
- Graphics Memory(VRAM)
- GPUとCPUが共有する物理メモリ
- ほとんどがResident or Dirty memory
- Malloc Heap
- Swapped(compressed) Memory
- 圧縮されていないDirty Memory
- 圧縮されたDirty Memory
- Native(Unity) Memory
- Native Plugin
- 独自のMalloc Heap
- 独自のMalloc Heap
- Mono Heap
- NMの一部
- .NETバーチャルマシンの一部
- 連続したものではなく、断続的なもの
- iOSメモリ管理
- Tools
- Unity Profiler
- 内部ツール
- Simple View
- Mono(used)
- Mono Heapサイズ(ピンクと緑の総和)
- Mono(total)
- Mono Heapに対してcommitされた総量
- GfxDriver
- 2Dの総量 – renderターゲット
- FMOD
- audioがリクエストしたサイズの総量
- 他の値は使い物になっていない
- Mono(used)
- Detailed View
- Native Memory上のオブジェクト名
- Native Memory上でアセットをどれくらい消費しているか
- Memory Profiler
- Memory Profiler Extension
- Github
- Mono Heapのブロックを確認できる
- Github
- Xcode Debug View
- メモリ管理
- Dirty Memory + Swapped Memoryだと思われる
- 黄色いゾーンに入ってきたとき、終了される確率が高まる
- メモリ管理
- VM Tracker
- アプリケーションのメモリの消費量
- 扱いが難しい
- www dcのカンファレンスを見る
- 他のuniteの講演を見る
- Dirty Memory/Graphics Drive/Mono Heap/Malloc Heapなどの確認が可能
- いつ、なぜの確認ができない
- Allocations Instrument
- Unity Profiler