渋谷ほととぎす通信

新しいこと、枯れたこと問わずサムザップ大庭が興味を持ったものを調査、生活の効率を求める完全趣味の技術ブログ。基礎を大事にしています。※あくまで個人ブログであり所属組織とは関係ありません

【Unity】必ず設定しておくべきPreferencesのVisual Effectsの設定項目


Visual Effect GraphをインストールするとPreferencesにVisual Effectsという項目が並びます。
その中で何を設定しておかなければならないかについて紹介していきます。

f:id:esakun:20201106004030p:plain:w450

各設定項目の設定可否について

表にまとめました。

項目 設定の可否
Experimental Operators/Blocks 必ず設定するべき
Show Additional Debug info 必ず設定するべき
Verbose Mode for compilation 普段はOFF
Experimental shader externalization 分からない
Force Compilation in Edition Mode 普段はOFF

以下各項目の説明に移ります。UnityEditor上で表示されるツールチップ (各項目をマウスオーバーした時に表示されるテキスト) もセットで記載しています。

Experimental Operators/Blocks

When enabled, operators and blocks which are still in an experimental state become available to use within the Visual Effect Graph.

有効にすると、実験的な状態にある演算子やブロックがビジュアルエフェクトグラフ内で使用できるようになります。僕自身何が実験的なブロックなのか把握していませんが設定しておくべき理由の1つとしては、カスタムアトリビュートを使いためです。

カスタムアトリビュートについては以下の動画の13:38辺りで説明されています。

2つ目の理由はVisual Effect GraphでShaderGraphを使うためです。

f:id:esakun:20201106014722p:plain:w450

設定しないと上のようにOutput Particleコンテキストの中でShaderGraphが設定できなくなります。 f:id:esakun:20201106030852p:plain:w450

ShaderGraphを使うことで表現力を上げることが出来るため現状ではExperimental Operators/Blocksは設定しておく一択だと思います。

Show Additional Debug info

When enabled, additional information becomes available in the inspector when selecting blocks, such as the attributes they use and their shader code.

ブロックを選択する際に、使用している属性やシェーダコードなどの追加情報がインスペクタで利用できるようになるという説明なのですが、このブロックはどんな処理をしているのか疑問に思った時に役立ちます。

f:id:esakun:20201106005811p:plain:w450

例えばCaluculate Mass from VolumeブロックDensityがどういう計算をしているのか調べたくなったとします。

f:id:esakun:20201106005822p:plain:w450

Show Additional Debug infoにチェックが入っていないとインスペクタ上では何も情報は表示されません。

Show Additional Debug infoにチェックを入れると

f:id:esakun:20201106005858p:plain:w450

このようにComputed Source Codeに処理内容が表示されるようになります。これで完全に理解することは難しい場面も多々あると思いますが、考えるきっかけにはなると思っているため、Show Additional Debug infoにはチェックを入れておくべきと考えています。

Verbose Mode for compilation

When enabled, additional information about the data, expressions, and generated shaders is displayed in the console whenever a graph is compiled.

グラフがコンパイルされるたびに、データ、式、および生成されたシェーダに関する追加情報がコンソールに表示されます。どのようなコンピュートシェーダがジェネレートされるのかを調べる際に役に立つと思います。

僕自身はまだ役に立った場面はありません。今後学習を重ねていく上で必要になる気はしています。ということで普段はOFFで良いという判断です。

Experimental shader externalization

When enabled, the generated shaders are stored alongside the Visual Effect asset, enabling their c direct modification.

生成されたシェーダーは Visual Effect アセットと一緒に保存され、直接変更できるようになると説明がありますが、挙動を把握できていないため「分からない」という判断です。

Enable Externalizing Shaders (for Debugging purposes) in the Visual Effect Graph Asset Inspector

公式マニュアルでも上記のように説明がありますが、、、よく分からなかったです。

Force Compilation in Edition Mode

When enabled, the unoptimized edit version of the Visual Effect is compiled even when the effect is not being edited. Otherwise, an optimized runtime version is compiled.

以下公式マニュアルから引用

Disables Graph Optimization when Saving Assets (for Debug Purposes Only)

上記のように説明がありますが、要するに最適化を無効にしたコードが生成されるということです。挙動的に何かおかしくて生成コードを確認する上で調査のきっかけになるものかなと思っていて、普段はOFFで良いかと思っています。

まとめ

  • Experimental Operators/Blocks
  • Show Additional Debug info

この2つにチェックを入れておけばよいという結論です。

環境

  • Unity2020.1.6f1
  • Visual Effect Graph v8.2.0

参考