在渲染模擬中,半透明物體是比較復雜的,對于延遲渲染也是如此。今天微妙網渲染跟大家一起來聊聊延遲渲染中半透明物體的做法吧。 這里所說的半透明物體并非使用alpha mask的物體(比如葉片),而是想使用alpha blend的物體(玻璃,水面),因為延遲渲染天生對處理alpha物體的光照有缺陷(如果半透明物體需要關照也是單獨完成),所以要使用 front shading做單獨處理,然后再與延遲渲染進行Depth Test和Alpha Blend,也就是所化框架圖的顏色混合那一步驟。 游戲中使用的最多的半透明物體就是水,自然界中的水會對水面以下的東西進行擾動,這一點上延遲渲染可以發揮作用,在光照階段將不透明的物體均渲染得到的紋理Buffer,我稱為LightColorBuffer,將LightColorBuffer作為紋理貼在水面上,再根據法線對該紋理進行擾動,這樣我們就得到一個廉價又美觀的折射效果,再配合方向光的光照(主要是Specular)就得到一個不錯的水面效果,另外還可以通過獲得G-Buffer中的高度數據來實現水面的自動深度。 ![]() 對于延遲渲染技術微妙網渲染還是比較重視的,今后也會分享更多有關延遲渲染的教程與文章,希望大家好好看、多學習學習吧。 |