2013-03-22 46 views
0

我正在寫一個像素着色器,它具有屬性,對於給定的四元素,返回的值只會因u軸值而異。即對於一個固定的u,那麼當v變化時,顏色輸出是恆定的。只有u軸變化時纔有效的像素着色器?

計算顏色在一個像素計算是相對昂貴的 - 即確實每像素/環等多個樣品..

有一種方法採取V形不變性的優勢?如果我在CPU上這樣做,那麼你顯然只需要緩存一次計算出來的值,但由於並行性的原因,這種猜測並不適用。我可能會將紋理生成移動到CPU端,並讓着色器訪問Texture1D,但我不知道這將是多快。

有沒有適合GPU卡上的這種情況的範例?

歡呼

+0

如果您將1d紋理存儲爲常量緩衝區,那麼您可能會發現一個勝利...... – Goz 2013-03-22 18:55:21

回答

1

在一維紋理存儲你的數據,並在你的像素着色器採樣看起來像一個很好的解決方案。您的GPU將能夠使用紋理緩存功能,從而可以利用這樣一個事實,即許多像素使用的是來自1D紋理的相同值。這應該是非常快的,紋理抓取和緩存是您的GPU在渲染時如此高效的主要原因之一。

在計算像素着色器中的值或使用查找表紋理之間進行折衷是一種常見做法。您正在通過它的聲音進行復雜的計算,因此使用查找紋理並肯定會提高性能。

請注意,您仍然可以通過GPU生成此紋理,因此無需將其移動到CPU。只需使用現有着色器代碼作爲預備渲染到此1D紋理。

相關問題