光線追蹤太慢不想等?用 openGL重現採樣過程

我們實現的是,當一開始運行程序就開始做opengl渲染,而不是全部計算結束之後再對圖片進行載入。

在 @破曉 的光線追蹤的文章中的寫法是 ,對於每一個像素,都進行一個SamplingRate的循環進行採樣,然後把採樣的顏色值進行平均。最後對他做了一個伽馬矯正。

然後在 @Asixa 的改進中,有加入了進度顯示 。

那麼我做的是,要在第一時間得到全圖,然後每次循環都是對全部像素進行採樣,而不是單純的對一個像素循環採樣:

是我改進的三路渲染 ,依據縱向來把渲染圖片分成三塊,然後分層渲染這三塊(因為不會用並發,所以就開了三個線程 )

也許第一幀就有了大概,我就是渲染了一個康奈爾盒子模型。

第 十 幀的效果:

其實沒有等到結束的時候再去debug看結果 , 如果不用蒙特卡洛方法,其實渲染到一半,效果就已經接近最終渲染了,所以大可節省很多時間去等待最終的效果 。

第三十幀效果:

第四十幀:

第六十幀:

第100幀:

第 160 幀效果:

其實還是很慢,因為我設置的採樣在 1000 左右 。

渲染500幀的效果:實在不想等了:

源碼之後會上傳,github現在還是以前的版本,有興趣的可以先去觀摩一波 :

miccall/LearnGL?

github.com圖標
推薦閱讀:

Nehe OpenGL 教程是否過時?
opengl編程指南第八版VS2015怎麼搭建環境?
光照和陰影演算法該如何優化?
如何使用 OpenGL 來進行文字繪製的 signed distance field ?
不同GLSL版本之間的區別?

TAG:OpenGL | 光線跟蹤 | 渲染器 |