2017-02-15 8 views
6

私は、 (VRカメラで)シーン内に7000個の立方体が作成されますが、問題は、すべての立方体を見るためにカメラを動かすと、FPSは非常に悪くなります。私のPCはGTX 1070を搭載したi7です。問題なく何千ものキューブを描画する必要があると私は考えました。実際には、私はミニクラフトを見ましたが、キューブを描くのに問題はないように見えます))実行時のオブジェクトの多数の産卵遅い

シーンを最適化して、すべてのキューブを1回の呼び出しで良いパフォーマンスを得るようにすることは可能ですか?

私は実際にすべてのキューブは、静的作られ、唯一の標準的な材料なしのテクスチャが存在しない...ここで

が今どのように見えるかですよ: enter image description here

私はデフォルトの指向性光源を使用していますし、それは希望光で偉大な作業をするので、標準的なシェーダを変更しないと良いです。私は統計のためにきれいな背景を持つように離れキューブからカメラを動かすので、私はここに41 fpsのを持って Stats screenshot

private void AddCube(Vector3 coords) 
{ 
    var particle = (Transform)MonoBehaviour.Instantiate(prototype.transform, holder.transform); 

    SetScale(particle); 
    SetPosition(particle, coords); 

    cubes.Add(particle.gameObject); 
    particle.gameObject.isStatic = true; 

} 

private void SetScale(Transform particle) 
{ 
    particle.localScale = new Vector3(Scale, Scale, Scale); 
} 

private void SetPosition(Transform particle, Vector3 coords) 
{ 
    particle.position = coords; 
} 

これは統計のスクリーンショットです:ここで

は、私はキューブを生成しています方法ですパネル。実際にキューブを静的にした後、FPSは画面に表示されるキューブかどうかに依存します。

+0

あなたはどのような照明を持っていますか?あなたはリアルタイムGIを訴えますか?また、標準的なシェーダはかなり高価ですので、最適化の最初のステップとして、それを古くなったDiffuseに変更することをお勧めします。 –

+0

Minecraftにはキューブほど多くのオブジェクトがありません。キューブをマージして1つのメッシュだけを実行します。たとえば、256キューブのメッシュです。それはまさにあなたができることですが、あなたがキューブを動かすことができると言われて以来、ソリューションごとではなく、それぞれの動きごとにすべてを再生成する必要があります。 – Alaanor

+0

あなたのコードをキューブ世代で表示してください。また、ゲームビューでは、右上のStatsを押して、統計ウィンドウのスクリーングラブを表示します。私が描画呼び出しを描画することが非常に高いと思われるIm –

答えて

5

この問題は、インスタンス化している個々のオブジェクトの数に起因する可能性があります。キューブが生成後に変換を変更しない場合は、StaticBatchingUtilityを使用してそれらを1つのバッチに結合できるはずです。

キューブの生成後にこれを呼び出します。

StaticBatchingUtility.Combine(GameObject cubesRoot); 
+0

は動作しているようですが、調整を行った後、FPS〜35が表示され、すべてのキューブが画面に表示されますあなたが言及したコードStaticBatchingUtility.Combine(GameObject cubesRoot);それで最大限私が得ることができますか? – Vetal

+0

これは私が推測する主な理由でした。シェーダをより軽いものに変更してください。また、正解としてこれをチェックしてください –

関連する問題