《一周學完光線追蹤》學習 一 建立工程檔案

2021-10-06 13:47:08 字數 906 閱讀 4173

蒙特卡洛光線追蹤技術系列 見 蒙特卡洛光線追蹤技術

首先我們需要先寫個能顯示的程式,用來顯示渲染的結果(顯示畫素圖)。

emmm,用書上使用的解讀器也行,用opengl也行,用vtk也行,用qt外掛程式也行,為了方便起見這裡就用opengl吧。

#define glut_no_lib_pragma

#pragma comment (lib, "opengl32.lib") /* link with microsoft opengl lib */

#pragma comment (lib, "glut64.lib") /* link with win64 glut lib */

#include #include "glut.h"

#include "glext.h"

#define width 512

#define height 512

unsigned char *pixels;

void draw(void)

int main()

} int argc = 0;char *ar** = ;

glutinit(&argc, &ar**);

glutinitdisplaymode(glut_single | glut_rgba);

glutinitwindowsize(width, height);

glutcreatewindow("bitmap");

glutdisplayfunc(draw);

glutmainloop();

}

使用x64來編譯。效果如圖:

《一周學完光線追蹤》學習 六 抗鋸齒

蒙特卡洛光線追蹤技術系列 見 蒙特卡洛光線追蹤技術 當乙個真正的相機拍攝一張 通常沒有沿邊緣的鋸齒,因為邊緣畫素是一些前景和一些背景的混合。我們可以通過平均每個畫素內的一組樣本來獲得相同的效果。我們不必為分層而煩惱,這是有爭議的,但對我的節目來說卻是司空見慣的。對於某些光線 來說,這是非常關鍵的,但...

《一周學完光線追蹤》學習 三 光線相機和背景

蒙特卡洛光線追蹤技術系列 見 蒙特卡洛光線追蹤技術 所有光線 都有乙個光線類,以及計算沿光線看到的顏色。讓我們把射線看作乙個函式,p t a t b,這裡p是3d中沿直線的3d位置,a是射線的原點,b是射線的方向。射線引數t是實數 中的浮點數 插入不同的t和p t 沿射線移動點。加上負t,你就可以得...

《一周學完光線追蹤》學習 九 電介質材料

蒙特卡洛光線追蹤技術系列 見 蒙特卡洛光線追蹤技術 透明材料如水 玻璃和鑽石都是電介質。當光線擊中它們時,它 成反射光線和折射 透射 光線。我們將通過在反射或折射之間隨機選擇並在每次互動中僅生成乙個散射光線來處理該問題。最難除錯的部分是折射光線。如果有折射光線的話,我通常先讓所有的光線折射。為了這個...