2011-04-27 38 views
1

我正在爲XBOX 360開發,我在某些照明計算中使用pow()內在函數。在着色器中的Pow函數與查找紋理

6-8年前它used to be common使用1D查找紋理近似pow()。有沒有人仍然這樣做?

6年前的XBOX 360值得嘗試嗎?還是不太可能提高性能?

+0

你究竟是否像素着色受限?刪除個別指令是非常微觀的優化。即使你的像素着色器有限,你也可以找到更好的地方來提高性能。 – 2011-04-28 05:03:01

+0

我試圖讓另一個點光或兩個入場,是的。 – Olhovsky 2011-04-28 11:13:54

回答

3

使用pow instruction(或HLSL中的等效函數intrinsic)。它需要3個指令槽,這表明它合理快捷。

我還沒有坐下來弄清楚查找表的確切成本。但是你會很難在更少的指令槽中找到有用的實現。顯然它需要一個紋理讀取(本身不是免費的,並且很有可能它將是一個依賴於紋理的讀取,所以非常慢)。

(另外:如果參照紋理是一個更好的選擇,那麼GPU可以只實施pow指令一樣,本身)

,它曾經是共同使用一個紋理的原因是pow指令在着色器模型1.x中不存在vertexpixel shaders。在2.x和更新版本可用(more instruction sets)。

+0

我對360的GPU一無所知,但查找紋理[仍然相關](http://www.google.com/url?sa=t&rct=j&q=2001+all+voer+again+aras&source=web&cd = 1&VED = 0CCYQFjAA&URL = HTTP%3A%2F%2Faras-p.info%2Fblog%2F2011%2F02 2F01%%2Fios着色器-技巧或 - 其-2001-全過)。 – Jessy 2012-02-01 21:28:31