• 沒有找到結果。

第二章 文獻探討

2-1 光子映射( Photon Mapping )

電腦圖學開始包含 3D 資訊的開始時期,約可追溯至西元 1980 年代前後 [3]

提出的繪製等式( The Rendering Equation )開始,在後來相當多的繪製演算法都 以其為基礎衍伸。其中一個加入全域照明資訊的衍伸方法,便是於西元 1996 年 提出,利用光子映射處理間接照明 [4]的方法,主要分為兩個階段:第一階段為 採樣光線資訊製作為光子圖( photon map );第二階段為依據繪製等式累加場景中 可視範圍光子資訊。

第一階段由光照點出發,產生若干條隨機方向的光線路徑,對場景物件進 行交點測試,儲存第一次觸及場景物體的位置、顏色等等相關資訊,成為直接 照明光子圖,然而要加入全域照明效果至少要產生第一次因物體而產生的反 射,因此再根據物體的雙向反射分布函數( BRDF )產生二次反射的光線路徑,再 跟場景中的物體作交點測試,如同直接照明的方式儲存光照資訊,生成一次反 射間接照明光子圖。如要加入更多次反射的間接照明,則仿照一次反射的光子

記錄方式進行多次反射的光子圖。

5

圖2 光子映射第一階段示意圖 [4]

在光子映射第一階段紀錄光線對空間的光子位置,圖中D 標示直接照明光子位 置;S 為因物體遮蔽而產生的陰影位置;I 為經一次反射後產生的間接照明光子

位置

光子映射第二階段則利用第一階段所記錄的光子位置,由視點出發取得在 場景中的可視位置,透過累計可視位置周邊具貢獻度的光子(包含圖 2 中 I 點及

D 點)資訊,來估算出該可視點應有的貢獻度資訊。

2-2 反射陰影映照圖( Reflective Shadow Map )

類似於光子映射,於西元 2005 年提出的反射陰影映照圖(簡稱 RSM ) [5]也 是大致分為兩個階段,但在第一階段紀錄直接光照貢獻時為規則地在空間中進

行光子位置紀錄。在 [5]中將這些直接光照位置稱為虛擬點光源( Virtual Point

Light,簡稱 VPL ),以符合其理論上對於空間中其他位置具有貢獻度的特性,於 下一階段將直接對這些位置進行間接光照採樣。

與光子映射的第二階段相同,在對於可視點間接照明的計算必須累加光源 對於各可視點的間接照明資訊,不同的是此方法累加的是於 RSM 上所有的 VPL

6

資訊,換句話說就是拿直接照明的位置與可視點的距離和角度關係,來計算各

VPL 對於可視位置的貢獻度:

圖3 反射陰影映照圖的累加階段 [5]

𝐸𝑝𝑝max{0, 𝑛𝑝∙ (𝑥 − 𝑥𝑝)} max{0, 𝑛 ∙ (𝑥𝑝− 𝑥)}

‖𝑥 − 𝑥𝑝4

其中,𝐸𝑝為可視位置貢獻度;Φ𝑝為在 RSM 上的像素𝑝的照明度。其餘位置 及向量代號如圖 3 所示。

由於此方法在空間中取得 VPL 位置的方式是利用光柵化( rasterization )方 法,在西元 1990 末期後硬體對於此方法具有相當有效的加速,因此在 [5]中聲 稱只要 RSM 的解析度不高(即 VPL 數量不多),則此方法為有效的即時運算間接 照明演算法。

2-3 球諧函數光照( Spherical Harmonics Lighting )

在很多情況下紀錄光照貢獻度大小及其方向的分布函數會耗費相當多的儲 存資源,於 2003 年提出利用球諧函數( spherical harmonics,簡稱 SH )近似光照 模型 [6]的方法,利用正交基底( orthogonal basis )線性組合可近似函數模型的性

7

值,以及球諧函數為一連串球座標系的正交函數,來近似光照模型,如此僅需 要儲存對應於球諧函數頻率的係數,即可還原近似原始的光照模型,詳細方法 將在第三章進行說明。

以低頻球諧函數近似採樣量有限的光照模型時,因為誤差而產生的光照分 布,類似於漫射性照明效果的照明特性,因此常用於現代的全域照明演算法對 於間接光照模型的壓縮。

2-4 近代即時運算全域照明演算法

近代有相當多針對在即時運算條件下,提供全域照明效果的演算法。西元

2011 年起便被廣泛使用在 Unity 遊戲引擎的方法,在 Unity 中稱為光偵測子( Li-ght Probe ) [7],主要的方法就是讓使用者指定特定位置形成光偵測子,來對空間 中的光照資訊追蹤及採樣,並透過非即時的運算將採樣的結果儲存於光偵測子 中,並在即時運算情境下讓光偵測子提供間接光照資訊。由於光偵測子中的資 訊為事先運算,因此就算在即時使用情境下,也只能提供預先運算時的光源參 數(位置、強度、顏色等),所形成的全域照明。

另外一個被廣泛使用的方法便是西元 2010 年,Crytek 提出的光傳遞容積

[2],方法類似於光偵測子,但光偵測子的位置為均勻分配在場景中,並透過 RSM 建立場景中的光照位置資訊。使用的 SH 頻率通常較預先運算的光偵測子 來得低,使得其能在即時運算條件下,也能變動主要光源參數的特性;但相對 於預先運算的光偵測子,對於光照模型的近似效果就沒有那麼好,對於某些方

8

向的貢獻度還原就不是那麼準確。關於光傳遞容積演算法的內容亦在第三章詳 細說明。

由 NVidia 提出,號稱是下個世代的即時運算全域照明方法「立體像素錐體 追蹤全域照明( Voxel Cone Tracing Global Illumination )」 [8],將場景建立為特 定解析度的立體像素,採樣包含光照強度、採樣顏色、平均法向量及表面材質 貢獻係數,並建立八分樹( octree ),利用類似於蒙地卡羅光徑追蹤 [9]的概念,

以占滿所有反射角的圓錐體為漫射追蹤方向、等同於入射角的圓錐體為反射追 蹤方向進行貢獻度追蹤:

圖4 圓錐體追蹤示意圖 [8]

由於追蹤的邏輯概念為圓錐體,在追蹤時距離較近的部分會追蹤至八分樹 較底層的立體像素採樣資訊,即解析度較高的採樣資訊;相對的距離較遠則可 省去較多追蹤時間,使用較上層的八分樹中,較低解析度的立體像素資訊。因 為使用類似於光徑追蹤的方法,此方法可以呈現包含光滑( glossy )效果的全域照 明(圖 4 右)。

9

此方法雖號稱能在即時運算下完成特定場景的全域照明,但在實際應用上 使用更複雜的場景時,每秒幀數偏低造成互動性較差,因此現行的即時運算應 用中,比較少見使用此方法的應用;但在動畫場景製作時,較常使用此方法來 加速設計及繪製動畫的過程。

10

相關文件