- 拍射反射貼圖:
跟BoatAttack一樣,設計一個ReflectionProcessor,繼承IBeforeCameraRender介面,將其掛載在MainCamera,產生拍射反射的射影機物件,並實作ExecuteBeforeCameraRender,依照帶進來的射影機計算反射矩陣,且呼叫LightweightRenderPipeline.RenderSingleCamer進行渲染,取得反射貼圖。 - 渲染水平面深度貼圖(基於高度):
BoatAttack的做法是採用另一個拍射深度貼圖的射影機,進行一次Camera的渲染,
我覺得這樣做的方式的效率不是很好,自己是改用MultiRenderTarget的方式來進行渲染,用一次的Pass把相關的ColorBuffer及DepthBuffer生成出來,不過要付出的代價是要自行設計繼承IRendererSetup的客製化渲染流程物件。 - 產生折射用的背景圖:
跟BoatAttack類似,目前是在畫SkyBox後,將其拷貝出來,提供給之後攤提折射時使用。 - 後記:由於LWSRP很多Pass及DefaultRenderSetup,成員資料多半都設計成private,導致即使只是加一張RenderTexture,也要將整個類別重寫,導致很多Pass的設計都直接拷貝其相關代碼,產生了不少霉味(程式的壞味道…),但由於SRP目前都還在調整架構中,所以也不想完全自己整個重寫,以免之後還是會一直調整,也許等穩定之後,再自己寫一個Forward+試試看,附上相關的測試畫面。
SmallBurger encapsulates passion, convenience, and efficiency within its delicately crafted burger. Dedicated to delivering user-friendly rendering plugins and related tools that are simple yet effective.
2019年3月20日 星期三
如何在LWSRP下製作類似BoatAttack水面反射及折射處理?
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言