我使用我的alpha通道作爲8位整數索引來處理與混合無關的事情,所以我想仔細控制位值。特別是,我需要一個具有特定Alpha值的FBO渲染紋理中的所有像素來匹配着色器中具有相同Alpha值的所有像素。經驗教會我在比較浮點值的時候要格外小心......片段着色器輸出值
雖然使用浮點數設置顏色值vec4可能不會引起我的問題,我的理解是即使是半精度的16位浮點數也會能夠區分所有8位整數(0-255)值。但我寧願在片段着色器中執行整數運算,所以我確定了這些值。
我可能通過在片段着色器中執行整型運算來產生性能命中嗎?
輸出如何縮放?我在某處讀到將整數向量作爲片段的顏色輸出發送是有效的。但它是如何縮放的?如果我用0-255的整數發送一個uvec4,它是否可以適當調整呢?我希望它可以直接將整數值寫入像素格式,對於整數格式我不希望它進行任何縮放。也許對於RGBA8,發送大於255的整數值會將其限制爲255,並將負整數限制爲零,依此類推。
由於我無法通過打印出顏色值進行調試,因此難以實現此問題,除非我抓取渲染圖像並仔細檢查它們。也許我可以畫出一個明亮的顏色,如果有什麼不匹配的話。
Here是我在該主題中找到的相關主題。它比以前更讓我困惑。
請注意,該線程是從2004年開始的。從那時起,很多開發工作都在GPU領域完成。即現在支持整數(圖像)緩衝區和按位操作。所以你在使用這些時清楚。 – datenwolf 2012-01-14 18:00:22
啊我沒有注意到這一點。謝謝,這當然是一個非常**的舊討論...所以我該怎麼做?我可以在整個管道中使用整數,還是在設置最終碎片顏色之前仍然需要轉換爲浮點數?我只是特別感興趣的是將我的FBO顏色緩衝區上的alpha通道設置爲我的color屬性中指定的具有無符號字節的特定整數值。 – 2012-01-14 18:10:41