OpenGL 具有深度恢复的SSAO
生活随笔
收集整理的這篇文章主要介紹了
OpenGL 具有深度恢复的SSAO
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
OpenGL具有深度恢復的SSAO
- OpenGL具有深度恢復的SSAO簡介
- 源代碼剖析
- 主要源代碼
OpenGL具有深度恢復的SSAO簡介
在上一教程中,我們研究了屏幕空間環境光遮擋算法。我們使用了一個幾何緩沖區,其中包含用于第一輪計算的數據-屏幕空間中每個像素的坐標。在本教程中,我們將嘗試直接從深度緩沖區中計算屏幕空間中的位置。這種方法的優點是所需的內存明顯減少,因為將只使用一個浮點數而不是三個浮點數。本教程建立在上一個教程的基礎上,因此請確保您完全理解它。上面的代碼僅是對先前算法的更改。
在SSAO算法中,我們逐像素掃描窗口,在屏幕空間中的每個像素周圍創建隨機點,將其投影到接近裁剪的平面上,并將其Z值與該位置的像素本身進行比較。屏幕空間中的位置是在渲染循環開始時在幾何圖形通道中生成的。為了用屏幕空間中的位置正確填充幾何緩沖區,我們還需要一個深度緩沖區(否則,像素將根據繪制順序而不是深度進行更新)。我們只能使用此緩沖區來重構整個位置矢量,從而減少為此所需的內存(盡管我們將需要更多的數學運算)。
讓我們看一下填充深度緩沖區所需的步驟(或者,如果您需要更多詳細信息,請參閱第12課)。我們從頂點在對象空間中的位置開始,再乘以WVP矩陣,該矩陣由投影到近裁剪平面上的局部到世界,世界到屏幕的變換組成。結果是一個4D向量,其中屏幕空間中的Z坐標為第四分量。我們認為此向量當前位于快船空間中。將此向量寫入來自頂點著色器的輸出向量gl_Posi
總結
以上是生活随笔為你收集整理的OpenGL 具有深度恢复的SSAO的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenGL GLFW
- 下一篇: 霸气二字的网名有什么?