2012-07-02 37 views
0

過去幾天我一直在閱讀有關後處理的很多文章與花等,我能夠實現一個紋理渲染功能,這個質地運行通過sperate着色器。 現在我有關於整個事情的一些問題。澄清(的DirectX 10/11)

  1. 我是不是要渲染兩個?場景和紋理放在一個全屏幕的四邊形?
  2. 如何綻放,或任何其他後處理(DOF,模糊)這個紋理渲染功能的工作?或者這是完全不同的東西?
  3. 我真的不明白的背面和正面緩衝區以及如何進行後處理利用這一概念。
  4. 我看了一些關於體積光渲染,他們渲染喜歡與不同的顏色設置6次現場。這不是非常低效?或者我的理解不正確?

感謝任何人照顧解釋這個東西給我;)

回答

2

讓我試着來回答大家的一些問題

  1. 是的,你必須使兩者
  2. DOF通常通過在離屏緩衝區中渲染「模糊」因子來實現,其中後處理濾波器然後使用該因子來模糊某些像素比其他模糊更多(對銳化和模糊對象之間的顏色泄漏進行一些補償)。所以是的,基本的想法是一樣的,渲染到緩衝區,處理它,然後顯示它(有或沒有將它混合到原始場景的頂部)。
  3. 後臺緩衝區是您渲染東西(用戶將在下一幀顯示的內容)。所有離屏渲染都將完成到您將創建和使用的其他rendertarget。
  4. 我不太明白你的意思。請提供您閱讀內容的鏈接,以便我可以嘗試理解並可能對其進行解釋。
+0

我想我解釋說錯了。他們使用了6個不同的渲染目標(例如1個完全不亮的場景)。 你可以使用不同的渲染目標而不實際渲染到紋理嗎?只需立即處理它? 編輯:我試圖只渲染紋理,沒有任何改變..但我想這主要是因爲我沒有做太多與它,不是嗎? – puelo

+0

如果你的意思是「你可以使用不同的渲染目標而不渲染到後臺緩衝區」,那麼是的。這個想法是DX總是呈現給當前附加的渲染目標。如果你改變了它,而不是後臺緩衝區,那就這樣吧。在你調用** Present **之前,你最後要在後臺緩衝區中渲染最後的圖像。事實上,如果你有一個只需要緊縮數字的應用程序,甚至不需要將圖像渲染到後臺緩衝區或呈現任何內容。 – Ani

+0

我是否可以在着色器中使用不同的渲染目標,而無需將它們渲染爲紋理,或者我每次需要使用着色器通道時都必須使用這種渲染目標。所以例如我渲染場景1次或多次(也許用不同的光線設置)到不同的渲染目標,在着色器或其他東西中編輯它們,然後我只渲染場景和所有編輯過的部分到後臺緩衝區? – puelo

0

假設:

  1. 你有「亮度」爲每個渲染像素在一個單一的紋理

  2. 這個紋理保持,可以是大於1.0

    浮點值

現在:

您可以進行模糊通過(可能是單獨的模糊),只考慮像素值爲 的值大於1.0,並將模糊結果放入另一個 紋理。

最後:

在最後着色你做最後陳述篩選。您可以從「亮度」(夾緊爲1)中採樣 。0)和「模糊過剩亮度」 並添加它們,獲得所謂的布盧姆效應。

+0

所以我在紋理中渲染場景的亮度。我對這個紋理進行模糊處理,我只考慮值大於1.0的像素,並將紋理保存在另一紋理中的紋理之後。最後,我將這兩個紋理加在一起,並將它們渲染到實際場景中? – puelo

+0

您可以使用自定義着色器「將它們添加到一起」(在最終着色器中讀取亮度值時,請將亮度值限制爲1.0) – Gigi