質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CPU

CPUは、コンピュータの中心となる処理装置(プロセッサ)で中央処理装置とも呼ばれています。プログラム演算や数値計算、その他の演算ユニットをコントロール。スマホやPCによって内蔵されているCPUは異なりますが、処理性能が早いほど良いとされています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

2回答

3271閲覧

一定のCPU性能でのシーン上のポリゴン数上限の求め方

911RSR

総合スコア13

CPU

CPUは、コンピュータの中心となる処理装置(プロセッサ)で中央処理装置とも呼ばれています。プログラム演算や数値計算、その他の演算ユニットをコントロール。スマホやPCによって内蔵されているCPUは異なりますが、処理性能が早いほど良いとされています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2021/09/30 03:15

編集2021/10/02 13:01

Unityで3Dゲームを開発しています。

とあるCPUの性能(Core i7-9750H)において、30fpsでの描出を可能とするシーンのポリゴン数の上限を知りたいです。

なかなかグーグルを調べても出てこないので困っています。

Cinebench R15スコアはあるので、この30万ポリゴンのシーン描出にかかった時間の生データを知れたら十分かと思ったのですが、スコア表示のみの結果で何秒かかったのかはわかりません。

10/2追記

実際にゲームは完成済みで、シーン上のポリゴン数も20万とかなり多いのですが、FPSも50は出せています。
ただ、このことに理論的な裏付けが欲しいのです。もちろんCPU、GPU単独で決まるものではなく、マテリアルの数にも依存することは理解しております。

このCPU性能でGPUは内蔵GPUを使用している状況で、すなわちCINEBENCH R15 スコアいくつの性能で、シーン内に何万ポリゴン以下だと30-60FPSは出せる、という根拠が欲しいと思っております。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bboydaisuke

2021/09/30 03:28 編集

そんなことを知ってどうするの、なんでそんなことを知りたいの、GPU の事は考えないの、FPS を維持したいならポリゴン数だけじゃなくテクスチャとかマテリアルの方も大事じゃないの、とか思いました。
guest

回答2

0

実際にやってみよう。

まあ、それはCPU性能だけで決まるもんじゃないので、一口にこんだけ、ってのは無理じゃないかと思いますが。

投稿2021/09/30 05:07

y_waiwai

総合スコア87719

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

911RSR

2021/09/30 09:03

ご回答ありがとうございます。 実際にゲームは作成して、「やってみた、できた」の状態ではあり、FPSも50は出せています。 ただ、このことに理論的な裏付けが欲しいのです。もちろんCPU、GPU単独で決まるものではないのは理解しております(なにがCPU担当で、何がGPU担当か、を即答するのは難しいですが。。) このCPU性能でGPUは内蔵GPUを使用している状況で、理論的にシーン内に何万ポリゴン以下だと30-60FPSは出せる性能であり(←ここの裏付けが欲しいです)、実際シーン内のポリゴン数はいくつなので50FPS出せています、という根拠が欲しいのです。 わかりにくくて申し訳ありません。
y_waiwai

2021/09/30 09:09

ならそれを質問に追記してはどうでしょう。 いまの丸投げの質問よりは理解は得られるんではないかと。
911RSR

2021/10/02 13:02

丸投げと捉えられ得る聞き方をして申し訳ありませんでした。ご助言の通り追記させて頂きました。
guest

0

ベストアンサー

昔は描画速度をポリゴン数で測っていました。今は、違いますね。
その原因の1つは、測定条件の記述が現実の問題を離れたからでしょう。論理的な裏付けが必要なら測定条件にも限定が必要です。例えばこんな感じ。

  1. 単位時間以内に、描かれる重ならない3角形の数を数える。
  2. ポリゴンの形状は、頂点の2次元座標で与えらる。座標は、16bitの整数とする。(ポリゴン毎に96bitになる)
  3. 描画するときに、3x3のアフェイン変換する。行列式の係数は、16bit 固定小数点とする。
  4. 描画の際に画面サイズを考慮しない。
  5. ポリゴンの内側の色塗りは考えない。

これだとほぼ純粋に乗算器の個数に比例する。NVIDIAのデバイスの場合、たぶんFP32で50Tflops くらいでていそうで、FP32乗算一回で、int16乗算3回くらいできそう。すると、150T 乗算/sec.
上の条件で1つのポリゴンの頂点位置を計算する計算量を考えると、結局行列の大きさになって、9乗算/ポリゴン。現在のハードウエアのトレンドからすると、加算は考慮する必要はない。
すると、

150T / 9 = 16.6T polygon / sec.

個数が莫大だと、メモリ、PCIeバスの速度のために頭打ちになる。
ポリゴンが完全にパックされてバスを転送されるとすると、ポリゴン当たりのデータ量は、

3 x 2 x 16bit = 12 B/polygon

PCIeバスの速度が、32レーン、PCIe 3.0 だと、PCIeバスを通過できるポリゴンの数は、

32 x 16Gbit = 64GB/sec => 64GB/sec / 12B/polygon = 5Gpolygon / sec

残念。PCIeバスが遅いので、こんな単純な描画じゃデバイスの性能を生かしきれない。
しかも、この描画プロセスがバスを専有できることもないから、実際の描画量はもっと減る。

現実のゲームの描画では、始めの過程は大きく違う。たぶんこんな感じ?

  1. ポリゴンは3次元で座標は、FP32 or FP64.
  2. ポリゴンには、表面があって、表面に、入射光の周波数に合わせた透明度、反射係数のような属性がある。
  3. ポリゴンはお互いに重なるので、陰面処理が必要。
  4. 描画時には、グラデーション効果がある色塗りが必要で、アンチエイリアス処理も行う。

各ポリゴンの全部のデータがPCIeバスの流れるのではなく、キャッシュされたり、複数のポリゴンが、同じ表面の属性をもっていたり、複数ポリゴンの頂点が共有される。

しかも、全部のポリゴンが正確に再計算されるのではなく、少しくらいの計算ミスは許され、後方にあるポリゴンは始めから計算対象ではなかったりする。cudaなり、stream なり描画ライブラリの性能にも依存する。

という今のゲームの要求を考えると何がなんだかさっぱりわからないからでは?

投稿2021/10/05 00:45

gm300

総合スコア580

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

911RSR

2021/10/17 08:37

知識が乏しいものに対しても大変ご親切で明晰なご回答誠にありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問