2017-01-07 10 views
1

私は現在、Three.jsを使用しているゲームに取り組んでいます。私はソフトウェアエンジニアリングを4年間勉強していましたが、バックエンドでは2人で専門的に仕事をしていましたが、シンプルなUnity実験以外にグラフィックはほとんど触れていませんでした。Three.js:普通のデスクトップで60 FPSを保持する上限はいくらですか?

私は現在、renderstats.jsに従って〜22,000の頂点と〜8,000の面を持っていますが、私のデスクトップ(平均以上)では20 FPSを超えることはできません。私はLambert素材と単一の環境光を使用していますので、あまりにも多くの質問をする必要はありません。

これらの数字を念頭に置いて、これはthree.jsレンダリングの予想される動作ですか?

+2

コンソールに 'renderer.info.render.calls'と入力してください。価値は何ですか? – WestLangley

+0

私は約5,500ドローコールを見ています。 – DonutGaz

+0

不思議ではありません。それはあなたの問題だ。 – WestLangley

答えて

6

私は、この行の終わりではないと確信しています。大量のパフォーマンス向上の可能性があります。

しかし、単に最初にあなたにいくつかの数字を与えるために、

  • あなたは(three.js含む)離れて派手なすべてのものを残して、ちょうどポイントごとにレンダリングされた一つの断片で超簡単なポイントクラウドをレンダリングする場合は、平均的なGPUで10〜20百万(yes、million)のポイント/頂点を簡単にレンダリングすることができます。

  • 単純な形状と材料で、私はすでにthree.jsを得て、60FPSで500k三角形(1080p解像度)の範囲で問題なくレンダリングしました。最新のハイエンドGPUの場合、それらの数字を10倍にすることができます。

ただし、この種の数値は実際には役に立ちません。

いくつかのヒント:あなたは、あなたのレンダリング性能をデバッグしたい場合は

  • は、あなたが最初のいくつかの指標を追加する必要があります。 Renderstatsは良いですが、これにはhttp://spite.github.io/rstats/を統合することをおすすめします(see the example)。

  • 一般的に材料の選択はあまり重要ではありません。GPUは、ほとんどの人が考えるよりも優れています。これは、パイプラインの他のどこかに問題がある可能性が高いです。 EDITコメント:一部のケースでは、低速GPU(モバイルデバイスと考える)の高解像度ディスプレイのように、これはあまり真実ではないかもしれないし、複雑なシェーダコードによってサイトが減速する可能性もありますが、最初。レンダリング自体はスレッド外で行われるため(devtools-profilerのような通常のツールを使用してデュレーションを測定することはできません)、EXT_disjoint_timer_query拡張を使用してGPUで何が起こっているのかに関する情報を取得できます。

  • the number of drawcalls shouldn't be too high:すべてのMeshPointsシーンでレンダリング-objectとあまりにも多くのオブジェクトに対して単一drawcallを行う必要があるthree.jsは、一般的に、頂点のたくさんのオブジェクトよりもはるかに大きな問題です。ドローコールの数を減らすには、複数のジオメトリを1つにマージし、マルチマテリアル、頂点カラーなどを使用します。

  • 後処理を行っている場合、GPUは画面上のすべてのピクセルを数回レンダリングする必要があります。これにより、パフォーマンスが大幅に制限される可能性があります。これは、複数の後処理パスを1つにマージすることで最適化できます(私はそれが大変な作業であると認めます)。)

  • 別の問題がJS側にある可能性があります。クロムdevtoolsのプロファイラまたはタイムラインビューを使用して、フレームごとに時間がかかりすぎるかどうかを確認する必要があります1フレームあたり8-12ms)。私は、javascriptのパフォーマンスを最適化する方法もあると言われました:)

+0

詳細な応答をありがとう。私の場合は、静的なランドスケープメッシュをマージすることによってdrawコールの数を減らしています。 – DonutGaz

+1

モバイルGPUはそうではありませんが、重要な選択は依然として重要です。デスクトップ上でさえも、HI-DPIスクリーンを搭載したデスクトップが多数登場し、Intel GPU – gman

関連する問題