1
有沒有方法讓着色器查詢紋理讀取中像素塊的總和/平均值,而不是查找單個值?我在Cg工作,但歡迎任何示例和搜索條件。着色器可以對紋理中的像素塊/區域進行採樣嗎?
我特指內置的方式,不在我的着色器中手動循環。
有沒有方法讓着色器查詢紋理讀取中像素塊的總和/平均值,而不是查找單個值?我在Cg工作,但歡迎任何示例和搜索條件。着色器可以對紋理中的像素塊/區域進行採樣嗎?
我特指內置的方式,不在我的着色器中手動循環。
不是。
您可以做的最好的是ARB_texture_gather extension(核心在GL 4.0 +)/ D3D10.1's gather function。
這允許您從2x2塊紋素中取出,但一次只能得到一個組成的紋理。此外,純粹的擴展/ D3D10.1版本可以只有獲取紋理的紅色組件。 GL 4.0/D3D11.0版本可以獲取這四個組件中的任何一個,但每次調用只會獲取一個。
當然,你必須自己對2x2塊進行平均。
唯一真正可行的選擇是做Lyth說的:爲你的紋理生成mipmap並從它們取樣。紋理訪問函數可以從特定的mipmap中獲取,該mipmap表示特定像素範圍的平均值。當然,這些也是有限的。
你可以建立一個mipmap並在特定的水平上採樣紋理嗎?正方形塊的三線採樣是必須的,但我不知道如何使用各向異性過濾來對非方塊進行採樣。 – Lyth 2011-12-15 14:55:34
MipMaps可能是一個很好的電話。我確實希望以較低的分辨率對紋理進行採樣 - 唯一需要注意的就是渲染紋理,我正在使用post = process效果,然後將輸出轉換爲帶有後期着色器的全屏四邊形。 – 2011-12-15 18:03:33