再學一周光線追蹤 bvh樹流程

2021-10-25 10:25:51 字數 405 閱讀 6122

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

這次詳細分析一下《再學一周光線追蹤》裡面bvh樹和包圍盒繫結的流程,為了加入三角麵片來進行優化。

在hitable類的派生類sphere中只有乙個返回項bounding_box,返回sphere的包圍盒。但是sphere和這個返回的包圍盒並沒有直接聯絡。

void qsort(void*base,size_t num,size_t width,int(__cdecl*compare)(const void*,const void*));

目的是把base裡面的內容進行排序

box_x_compare,box_y_compare,box_z_compare 這三個函式就是用來讓qsort分別根據x軸,y軸,z軸來給裡面的元素進行排序。

《再學一周光線追蹤》 學習 七 實物(一)

蒙特卡洛光線追蹤技術系列 見 蒙特卡洛光線追蹤技術 康奈爾盒子裡通常有兩個街區。它們相對於牆旋轉。首先,讓我們製作乙個軸對齊的塊原語,它包含6個矩形 class box public hitable box const vec3 p0,const vec3 p1,material ptr virtu...

《再學一周光線追蹤》 學習 七 實物(二)旋轉

蒙特卡洛光線追蹤技術系列 見 蒙特卡洛光線追蹤技術 旋轉不是很容易理解或生成公式。一種常見的圖形策略是應用圍繞x y和z軸的所有旋轉。這些旋轉在某種意義上是軸對齊的。首先,讓我們繞z軸旋轉 這只會改變x和y,而不依賴於z。這涉及到一些基本的三角學,使用的公式,我將不在這裡介紹。這給你乙個正確的印象,...

《再學一周光線追蹤》 學習 二點五 程式測試

蒙特卡洛光線追蹤技術系列 見 蒙特卡洛光線追蹤技術 上節寫的程式太多,這一節我們測試一下。首先我們要把 hitable list裡面繼承的類實現一下,裡面的內容可以是空的,否則抽象類不能初始化。當然這段程式裡我們也不需要初始化抽象類 bool hitable list bounding box fl...