Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

AmplifyShaderEditorを使ったLWRP対応について

1,121 views

Published on

Sample Project
ASE Template & LWRP compatible custom node : https://github.com/Itoen/ASE-LWRP
Editor extensions for replacing shaders : https://github.com/Itoen/ShaderReplacer

Published in: Engineering
  • Be the first to comment

AmplifyShaderEditorを使ったLWRP対応について

  1. 1. Amplify Shader Editorを使った LWRP対応について 伊藤 和樹
  2. 2. プロフィール 2017年より前職にて 初内製の新規タイトルの開発に従事 システム周りをメインにAssetBundleなどを担当 今年7月より別の会社に転職 新規開発中タイトルのLWRP対応などを担当中 1
  3. 3. アジェンダ • LWRP(Lightweight Render Pipeline)とは • LWRPの導入 • ASE(Amplify Shader Editor)でLWRP対応シェーダを作るには • ASEでLWRP対応のカスタムテンプレートを作成する • 既存マテリアルのシェーダ差し替え 2
  4. 4. LWRPとは • Unity 2018.1より利用可能となったScriptable Render Pipeline そのレンダーパイプラインのテンプレートの1つ • ライティングやシェーディングに制限をかけるかわり 従来のレンダーパイプラインよりパフォーマンスの最適化がされている 3
  5. 5. LWRPの導入 4 Unity 2018から追加されたPackage Managerから インストールするよ
  6. 6. 5 ・Render-pipelines.lightweight ・Render Pipeline Core Library をインストールします
  7. 7. 6 ポストエフェクトを利用する場合は Post Processing v2をPackage Managerからインストールしましょう
  8. 8. 7 Post Processingも最新のプレビュー入れとけば大丈夫だろう
  9. 9. 8 と思ってた時期が僕にもありました、、、
  10. 10. パッケージのバージョン相性問題 素直に最新版を入れたらポストエフェクトを使ってるシーンのUIが楽しい事になった(Android/iOS 実 機) 9 Unity 2018.2番台の場合RenderPipeline CoreとLWRPのバージョンが3.0.0に対して、 Post Processing v2のバージョンを2.0.10にする事でバグは解消した
  11. 11. 10
  12. 12. 11
  13. 13. 12
  14. 14. 13 バージョン相性問題にはかなり手を焼いたので気をつけてください!
  15. 15. Amplify Shader EditorでLWRP対応シェーダを作るには 14 AmplifyShaderEditor/Plugins/EditorResources/Templates/SRP/LWSRPTemplat es.unitypackage 1. 専用テンプレートのパッケージをインポートする 2. パッケージと同じディレクトリに移動する 以上!
  16. 16. 一部ASEバージョンのLWRP対応テンプレートの注意点 一部のバージョンのLightweightUnlitテンプレートで InputSurfaceUnlit.hlslをincludeしていますが、 _MainTex ・ _Colorがプロパティ名で使用出来なくなります。 (InputSurfaceUnlit側で予約されている為) 弊害としてuGUIのimageに設定された画像を_MainTexに自動で当てはめると言った使い方が 出来なくなるのでUI向けシェーダ使ってる際に問題が出ます。 15
  17. 17. 解決法 • InputSurfaceUnlitのincludeを削除する Amplify Shaderでシェーダを制作する際に使わない関数の集まりとなっているので、 削除しても問題ありません。(最新verのASEではシレッと削除されています) 16
  18. 18. さて、シェーダ作ろうか。 17
  19. 19. ん?LWRP対応のテンプレートがPBRとUnlitしかない ぞ 18
  20. 20. ライティングを反映させたければPBR使わんとならん、、、 19
  21. 21. うわァァァァァァァァァ 何の為Lightweightなんだよぉぉぉぉ 20
  22. 22. という事で、テンプレート作りましょう 21
  23. 23. ASEでLWRP対応のカスタムテンプレートを作成する 22 AmplifyShaderEditor/Plugins/EditorResources/Templates ここより下に作ればおk PBRとUnlitのテンプレートをベースに改造してくと作りやすいと思います
  24. 24. 23 Amplify Shaderのwiki http://wiki.amplify.pt/index.php?title=Unity_Products:Amplify_Shader_Editor/Templates
  25. 25. ASEのカスタムノードを作成する Scriptable Render PipelineではUnityCG.cgincが使えない為、 いくつかのノードが使えないので、対応したカスタムノードを作って対応します。 • 使用出来なくなるノード Shade Vertex Light PI Blinn-Phong Lighting Half Blinn-Phong Lighting 24
  26. 26. 25 CommonInitとGenerateShaderForOutputをオーバーライドする事で作成可能 カスタムノードの実装例(LWRP対応Vertex Light)
  27. 27. 既存マテリアルのシェーダ差し替え 手動だとヒューマンエラーも発生しやすいし 何より数が多いと死にます、 エディタ拡張しましょう。 26
  28. 28. 27 Shader Util https://docs.unity3d.com/ja/current/ScriptReference/ShaderUtil.html
  29. 29. まとめ • LWRPとPost Processingにはバージョン間の相性問題があるぞ • Amplify ShaderはCustom Template作って対応した方が良い • 既存マテリアルへのシェーダ差し替えはエディタ拡張で行った方が良い • シェーダ系のエディタ拡張を作る際はShaderUtilが便利 28
  30. 30. 我々にはLWRPは早過ぎた。 29 うかつにプレビュー版の機能を取り入れるのはリスクが大きい
  31. 31. ご静聴ありがとうございました。 30

×