2012-05-30 43 views
2

使用PVRUniScoEditor來描述我們的像素着色器,我發現我們的碎片着色器對於大多數多晶硅進入了大約20個週期,而對於粒子則是6-8個。這似乎是我們獲得體面表現的黃油區域,但我現在想知道是否通過使這些着色器儘可能簡單來掩蓋其他問題。我很高興在這些傢伙中擁有更多的功能。我們正在渲染一個大約120k多邊形的場景,並且使頂點着色器變得更重,對性能幾乎沒有影響。對於iPad2,有多少像素着色器週期要沉重

所以我想我想知道多少太多的一個非常嚴重的碎片着色器和多少太多多明智的30fps。

回答

1

沒有一個正確的答案。雖然PVRUniScoEditor是用於着色器性能的相對估計的好工具,但您不能僅僅說一個消耗X估計週期的片段着色器會導致給定設備上的Y幀率。

特定着色器可能有多沉重只是拼圖中的一個部分。屏幕上會覆蓋多少片段?片段處理方面的性能瓶頸(OpenGL ES驅動程序工具中的渲染器利用率接近100%)?混合是否啓用?所有這些因素都會影響渲染幀的時間。

iOS上的基於圖塊的延遲渲染器也具有一些有趣的性能特徵,其中調整特定片段着色器的週期數並不會導致渲染時間發生線性變化,即使對於填充率限制的應用程序也是如此。你可以在this question of mine中看到一個這樣的例子,其中我遇到了片段着色器的輕微變化時的突然性能變化。在這種情況下,調整着色器並不是主要的解決方案,可以防止不必要的碎片混合。

除了由輪廓儀報告的直線循環數外,還有紋理帶寬的侷限性,以及我在這些着色器中發現緩存未命中的嚴重後果。

我想說的是,知道應用程序中的着色器的性能將唯一真正的方法是運行它們並查看。有一些提示可以用來調整速度不夠快的東西,但是有太多的變量,每個解決方案都是特定於應用程序的。

+0

這是一個非常公平的答案。在我深入研究這個問題之前,我曾希望得到一些指標或類似的東西,但我會採取你的回答,並且現在就與它合作:) –