カリング処理は処理負荷を軽減させるために不必要なものをあらかじめ取り除く処理のことです。
例えば以下のようなゲームプレイ画面があったとします。
次のGIF動画はカリング処理がない場合と、カリング処理がありの状態の比較です。
ゲーム上カメラに映らないものが省かれている様子がわかるかと思います。
!
実際のゲーム実行時には、まずCPU側で不必要なものを判断し(CPUカリング)、その後にデータがGPUに送られます。レンダリング時にはGPU内でもカリング(GPUで描画処理が不必要なものを判断し描画対象から取り除く)が行われますが、実際に描画はされなくてもデータとしてはGPUに送られてしまうので、メモリや処理負荷に影響を与えます。
FreezeRenderingコマンドとToggleDebugCameraコマンド
CPUカリングについて、適切に行われているか確認するための方法として、FreezeRenderingコマンドとToggleDebugCameraコマンドが存在します。FreezeRenderingに関してはカメラ情報をその場で止めてしまうコマンドで、ToggleDebugCameraについては、ゲームで設定しているカメラとは別に自由で動けるDebug用カメラを使用するモードに切り替えるコマンドです。コマンドはゲーム中に"@"キーを押すことで入力用のコンソールが表示されるので、こちらに入力することで不要なものが残っていないか確認する事が可能です。
対策方法
GPUに不必要なものを送らないための対策としては、メッシュのBoundsを適切に設定することが必要です。
(Boundsをもとにカリングを行っています。)
Boundsはメッシュごとに自動で設定されていますが、Sphereで近似されるため細長いメッシュだと非常にでかくなり、常にGPUに送られてしまうといったケースが存在します。
Boundsは、[表示] > [詳細設定] > [バウンズ] で表示が可能です。
対策としては細長いモデルについては分割する方法や、メッシュの設定で**[詳細] > [Rendering] > [Bounds Scale]**よって調整を行います。
おわりに
適切にモデルの設定を行い処理負荷を軽減しましょう。