計算Cube Map的SH係數

來源:互聯網
上載者:User

DX提供了一組用來操作Sphereical Harmonic的基本函數,如D3DSHAdd、D3DSHDot、D3DSHEvalDirection等;其中有一個是D3DSHProjectCubeMap,用來從CubeMap投影得到對應的SH係數,還是蠻有用的。一般情況下,在遊戲情境中需要使用Light Probe時需要設定不同的採樣點,然後產生對應上的Probe並計算SH係數,這些SH係數用來Realtime Compute環境光線對物體的影響。計算Probe的SH係數有一般有兩種方法:

  • 使用Ray-Tracing的方法:直接從Probe所處的位置上向外進行光線發射並求交得到球面採樣點上的環境採樣值,並做球諧係數的計算。一般來說這種方法可能比較麻煩,甚至會比較慢,特別是在遊戲中所使用的情境較大、且引擎並不直接支援光線跟蹤時更為不便;
  • 使用Raster Cube-Map的方法:首先使用GPU渲染管線產生Probe位置上的一個Cube-Map,然後在此Cube-Map的基本上計算該點所對應的SH係數。一般來說,在引擎的情境編輯器中可能已經整合了產生Cube-Map的功能(因有許多地方會用到Cube-Map,比如各種靜態反射等),因而此種方法使用起來就很方便,只需增加一個從Cube-Map到SH的計算即可。

從Cube-Map計算其對應的SH係數也同樣有兩種方法:第一種同樣類似於光線跟蹤,只不過這裡可以直接從Cube-Map對應的Texture中採樣到相應光線方向上的情境資訊,當然,這需要額外實現一下,但是卻可以更加靈活地控制採樣數量等一些參數;另一種方法就是使用DX提供的D3DSHProjectCubeMap來直接進行計算。其傳入兩個參數:SH的Order以及Cube-Map貼圖,返回對應Order上R、G、B三個通道上的SH係數(注意要根據SH的Order傳入足夠的係數空間)。簡單試用了一下,效果還可以(計算出SH係數後再重建):

當然,這個不只能Light Probe能夠用上,其它諸如Irradiance Environment Map等的計算同樣可以這樣操作。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.