我在寫一個延遲渲染器,想到幾件事情。渲染將至少進行兩遍:首先渲染位置,法線和漫反射+高光顏色爲三種不同的紋理。然後我在最後一遍合併這些光線,併爲每個光線做照明並添加後處理效果以產生最終圖像。這部分我雖然工作。(GLSL)渲染多個同時從不同的角度通過
問題在於:如何處理陰影?幼稚的做法是爲每個活動光線分別渲染一個深度圖。所以這意味着儘可能多的通行證,因爲有燈。這似乎擊敗了延期着色的全部目的,以一次完成所有照明。
如果我可以一次渲染深度圖,那麼一個更好的方法是。但是,這甚至有可能嗎?因爲要從不同的角度呈現場景,需要進行與主攝像機相同的剔除。因此,從每個光源的角度渲染需要與呈現主攝像機視圖一樣多的場景圖遍歷和頂點緩衝區綁定。所以這是非常昂貴的。
但是,這樣做的正確方法是什麼?根據多遍渲染陰影貼圖的標準方法是什麼?是否真的有必要爲每個會給場景帶來陰影的光線進行單獨的渲染,還是有更好更快的方法來計算所有陰影的總和。有沒有辦法在單個着色器通道中對多個幀緩衝區執行多個透視圖渲染?
另外我想這將是一個好主意,爲每個照明通道綁定兩個緩衝區:一個包含前一遍的結果總和和一個包含像素距離的結果。然後,所有照明過程的產品將成爲可傳遞給最終渲染過程的陰影強度映射。
最終渲染過程只會在整個屏幕上渲染一個單獨的四邊形,並在其上進行後處理和着色。所以至少有2 + 1次傳球。有8個燈光意味着每個畫面都要渲染10次?