我需要設置GLSL片段着色器來更改當前正在處理的片段以外的片段的顏色。由於這可能不太合適,我將提供一個非常簡短的上下文。通過GLSL設置鄰居片段顏色
該項目利用渲染通道,由此給定的模型被繪製到具有與紋理貼圖中的UV座標對應的唯一顏色的FBO中。然後對這些顏色進行採樣並轉換爲圖像座標,以便可以根據相機可見的內容更新模型的紋理貼圖。本質上:
Render model to FBO
For each FBO pixel
1. sample secondary texture based on FBO pixel position
2. convert color at current pixel to image coordinate for the model's texture map
3. update model's texture with sampled secondary texture at calculated coordinate
End loop
問題是,目前的實現是非常CPU綁定,所以我讀取的FBO像素,然後操縱它們。理想的情況下,因爲我已經在片段着色器中使用了片段的顏色,所以我只想在流程的最後幾個步驟上加以注意,並將所有內容保留在GPU上。
我遇到的具體問題是我不知道如何(或者甚至有可能)讓片段着色器設置它未處理的片段的顏色。如果我不能通過使用一個特大的FBO來工作,只是抵消了我想設置顏色的片段,我可以直接寫入紋理嗎?
任何幫助/建議,非常感謝。謝謝!
嗯..這是一個非常有趣的想法。湯米的方法更符合我已經實施的方式,所以我認爲我會先投入一些。不過,我也可以試試這個。 – Xenethyl 2011-02-23 23:15:41
@ Xenethyl。我可能沒有完全理解你的任務,但從我所看到的 - 分散不能以@Tommy描述的方式實現。所以如果你認爲他的想法符合你的需求,那麼繼續下去,當然,因爲它比我的簡單得多。 – kvark 2011-02-24 00:01:02
今晚晚飯後我想到這件事後,我開始意識到如何做乒乓球傳球並不能真正解決我的問題。我不知道你的解決方案是否適用於我目前的設置,但我認爲這比Tommy討論的更正確。現在我已經將這標記爲已接受。謝謝你指出我的誤解。 – Xenethyl 2011-02-24 03:03:19