我已經使用OpenGL和GLSL集成了綻放HDR渲染......至少我認爲!我不確定結果。HDR Bloom效果使用OpenGL/GLSL渲染管線
我跟着從英特爾網站上的教程:
https://software.intel.com/en-us/articles/compute-shader-hdr-and-bloom
而關於高斯模糊效果,我按照嚴格的所有關於此網站上表現的建議:
https://software.intel.com/en-us/blogs/2014/07/15/an-investigation-of-fast-real-time-gpu-based-image-blur-algorithms
根據第一網站:
「明亮通輸出然後由半的4倍縮小的每個縮減的亮通輸出都與一個可分離ģ模糊。高斯濾鏡,然後添加到下一個更高分辨率的亮通過輸出。最終輸出是1/4大小綻放它了採樣,並加入HDR輸出前的色調映射。」
這裏的花開管道(上述已拍攝的照片從NSight NVIDIA調試器)。
的決議在我的測試窗口的是1024x720(對於需要該算法的這個分辨率將縮減的4倍)
步驟1:
照明通(材料通+蔭罩通+天空盒通的混合) :
步驟2:
提取HIGHT光信息轉換成亮通(準確地說,生成4個的mipmap紋理(「明亮通輸出然後由半4倍縮小的」 - > 1/2 ,1/4,1/8和1/2最後)):
步驟3:
「每一縮減的亮通輸出的是模糊的帶有可分離高斯濾波器和n添加到下一個更高分辨率的亮通輸出中。「
我想精確地說明雙線性濾波是啓用的(GL_LINEAR),並且上圖中的破壞是紋理調整到NSight調試器的結果窗口(1024x720)。
一個)分辨率1/16×1/16(64x45)
「1/16×1/16模糊輸出」
b)第1/8×1/8(128x90)
「1/8×1/8縮減的明亮通,用1/16×1/16模糊輸出組合」
「1/8×1/8模糊輸出」
c)第1/4×1/4(256x180)
「1/4×1/4縮小的明亮通,結合1/8X1/8模糊輸出」
「1/4×1/4模糊輸出」
d)第1/2×1/2(512x360)
「1/2×1/2縮小的明亮通,用1/4×1/4模糊輸出組合」
「1/2×1/2模糊輸出」
要定位所需的利我使用FBO調整大小(但也許它會更聰明,使用已初始化大小初始化單獨的FBO,而不是多次調整相同的大小。你對這個想法有什麼看法?)。
第4步:
色調映射渲染通道:
直到這裏,我想對我的工作的外部建議。它是否正確?我並不確定關於第3步(縮小和模糊部分)的結果。
我認爲bluring效果不是很明顯!然而,我使用卷積內核35x35(這只是我認爲:))。
但我真的很感興趣的PDF文章。這裏是Bloom管道的演示文稿(演示文稿與我所應用的相同)。
鏈接:
正如你可以在圖片中看到的是模糊止血效果比我強那麼多!你認爲作者使用多個卷積內核(更高分辨率)?
我不明白的第一件事是高斯模糊算法如何在第三張圖片上顯示與白色(灰度值)不同的其他顏色。我看起來非常緊密(高變焦)到明亮的圖像(第二個),所有的像素似乎接近白色或白色(灰度)。有一件事是肯定的:在明亮的紋理上沒有藍色或橙色的像素。那麼我們如何解釋從圖2到圖3的這種轉變?這對我來說很奇怪。
我不明白的第二件事是圖片3,4,5和6之間的模糊出血效果差異很大!在我的演示中,我使用了35x35卷積核,最終結果接近這裏的第三張圖。
你怎麼能解釋這種差異?注:我使用GL_HALF_FLOAT和GL_RGBA16F像素內部格式來初始化布盧渲染通過紋理(所有其他渲染通道初始化爲GL_RGBA和GL_FLOAT數據類型)。
我的程序有問題嗎?
非常感謝您的幫助!
非常感謝!實際上,我將糟糕的視口作爲統一變量發送到我的高斯模糊着色器(它始終設置爲我原來的窗口分辨率 - > 1024 * 720)。所以每個像素偏移的平均值完全錯誤。再次感謝你的幫助!再見。 – user1364743
請問您是否可以使用修復功能上傳圖片,以便其他人可以瞭解問題所在?歡呼聲,祝你好運。 –