ゲームエフェクトデザイナーのブログ | A Real-Time VFX Artist's Blog

About Making Materials on UE, Making Tools with C#, etc

処理速度と処理量のお話 ms(ミリセカンド)について

UE4ではパフォーマンスを測るコンソールコマンドが色々と用意されていますが、それらの項目でよく見かける単位が「msミリセカンド)」だったりします。

▼ UE4のコンソールコマンドで "stat unit" と "stat particles" を入力した状態f:id:moko_03_25:20141019032442j:plain
これって一体何の単位でしょうか?

m(ミリ)」は1/1000を表します。

mm(ミリメートル)」は1/1000メートル。
ml(ミリリットル)」は1/1000リットル。

そして「ms(ミリセカンド)」は1/1000秒のことです。

CPUやGPUのパフォーマンスを計測する場面では、つまり処理にかかる時間を示しています。
(それ以外にも通信速度とか、色々な場面で使われていますね)

さて、それが分かったところで一体、1msや10msはどの程度の処理量なのでしょうか?

そこでゲームでは定番のフレームレート、30fpsで考えてみます。
30fpsは1秒に30フレーム計算したり描画したりする単位ですよね。
ゲームプレイで30fpsを実現するには、msに換算すると1フレーム33.333...ms以内でコントローラーからの入力を受けて画面を描画するまでの一連の処理を行わなければいけない・・ということになります。

意外と少ないですね・・。

しかも60fpsを目指すとしたら、さらにその1/2の16.666...msを目指す必要があります。
先程の図では、右上の白字「Frame」が8.36msを示していますが、約120FPS出ています。
33.33msで30fps。16.66msで60fps、8.33msで120fps。合ってますね!

色んなタイトルの事例など聞いていると、例えば「ポストプロセスは全体の処理の10%」みたいな話が挙がったりします。
30fpsが出ているとして、とても単純に33.333..の10%とすると3msほどの時間がかかっている・・ということになります。
なるほど、なんとなくmsの値がどれくらいの処理量なのかイメージできます。

CEDEC2014の1日目には、UstreamのLive配信で「俺屍2」のメイキングがありました。
30FPSを目標に作られ、20~30FPSを実現しているとのことでしたが、そこでフォワードレンダリングに20ms、ポストプロセスに8msという数字が出ていました。
つまり、30FPSであれば25%近くポストプロセスに割いているということで「ポスプロにかなり重きを置いているのだな~」ということがなんとなく分かります。

※ちなみに自分の作業マシンで起動しているUE4上でパフォーマンスを計測したところで、ターゲットとするプラットフォーム上でどうなのかは分からないのでご注意を・・

ということで「msミリセカンド)」のお話でした。

おまけ:
 UE4公式マニュアル:パフォーマンスおよびプロファイリング , Stat Commands