2017-02-15 61 views
6

我創建了一個簡單的項目,其中約。在場景中創建7000立方(使用VR相機),但問題是,當我移動相機看到所有立方體時,FPS變得非常糟糕,例如5-6幀。我的電腦是搭配GTX 1070的i7,並且我認爲它必須繪製數十萬個立方體而沒有任何問題。真的,我看到了我的世界,看起來像沒有問題來繪製立方體))團結產卵很多在運行時對象的運行速度慢

所以問題是可以優化場景,以便所有的立方體都可以繪製一個調用或者什麼東西來提供良好的性能?

實際上,我所做的所有立方體的靜態和沒有紋理的唯一標準材料...

這是現在的樣子: enter image description here

我使用的是默認的定向光,它會善於不改變標準着色器,因爲它在光照下工作很棒。

這裏是我要生成多維數據集:

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; 
} 

這是統計數據的截圖: Stats screenshot 我這裏有41 fps的,因爲我把相機從立方體遠有乾淨的背景的統計數據面板。實際上,在我製作立方體「靜態」之後,FPS取決於屏幕上是否顯示立方體。

+0

什麼樣的照明,你有嗎?你是否起訴實時GI?標準着色器也相當昂貴,因此作爲優化的第一步,我建議將其更改爲過時的漫反射。 –

+0

我的世界沒有像立方體那樣多的物體。他們將立方體合併爲只有一個網格。所以一個(例如)256個立方體的網格。這正是你可以做的,但是既然你說立方體可以移動,你需要爲每個移動重新生成所有這些,所以這不是解決方案。 – Alaanor

+0

請向我們展示您的代碼並生成多維數據集。此外,在遊戲視圖中,按右上角的統計信息並顯示統計窗口的屏幕截圖。林懷疑渲染繪製調用將會非常高 –

回答

5

的問題很可能是你個人實例化對象的數量造成的。如果多維數據集在生成後不改變它們的轉換,你應該能夠使用StaticBatchingUtility將它們合併成一個批處理。多維數據集生成後

調用此。

StaticBatchingUtility.Combine(GameObject cubesRoot); 
+0

看起來像它的工作原理,但現在......經過一些調整,我有FPS〜35時,所有多維數據集都顯示在屏幕上,並且〜55,如果我加入你提到的代碼StaticBatchingUtility.Combine(GameObject cubesRoot);那麼,我能得到的最大收益是多少? – Vetal

+0

這是你猜測的主要原因。將着色器更改爲更輕的東西。也請勾選這是一個正確的答案 –

相關問題