當我在像素着色器中採樣紋理時,紋理單元需要根據被着色的像素周圍的紋理梯度來選擇mipmap。HLSL tex2D() - 漸變來自哪裏?
有一個功能tex2Dgrad()
,讓我提供的信息有關手動梯度和tex2Dlod()
,讓我手動選擇紋理貼圖,但如果我只是叫tex2D()
那麼哪裏額外的梯度信息從何而來?
tex2D()
紋理映射最常見的情況是在大多數着色器中使用,但我不知道漸變來自哪裏。 Mipmapping顯然起作用,所以它必須來自某個地方。
我想在使用計算U
和V
座標的像素着色器使用一個紋理作爲查找表,但我不希望有任何意外「魔力」在tex2D()
發生。
我需要使用tex2Dlod()
來避免這種情況嗎?我讀了tex2Dlod()
比tex2D()
慢。
它來自類似於'ddx'和'ddy'的「魔法」,應用於深度組件 – harold 2011-12-20 17:54:42
Harold ...與深度不同,它不能基於來自頂點階段的任何輸入。我可以計算像素着色器中的任意紋理(u,v)座標,並且mipmapping仍然有效。 – Jinstarr 2011-12-20 19:29:52
u,v座標不會影響mip級別 – harold 2011-12-20 19:37:41