勉強会のレポート(メモ)です。
参加したのはこちら、「Unity道場 1月 ~LWRPとシェーダー~」
2019年最初のUnity道場です。
Unity道場はUnityJapanと参加者だけでなく、参加者同士の交流会でもあります。
さらにUnityなんでも相談所を設置してあります。
動画、スライドは後日公開されます。
公開され次第こちらにもリンクを張ります。
動画が公開されました。
1. 軽量レンダーパイプライン、Light Weight Renderer Pipeline…とは
まずは何もいわずにこれを見て
いい感じに見えるでしょう。LWRPを使って作られています。
LWRP
いままでと同じことができます。
追加でカスタムシェーダーの表現ができます.。
それ以外にも、パイプラインのカスタマイズもやりやすい(ブラーなど)。
さらに軽くて速い。ほとんど60fpsでます。
LWRPとはどういうものなのか
HDRPの軽い版です。
HDRP:ハイエンド、フォトリアル向け。
LWRP:モバイル、XR向け。軽量高速が優先。
いくつか機能が削られているため高速です。
比較表を見たい場合はマニュアルを見てください。
導入することで何がいいのか
・パフォーマンスがよい。
・シェーダーもよくなっている。
・カスタマイズも簡単
・導入は非常に簡単です
ここで実際にデモ
1.ProjectSettings.ColoerSpaceをLinearに。
2.パッケージを導入(PacageManagerから)
3.次は適応ProjectSettings.Graphicから設定。
いままでのスタンダードシェーダーがつかえないのに注意。
設定が全てアセットの方で変更できるようになりました。
いくつかの点が変わっています
ドローコールなどが減って、パフォーマンスが上がっています。
ワークフローにほとんど変化はない。使う分にはスムーズに使える。
細かい注意点
何が変わるのか、
ライティング
全てのライトを一括で描画します。
加算、塗りなおしの負荷が大きく改善されます。
重ね塗りと表現がかわるので注意。
いままではライトが複数重なるのはよくないとされていましたが、LWRPではある程度よくなった(4つまで)。
ただライトは4つまでしか表現できないのでそれ以上あるとだめ、
4つ以上ある場合、ライトはランダムで選ばれる。
ライトマップのベイク
GIはいままでと同じ、Realtime GIは未対応。
特にライトの戦略が変わりました。
「メインライト」「サブライト」はシェーダなどでも気にする必要はありませんでした。
しかしLWRPはメインとよべるものとそれ以外で区別されます。
メインは1個しかよばれない。メインは絶対使われるものとして考えられます。
他の追加加算ライトはシェーダー側で一回で描画するという形になっています。
シェーダーの話
LWRPは対応してないシェーダーは使えない。サーフェイスシェーダーは使えなくなります。
使ってると問答無用でピンクです。
そういう時は簡単に変換できます。正確には変換ではなく差し替え。
どう差し変わるのかはマニュアルで見れます。
マニュアルにないものは差し替えられない(レガシーなど古いもの、独自のサーフェイスシェーダーなど)
差し替えるとLWRP専用のシェーダーになります。
他のシェーダー
サーフェイスシェーダー以外はどうか、実は普通に動くことが多い。
同時にSprite UIもほとんど問題なく動きます。
サーフェイスシェーダーは努力が必要。
ビルトインとは大きく異なります
SRPを使ったため、ここまで大きく変わりました。
なぜこれが必要になったのか、いままでのビルトインは低スぺ高スぺまで対応してきたが最適化に限界がきた。
SRPは全てgithubで公開されています。自分で処理を追えるようになっています。
ちなみにSRPもLWRPもPackageManagerから取得するのでunityのバージョンアップと同期していません。
つまりパイプラインとunityのバージョンを合わせる必要がない
特定のバージョンをピックすることも可能。使いたいパイプラインも選べます。
もちろん自作も可能です。
もういっこデカイ機能
SRPバッチャー
強力な最適化機能。
通常のバッチング(Dynamic Batching)はマテリアルごとにドローコールされる。
ただ毎回描画命令するのはよくないので、メッシュを結合して描画していました。
これは悪くないアプローチだが実はあまり推薦されない。
CPUのコストが高くなるし、ポリゴンもふえる。なので現在は最初からoffになっています。
SPRバッチャーの場合はどうか
モデルの結合という考えではなく、バッファーをキャッシュするようになりました。
また、1つのマテリアルに全てのマテリアルをリニアな情報として結合します。
この1つのマテリアルをアップロードしてオフセットを切り替えています。
描画回数は減らないが描画命令が安くなる。
UberShaderの爆発
ゲームで使われないシェーダー(未使用、無効のもの)を削除する機能が追加されています。
アプリサイズもビルド時間も減りました。
新しくできるようになったこと
シェーダーグラフ
今まではシェーダーを書かなければならなかったが、ノードベースで作れるようになりました。
途中経過がビジュアルで確認できるため便利。
シェーダーグラフで作ったシェーダーはコードを見ることができます、逆はできない。
ちょこっと手直しもできます。
まとめ
LWRPは軽量、高速、カスタマイズ性も高い。
簡単に使えるし簡単に拡張できる。
2. 俺はUVスクロールがしたかっただけなんだ!
後日、振り返りの意味も込めて配信をするそうです。
画像や動画が多いため、動画またはスライドが公開されたらそちらを参照してください。
プロローグ
時はPS2の時代 ゲーム業界に入りました。
当時メタセコイアを使っていました。しかしUVスクロールができない。
DCC上でしかUVスクロールさせられない、リアルタイムでしたい。
味をしめてUVスクロールをやりはじめる。
時代は進む、VRCHATに足を突っ込む。
vrchatは技術屋の腕の見せ所(シェーダーやUVスクロールなど)
シェーダー作り始めた。でもシェーダーわからん。
シェーダーわからないのがわからない
ノードベースエディタ
テキストでシェーダーを書くのは気が滅入る。
しかしノードベースエディタの登場でとても楽しい。
VRCHATでキラキラした人を羨むのはもう終わり!
VRCHATはUnity2017.4なので最新ではない。
ただしShader Forgeを使えます。
グラフィカルな操作で楽。UVスクロールできただけで小躍りです。
ノードベースだといろいろな機能を簡単に追加できます。
頂点カラー、頂点アルファ・・・どんどん作っていきます。
ここでバーニアの作成、Shader Forgeのデモムービー
感想
ライトウェイトレンダリングパイプライン。
名前を聞く機会はありますが、どういうものかはよくわかっておらず、
使い方も知らない技術でしたが、要は軽量で使うのもカスタマイズも簡単なパイプラインということですね。
完全に理解しました。
シェーダーの作成も、ShaderGraphやShaderForgeなどノードベースのものがでてきたので、
昔ほど敷居は高くないのかもしれません。
懇親会のお寿司です。なんとうにがあります。
これがほんとのうにてぃ・・・
タイムライン
いただきました!#unity道場 pic.twitter.com/3Qg7ARicxp
— naka (@_daisuke0802) January 30, 2019
#unity道場 LWRP回きた。
— 殺意駆動開発 (@toru_inoue) January 30, 2019
よしと。#Unity道場 pic.twitter.com/KwD6jujm9B
— 伊藤周@おなかソフト (@warapuri) January 30, 2019
LWRP を既存プロジェクトに適用するデモ助かる・・助かる・・#Unity道場
— くまき (@kumak1) January 30, 2019
今夜(1/30 19時)の #Unity道場 ではライブストリーミングがあります。なお今夜のテーマは「LWRPとシェーダー」で、当社・山村と京野がそれぞれ講演します。 https://t.co/475S9eF9L8
— ユニティ・テクノロジーズ・ジャパン (@unity_japan) January 30, 2019
自動で差し替わるシェーダーについて#Unity道場
— mao (@TEST_H_) January 30, 2019
Upgradable Shadershttps://t.co/BtlO9XjLGN
ビルトインパイプラインのバッチング
— Kazushige Mori(Cz_mirror) (@Cz_mirror) January 30, 2019
フレーム毎にCPUで構築するのはコストが高く、Z精度も悪い
OpenGLES2以下では確かに有益だった(E3以降はなくてもよい)
Dynamic Batchingは3DテンプレートではすでにOFF #unity道場
#Unity道場 LWRPのまとめ pic.twitter.com/oVqukpcogM
— ザバイオーネ (@z_zabaglione) January 30, 2019
拡張できるInterfaces纏まってる。
— mao (@TEST_H_) January 30, 2019
調べきれてないので後で見よ#Unity道場https://t.co/RDXXMqWAqY
頂点カラーはUVスクロールの嫁である #unity道場
— Kazushige Mori(Cz_mirror) (@Cz_mirror) January 30, 2019
Meshの形状とUVスクロールでエフェクトを作成。#Unity道場
— mao (@TEST_H_) January 30, 2019
#unity道場
— ゆず (@citron_114) January 30, 2019
Shader Forgeはポストプロセスとの相性が悪い
umplify shader editorの方がポストプロセスと併用できる
#unity道場
— ゆず (@citron_114) January 30, 2019
メタセコイアで作った螺旋状のメッシュにUVスクロールをつけると魔法のようなエフェクトが作れる!
ShaderForgeの終了云々もあるけど、シェーダー表現って「ちょっとした工夫」こそが重要なので、アイディアは無駄にならないんじゃないかなと予想 #unity道場
— 椿 (@tsubaki_t1) January 30, 2019
ザギンのシースーはスシローより美味しかった! pic.twitter.com/3FF5vjCVyX
— tatsunoru@DOFI (@tatsunoru) January 30, 2019
Unity公式の勉強会行ってきた〜( ´ ω`)UVスクロールつおい
— たか( ´Ꙩωꙩ` ) : 藝大から東大院に乗り込むぞ!! (@tckr_tckr) January 30, 2019
懇親会で話した人の中に、VR Piano知っててフォローもしてくれてた人がいて、テンション上がったね!!( ^ω^ )#Unity道場
お知らせ
Unity道場は、各月末に1回開催を行います。
次回のUnity道場のテーマは「シェーダーがかけるエンジニア」です。
詳しい情報はまた後日。
Unity道場はイベントページ公開後、すぐに満席になります。
予めTwitterのユニティ・テクノロジーズ・ジャパンをフォローしておいてください。
間違っている箇所がありましたらコメントにお願いします。