Output Particle Mesh
メニューパス : Context > Output Particle Mesh
(Output Particle (Lit) Mesh)
Output Particle Mesh コンテキストでは、メッシュを使ったパーティクルのレンダリングができます。通常の (unlit) と Lit の両方があります。 (Lit は HDRP 限定)。
以下は、Output Particle Mesh コンテキスト専用の設定およびプロパティのリストです。このコンテキストがその他すべてのコンテキストと共有する、一般的な出力設定に関する詳細は、共通の Output 設定とプロパティ を参照してください。
Context 設定
| 設定 | Type | 説明 |
|---|---|---|
| Mesh Count | uint (slider) | (Inspector) この出力 (1 から 4) と使う、様々なメッシュの数です。インデックスごとに、パーティクルにメッシュを選択できます。パーティクルの meshIndex 属性を使います。 |
| LOD | bool | (Inspector) パーティクルメッシュが 精密さの度合い (LOD) を使うかを示します。この設定を有効にすると、コンテキストは画面上のパーティクルの大きさに基づいて、メッシュを選択します。LOD メッシュ選択に値を特定するには、Lod Values プロパティを使います。 |
Context プロパティ
| Input | Type | 説明 |
|---|---|---|
| Mesh [N] | Mesh | パーティクルのレンダリングに使うメッシュです。メッシュ入力フィールド数は、Mesh Count 設定によって異なります。 |
| Sub Mesh Mask [N] | uint (mask) | 各メッシュに使う、サブメッシュマスクです。サブメッシュマスクフィールドの数は、Mesh Count 設定によって異なります。 |
| Lod Values | Vector4 | コンテキストが LOD のレベル間から選択する際に使う、しきい値です。値は 1 次元のビューポートのパーセンテージを表します (例えば、値が 10.0 であれば画面の 10% を意味します)。コンテキストは左から右へ (0 から n) 値をテストして、画面のパーティクル率がしきい値を上回る場合のみ、LOD レベルを選択します。つまり、LOD 値は大きいものから順に特定しなければなりません。また、メッシュ数 1 と LOD を使って、画面上の小さなパーティクルを除去することも可能です。このプロパティは、LOD 設定を有効にしたときのみ表示されます。 |
| Radius Scale | float | パーティクルごとに LOD レベルを選択する際に適用するスケールです。デフォルトにより、LOD システムはバウンディングボックスが unit ボックスであると推定します。メッシュバウンディングボックスが unit ボックスよりも小さい、または大きい場合は、このプロパティを使ってスケールを適用し、LOD しきい値を実際の大きさと一致させます。このプロパティは、LOD 設定を有効にしたときのみ表示されます。 |
制限
なおメッシュおよびサブメッシュマスクは GPU 式ではなく CPU 式であるため、指定することができません。様々な種類のメッシュを使ってパーティクルをレンダリングしたい場合は、メッシュ数を 1 以上 (最大 4 まで) に特定し meshIndex 属性を使うのではなく、マルチメッシュシステムを利用しなければなりません。
パーティクルごとのソートおよびマルチメッシュは、グローバルな出力ではありません。ソートは同じメッシュインデックスを使うパーティクル間のみで有効です。つまり、メッシュ 0 を使うパーティクルは、例えばカメラからの距離などに関係なく、常にメッシュ 1 を使うパーティクルの上でレンダリングします。
パフォーマンスへの考慮点
マルチメッシュを使うと、異なるドローコールを出します。つまりこの機能を使う際には、CPU オーバーヘッドがいくらかかかるということです。複数の出力を使う場合と同様ですが、多少能率的です。また LOD を最適化として使う場合は、大量のパーティクルを持つより大規模なシステムのみに適しています。
システムに空きがあり (生きたパーティクル数/容量)、頂点を大量に含むメッシュを使う場合は、レンダリングモードを間接に切り替えて頂点ステージでの作業量をなくし、パフォーマンスを向上させる方が良いでしょう。