2011-04-19 126 views
2

我正在寫一個着色器,使場景中呈現的紋理產生模糊效果。 我需要在2場比賽中做到這一點,所以通過P0我做了一個水平模糊,並在通過P1的垂直。HLSL:多通道着色器?

的問題是:

  • 我怎樣才能得到通P0從PS輸出和發送輸入上通P1的PS?

如果我把它寫在一次通過我獲得預期的結果,但我真的需要做2回合。

任何人都可以幫助我嗎?

我的第一個方法是HLSL。

謝謝大家!

FOX_ITA

回答

5

你通常在應用程序邏輯的着色器代碼的那個之外。

  • 獲取渲染目標/渲染的紋理大到足以容納的P0
  • 結果啓用目標,使P0,運行第一遍
  • 獲得另一個渲染目標持有P1的結果。如果您正在進行全屏模糊處理,並且不需要進一步的後處理,則這通常是backbuffer。
  • 啓用新的渲染目標
  • 綁定第一渲染目標,以訪問P1
  • 執行第二次

(當然你不重新創建渲染貼圖指數/插槽目標每幀一次,我寧願使用一個渲染目標的中央池來滿足所有的後期處理需求)。

+0

THanks Alexander!我會嘗試這種方式!感謝您的提示! :) – user714921 2011-04-19 10:13:53

+0

@AlexanderGessler切換紋理通常很慢,因爲它需要綁定其他紋理。糾正我,如果我錯了? – bluejamesbond 2014-02-18 07:48:51