12
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Epic Games Japan #2Advent Calendar 2019

Day 10

[UE4] ゲーム実行時のカリングを確認する方法

Last updated at Posted at 2019-12-09

カリング処理は処理負荷を軽減させるために不必要なものをあらかじめ取り除く処理のことです。
例えば以下のようなゲームプレイ画面があったとします。
2019-12-04_13h02_17.png

次のGIF動画はカリング処理がない場合と、カリング処理がありの状態の比較です。
ゲーム上カメラに映らないものが省かれている様子がわかるかと思います。
cullingGIf.gif!

実際のゲーム実行時には、まずCPU側で不必要なものを判断し(CPUカリング)、その後にデータがGPUに送られます。レンダリング時にはGPU内でもカリング(GPUで描画処理が不必要なものを判断し描画対象から取り除く)が行われますが、実際に描画はされなくてもデータとしてはGPUに送られてしまうので、メモリや処理負荷に影響を与えます。

FreezeRenderingコマンドとToggleDebugCameraコマンド

CPUカリングについて、適切に行われているか確認するための方法として、FreezeRenderingコマンドとToggleDebugCameraコマンドが存在します。FreezeRenderingに関してはカメラ情報をその場で止めてしまうコマンドで、ToggleDebugCameraについては、ゲームで設定しているカメラとは別に自由で動けるDebug用カメラを使用するモードに切り替えるコマンドです。コマンドはゲーム中に"@"キーを押すことで入力用のコンソールが表示されるので、こちらに入力することで不要なものが残っていないか確認する事が可能です。
freezeRenderingGIf.gif

対策方法

GPUに不必要なものを送らないための対策としては、メッシュのBoundsを適切に設定することが必要です。
(Boundsをもとにカリングを行っています。)
Boundsはメッシュごとに自動で設定されていますが、Sphereで近似されるため細長いメッシュだと非常にでかくなり、常にGPUに送られてしまうといったケースが存在します。
Boundsは、[表示] > [詳細設定] > [バウンズ] で表示が可能です。
2019-12-04_15h08_16.png

対策としては細長いモデルについては分割する方法や、メッシュの設定で**[詳細] > [Rendering] > [Bounds Scale]**よって調整を行います。
2019-12-04_15h20_30.png

おわりに

適切にモデルの設定を行い処理負荷を軽減しましょう。

12
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?