性能詳細
1 個体あたりの規模
値は収録種全体の最小と最大です。offline 検査 (verify.sh) の出力から読めます。
| 段階 | 鳥の三角形数 | 鳥の頂点数 | 魚の三角形数 | 魚の頂点数 |
|---|---|---|---|---|
| Silhouette | 34〜56 | 48〜64 | 4〜50 | 8〜86 |
| Low | 70〜172 | 64〜138 | 18〜196 | 11〜120 |
| High | 202〜836 | 150〜560 | 60〜1008 | 32〜568 |
High で三角形数が多いのは、指状に分かれた翼端を持つ鳥 (トビ、ワシ、ツル、コウノトリなど) と、縞模様のある魚です。
頂点 Shader の負荷
主光源と Light Probe / 環境光は ForwardBase で処理します。追加の pixel light は ForwardAdd を増やし、頂点の運動計算も pass ごとに実行されます。大きな群れに多数の pixel light を重ねる場合は負荷を実測してください。ShadowCaster pass はありません。
頂点 Shader は頂点ごとに群れの運動を 3 回評価します。向きと傾きを中心差分で求めるためです。負荷は三角形数よりも頂点数にほぼ比例します。
例えば 300 羽のムクドリでは、段階ごとの規模は次のとおりです。
| 段階 | 頂点数 | 三角形数 |
|---|---|---|
| High | 45,600 | 61,200 |
| Low | 19,800 | 21,600 |
| Silhouette | 16,800 | 10,800 |
遠景では LODGroup により Silhouette 段が選ばれます。
LOD の切り替え
LODGroup の大きさ (LODGroup.size) は、群れ全体ではなく 1 個体の大きさ (翼開長または体長) に設定します。段階は、群れの中心から見た 1 個体の画面占有率で切り替わります。群れ全体の bounds を基準にすると、個体が点にしか見えない距離でも High 段が選ばれるためです。
既定の lodTransitions (0.03 / 0.006 / 0.0008) で、垂直視野角 60 度、LOD Bias 1 のとき、各段階が使われる距離は次のとおりです。
| 種 | High | Low | Silhouette | 描画しない |
|---|---|---|---|---|
| ムクドリ (翼開長 0.39 m) | 11 m まで | 56 m まで | 420 m まで | 420 m より遠く |
| マガン (翼開長 1.5 m) | 43 m まで | 216 m まで | 1,620 m まで | 1,620 m より遠く |
| ネオンテトラ (体長 0.03 m) | 0.9 m まで | 4.3 m まで | 32 m まで | 32 m より遠く |
距離は群れの中心から測ります。広い範囲の群れの内側にカメラがある場合、カメラの近くの個体も中心までの距離に応じた段階で描画されます。
目安
- 遠景の大きな群れは、
lodModeを LodGroup のままにしてください。 - 近くで見せる少数の個体は、
lodModeを Single、detailを High にします。 - 個体数が数百の群れを複数置く場合は、
countと画面占有率lodTransitionsを調整し、High 段が使われる範囲を狭めてください。 - 影の描画は行いません。Renderer の Cast Shadows は生成時に Off になります。
- 1 つの群れの頂点数が 65535 を超える場合、Mesh は 32 bit index になります。
culling
群れ全体が 1 つの Renderer なので、culling は群れ単位です。Mesh の bounds は 範囲 + 1 個体の最大到達距離 で設定され、画面に範囲の一部が入っていれば群れ全体が描画されます。