2013-05-04 120 views
1

我正在處理可能有多個相交透明對象的場景。這使得排序和繪製回到前面的標準方法有問題(即使排列三角形在三角形相交時也不起作用)。所以我使用GLSL片段着色器實現了深度剝離,以進行第二次深度測試。這非常棒。GLSL玻璃效果加深度剝離

現在我想能夠使用着色器應用某些效果。場景中的一個對象是一個注射器,我想申請一個玻璃效果。如果我回到前面,這很容易 - 只需在繪製注射器時啓動着色器,因爲它後面的所有內容都已經在幀緩衝區中。但是,使用深度剝離時,此方法無效。

所以我的問題是:使用的深度剝離時

  1. 如何我申請的渲染效果到單個對象中的場景?
  2. 如何將效果着色器與我的深度剝離着色器組合(假設它們需要同時運行)?

我應該注意到,我在使用着色器方面很新穎,所以代碼示例非常感謝!

+0

「玻璃效應」是什麼意思?光學失真? – 2013-05-04 14:25:39

+0

我打算從光學變形開始,因爲那將依賴於瞭解玻璃後面是什麼,並且是我想要實現的其他幾個效果的一個好例子。最後我也會考慮應用折射/反射,但從我看到的需要不同的方法。 – Runt8 2013-05-04 17:41:58

回答

0

如果在沒有光線追蹤的情況下這是可能的,我會感到驚訝。據我所知,使用折射着色器的方式是在環境貼圖中進行紋理查找。這張地圖可以是預先計算的,也可以是在單獨的渲染過程中實時計算的。對於後面的選項,您需要一個單獨的環境貼圖和每個使用着色器的對象的額外傳遞。我有點懷疑,如果物體相互交叉,這是可能的。即使是這樣,對於這些傳球中的每一個,你都需要另外一對傳球才能進行深度剝離。現在,如果您還希望深度剝離着色器通過折射周圍物體的折射,這會很快失去控制。

+0

如果效果被應用到的對象保證不相交,這是否會改變事物? – Runt8 2013-05-05 01:00:22