屏幕空間反射

    屏幕空間反射(Scene Space Reflection,SSR)又叫實時局部反射(Realtime Local Reflection,RLR),最先見於2011年Crytek在Siggraph的Course《Secrets of CryENGINE 3 Graphics Technology》。傳統的反射是以平面或Cubecmap來處理反射信息,Cubemap更多的是處理靜態反射環境。SSR作爲補充,實現了以較低的開銷在不規則表面的動態反射問題。算法

    SSR的基本原理很簡單,基本思想爲:優化

    .逐像素地計算反射向量,對於DefferedShading來講能夠簡單使用G buffer中的depth 和 normal求出orm

    .追蹤反射射線,具體作法爲從反射點沿反射方向按步進,採樣步進點的depth 並比較採樣點depth和步長方向的depth進行求交,若是兩個depth之間距離小於偏差範圍,則認爲相交it

    .對於有相交點的光線,採樣上一幀該點的顏色,採樣顏色以混合方式貢獻到目標反射點最終着色中io

    除了基礎的SSR算法,Crytek還提供了一些基本的優化手段:基礎

    . 使用Jitter後的步長行步進,能夠在必定程度上規避固定步長帶來的走樣原理

    . 對SSR的結果進行Filter,獲得更平滑的結果渲染

    . 基於和視點距離和屏幕距離對SSR進行淡出處理,離視點反射越遠,反射越模糊bem

   目前關於SSR的實如今各大引擎裏也各不相同,Cryengine最初的算法只要屏幕depth小於步進點depth就以屏幕當前點做爲反射點,而UE4裏的實現會更有更精確的光線求交---當depth之間的距離小於指定偏差纔看成交點。SSR的射線追蹤在發現當前採樣depth小於反射射線depth時,回塑進行二分查找近似的交點。Klayge的SSR實現是在uv空間進行步進,而不少其它實現則多在投影空間步進。map

   此外,2014的Siggraph上,Killzone的Course《REFLECTIONS AND VOLUMETRICS OF KILLZONE SHADOW FALL》比較系統地介紹了Killzone怎麼把SSR結合到渲染管線裏去,及怎麼實現基於圖像的視差正確的局部反射。

相關文章
相關標籤/搜索