• 沒有找到結果。

使用光傳遞容積實作虛擬實境的即時全域照明

N/A
N/A
Protected

Academic year: 2021

Share "使用光傳遞容積實作虛擬實境的即時全域照明"

Copied!
42
0
0

加載中.... (立即查看全文)

全文

(1)國立臺灣師範大學 資訊工程研究所碩士論文 指導教授:張鈞法. 博士. 使用光傳遞容積實作 虛擬實境的即時全域照明 Real-Time Global Illumination in Virtual Reality using Light Propagation Volume. 研究生: 中華民國. 蘇柏元 壹佰零陸. 撰 年. 柒. 月.

(2) 摘 要. 使用光傳遞容積實作 虛擬實境的即時全域照明 蘇柏元 電腦圖學領域的全域照明效果,包含光源及發光體對場景的直接照明,以 及非發光體反射照明效果產生的間接照明,如要呈現較為擬真的畫面表現,全 域照明為相當重要的效果。由於近年虛擬實境裝置崛起,以虛擬實境為平台的 應用漸增,在虛擬實境中如要呈現一定品質的畫面,需加入品質不錯的全域照 明效果,同時又要兼顧虛擬實境裝置的互動性。 光傳遞容積( Light Propagation Volume )及其他類似的方法,使用球諧函數近 似光照貢獻度分布,其能夠用使用少量空間及在短時間內轉換貢獻度資料及球 諧函數係數的性質,使得許多近年的互動式圖學內容大量使用此方法。 使用 OpenGL 4.0 實作光傳遞容積,以平行化完成運算來符合即時運算所需 的速度,在畫面中加入全域照明效果的狀況下維持良好的互動性,並以跨平台 的虛擬實境函式庫 OpenVR 將繪製結果呈現在虛擬實境裝置上,讓使用者有身 歷其境的體驗。. 關鍵字:全域照明、即時運算、光傳遞容積、虛擬實境. i.

(3) ABSTRACT. Real-Time Global Illumination in Virtual Reality using Light Propagation Volume by Po-Yuan Su This paper provides an implementation of light propagation volume using OpenGL 4.0 as graphical library. And present the result in a realistic way on virtual reality helmet by using OpenVR as virtual reality library. Virtual reality provides realistic experiences to the users by providing realistic images, 3D visual effects, and intuitive interactions. To present realistic images using computer graphic, a certain quality of global illumination effect, the combination of direct and indirect illumination effects, becomes a key factor. Since both quality and interactivity are the key requirements of virtual reality, the implementation of global illumination effect must be fast enough to complete in real-time condition. Light propagation volume(LPV) and some other ways that use spherical harmonics to approximate indirect lighting functions were introduced as real-time global illumination algorithms. LPV is widely implemented in recent interactive applications because of the decent effect and interactivity it provided.. Keywords: real-time, global illumination, light propagation volume, virtual reallity. ii.

(4) 誌. 謝. 時間過得相當快,一轉眼已經將三年的碩士幾乎完成了,首先感謝老師三 年來的指導,起初由於實習工作的關係,老師給了最具影響的建議,建議將碩 士的時間拉長,能夠對於碩士期間的訓練更加熟悉,且在其間不厭其煩地給予 我們實驗的資源和知識,剛進實驗室時我對計算機圖學一點概念都沒有,經過 老師指導可以在現在完成這篇論文及實驗,在觀察實驗結果時相當有成就感。 再來要感謝我的家人,過去在學業上我總是以比較獨立的方式完成,但在 碩士這三年遭遇了許多起伏不定的事情,在我心情低落時家人花了相當長的時 間陪伴和鼓勵,並且支援我一大部分的生活,使得我能夠順利地完成碩士期間 的工作。 然後要感謝實驗室的同學、夥伴,他們和我一起經歷了這些時間,不論是 校園生活或專業討論,這段時間最快樂的部分莫過於和同儕間的互動,反覆的 討論和交換意見,對於專業的認知能夠比單獨鑽研來得更加快速和完整,並且 製造了不少的回憶。. iii.

(5) 主目錄 第一章. 緒論................................................................................................................. 1. 1-1. 研究背景......................................................................................................... 1. 1-2. 研究目的......................................................................................................... 2. 1-3. 論文結構......................................................................................................... 3. 第二章. 文獻探討......................................................................................................... 4. 2-1. 光子映射( Photon Mapping ) ......................................................................... 4. 2-2. 反射陰影映照圖( Reflective Shadow Map ) ................................................. 5. 2-3. 球諧函數光照( Spherical Harmonics Lighting ) ........................................... 6. 2-4. 近代即時運算全域照明演算法..................................................................... 7. 第三章. 光傳遞容積................................................................................................... 10. 3-1. 概要............................................................................................................... 10. 3-2. 球諧函數( Spherical Harmonics ) ................................................................ 11. 3-3. 球諧用於近似光照分布............................................................................... 13. 3-4. 初始光照資訊及虛擬點光源....................................................................... 14. 3-5. 傳遞間接照明資訊....................................................................................... 15. 3-6. 採樣可視區域的全域照明........................................................................... 17. 第四章. 實作細節....................................................................................................... 18. 4-1. 平行化設計................................................................................................... 18. 4-2. 繪製反射陰影照圖....................................................................................... 20. 4-3. 容積體資料型態與採樣............................................................................... 21. 4-4. 傳遞的平行化............................................................................................... 24. 4-5. 使用 OpenVR ............................................................................................... 25. 第五章. 實驗結果....................................................................................................... 27. 5-1. 全域照明效果............................................................................................... 27. 5-2. 效能測試....................................................................................................... 29. 5-3. 以 VR 裝置顯示對效能的影響 ................................................................... 32. 第六章. 結論............................................................................................................... 33 iv.

(6) 參考文獻....................................................................................................................... 34. 圖片目錄 圖1. 全域照明比較 [1] .............................................................................................. 1. 圖2. 光子映射第一階段示意圖 [4] .......................................................................... 5. 圖3. 反射陰影映照圖的累加階段 [5] ...................................................................... 6. 圖4. 圓錐體追蹤示意圖 [8] ...................................................................................... 8. 圖5. LPV 主要流程概要 [10] [6] ............................................................................ 10. 圖6. 球諧函數定義 [11] .......................................................................................... 12. 圖7. 向量對應球諧函數圖形 [6] ............................................................................ 12. 圖8. 以 SH 近似分布函數範例 [6] ......................................................................... 13. 圖9. 虛擬點光源及預想輻射方向 [10] .................................................................. 14. 圖 10. 將光照分布植入容積體 [10] ...................................................................... 15. 圖 11. 將 SH 係數傳導至相臨的容積體 [10] ....................................................... 16. 圖 12. LPV 傳導方法 [2] ....................................................................................... 16. 圖 13. Sponza 場景的間接照明 .............................................................................. 17. 圖 14. 以繪製至貼圖功能平行運算的設定........................................................... 18. 圖 15. 繪製 RSM 的邏輯概要 ................................................................................ 20. 圖 16. 繪製 RSM 的視框資料 ................................................................................ 21. 圖 17. LPV 材質描述貼圖 ...................................................................................... 22. 圖 18. LPV 傳遞的邏輯和實作差異 ...................................................................... 24. 表格目錄 表1. 及時全域照明結果........................................................................................... 27. 表2. 傳遞次數與容積體資訊................................................................................... 28. 表3. LPV 解析度和全域照明效果差別 .................................................................. 28. 表4. 測試用系統規格............................................................................................... 29. 表5. 實作成果效能及各項參數............................................................................... 29. 表6. 平行化效能比較............................................................................................... 30 v.

(7) 表7. 平行化方法的時間比較................................................................................... 31. vi.

(8) 第一章 緒論 1-1 研究背景. 圖1 全域照明比較 [1]. 左圖為單純直接照名效果,右圖為加入全域照明效果 全域照明( global illumination )是指在場景中,非發光體反射發光體的直接光 照,對空間中其他物體產生的間接照明效果,在繪製( render )的場景結果中加入 全域照明效果能更加真實且華麗地呈現畫面(如圖 1)。 在電腦圖學領域中過去關於全域照明效果的研究大多分為:以大量運算及 運算時間換取較精準結果的非即時方法;以及省略部分複雜運算以換取互動性 較佳的結果之即時運算方法兩種研究方向。前者可常見於動畫電影、電影特 效、照明效果模擬等等,看到的結果通常是以相當精準的光線追蹤、大量的光 線採樣,並在長時間運算後產生結果;後者則多是利用近似的結果,省去長時. 1.

(9) 間的大量運算,來達到能夠在短時間內根據使用者的輸入對場景作出反應,此 方法多用在遊戲、展覽等互動媒體上,是為即時運算方法。 因近年虛擬實境( virtual reality )裝置盛行,透過虛擬實境呈現空間設計內容 的需求漸增,以虛擬實境裝置呈現非即時運算的結果固然能夠展現正確的照明 效果,由於其結果為預先產生,較難即時呈現使用者移動、光源位置移動等等 參數變化的效果。又因演算硬體的演進,當今的使用情境對於即時運算繪製的 場景品質要求也相對提高。在滿足互動性的前提下,加入一定品質的全域照明 效果,已經成為幾乎必要的需求。. 1-2 研究目的 即時運算的限制即在呈現繪製結果時,令使用者感覺畫面是具有互動性且 連續的,但相較於單純的直接光照,呈現全域照明效果的運算相對複雜許多。 要讓人眼產生畫面為連續的錯覺,畫面呈現的幀數必須要在每秒 30 張以上,但 在呈現沒有動態模糊的繪製結果時,幀數呈現要接近每秒 60 張才能產生畫面較 圓滑的效果。 在西元 2010 年,Crytek 提出以光傳遞容積( Light Propagation Volume,簡稱 LPV ) [2]即時呈現全域照明的效果,以當時的硬體設備能以每秒 40 張左右呈現 光源未變化的場景全域照明效果,光源變化的情形則約每秒 20 張,都相當接近 或超過每秒 30 張的門檻。因此希望透過此即時的全域照明演算法,來達成在虛. 2.

(10) 擬實境裝置上,以超過每秒 30 張或接近每秒 60 張的畫面,呈現具有全域照明 效果的繪製結果呈現。. 1-3 論文結構 本篇論文主要將以光傳遞容積演算法之說明及利用 OpenGL 實作平行化的 部分為主,此二部分將佔大多篇幅。 由於主要部分為實作即時演算全域照明演算法,首先將先說明過去較著名 的幾個全域照明演算法,說明各個包含即時及非即時演算法大致如何達成全域 照明的效果;然後將說明主要使用的光傳遞容積的詳細內容,包含如何以球諧 函數( spherical harmonics )近似光照貢獻模型、在容積間傳遞光照資訊等;接著 為如何實作光傳遞容積的演算法並平行化;最後呈現以此方法的效能及畫面比 較。. 3.

(11) 第二章 文獻探討 2-1 光子映射( Photon Mapping ) 電腦圖學開始包含 3D 資訊的開始時期,約可追溯至西元 1980 年代前後 [3] 提出的繪製等式( The Rendering Equation )開始,在後來相當多的繪製演算法都 以其為基礎衍伸。其中一個加入全域照明資訊的衍伸方法,便是於西元 1996 年 提出,利用光子映射處理間接照明 [4]的方法,主要分為兩個階段:第一階段為 採樣光線資訊製作為光子圖( photon map );第二階段為依據繪製等式累加場景中 可視範圍光子資訊。 第一階段由光照點出發,產生若干條隨機方向的光線路徑,對場景物件進 行交點測試,儲存第一次觸及場景物體的位置、顏色等等相關資訊,成為直接 照明光子圖,然而要加入全域照明效果至少要產生第一次因物體而產生的反 射,因此再根據物體的雙向反射分布函數( BRDF )產生二次反射的光線路徑,再 跟場景中的物體作交點測試,如同直接照明的方式儲存光照資訊,生成一次反 射間接照明光子圖。如要加入更多次反射的間接照明,則仿照一次反射的光子 記錄方式進行多次反射的光子圖。. 4.

(12) 圖2 光子映射第一階段示意圖 [4]. 在光子映射第一階段紀錄光線對空間的光子位置,圖中 D 標示直接照明光子位 置;S 為因物體遮蔽而產生的陰影位置;I 為經一次反射後產生的間接照明光子 位置 光子映射第二階段則利用第一階段所記錄的光子位置,由視點出發取得在 場景中的可視位置,透過累計可視位置周邊具貢獻度的光子(包含圖 2 中 I 點及 D 點)資訊,來估算出該可視點應有的貢獻度資訊。. 2-2 反射陰影映照圖( Reflective Shadow Map ) 類似於光子映射,於西元 2005 年提出的反射陰影映照圖(簡稱 RSM ) [5]也 是大致分為兩個階段,但在第一階段紀錄直接光照貢獻時為規則地在空間中進 行光子位置紀錄。在 [5]中將這些直接光照位置稱為虛擬點光源( Virtual Point Light,簡稱 VPL ),以符合其理論上對於空間中其他位置具有貢獻度的特性,於 下一階段將直接對這些位置進行間接光照採樣。 與光子映射的第二階段相同,在對於可視點間接照明的計算必須累加光源 對於各可視點的間接照明資訊,不同的是此方法累加的是於 RSM 上所有的 VPL 5.

(13) 資訊,換句話說就是拿直接照明的位置與可視點的距離和角度關係,來計算各 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 )線性組合可近似函數模型的性 6.

(14) 值,以及球諧函數為一連串球座標系的正交函數,來近似光照模型,如此僅需 要儲存對應於球諧函數頻率的係數,即可還原近似原始的光照模型,詳細方法 將在第三章進行說明。 以低頻球諧函數近似採樣量有限的光照模型時,因為誤差而產生的光照分 布,類似於漫射性照明效果的照明特性,因此常用於現代的全域照明演算法對 於間接光照模型的壓縮。. 2-4 近代即時運算全域照明演算法 近代有相當多針對在即時運算條件下,提供全域照明效果的演算法。西元 2011 年起便被廣泛使用在 Unity 遊戲引擎的方法,在 Unity 中稱為光偵測子( Light Probe ) [7],主要的方法就是讓使用者指定特定位置形成光偵測子,來對空間 中的光照資訊追蹤及採樣,並透過非即時的運算將採樣的結果儲存於光偵測子 中,並在即時運算情境下讓光偵測子提供間接光照資訊。由於光偵測子中的資 訊為事先運算,因此就算在即時使用情境下,也只能提供預先運算時的光源參 數(位置、強度、顏色等),所形成的全域照明。 另外一個被廣泛使用的方法便是西元 2010 年,Crytek 提出的光傳遞容積 [2],方法類似於光偵測子,但光偵測子的位置為均勻分配在場景中,並透過 RSM 建立場景中的光照位置資訊。使用的 SH 頻率通常較預先運算的光偵測子 來得低,使得其能在即時運算條件下,也能變動主要光源參數的特性;但相對 於預先運算的光偵測子,對於光照模型的近似效果就沒有那麼好,對於某些方 7.

(15) 向的貢獻度還原就不是那麼準確。關於光傳遞容積演算法的內容亦在第三章詳 細說明。 由 NVidia 提出,號稱是下個世代的即時運算全域照明方法「立體像素錐體 追蹤全域照明( Voxel Cone Tracing Global Illumination )」 [8],將場景建立為特 定解析度的立體像素,採樣包含光照強度、採樣顏色、平均法向量及表面材質 貢獻係數,並建立八分樹( octree ),利用類似於蒙地卡羅光徑追蹤 [9]的概念, 以占滿所有反射角的圓錐體為漫射追蹤方向、等同於入射角的圓錐體為反射追 蹤方向進行貢獻度追蹤:. 圖4 圓錐體追蹤示意圖 [8] 由於追蹤的邏輯概念為圓錐體,在追蹤時距離較近的部分會追蹤至八分樹 較底層的立體像素採樣資訊,即解析度較高的採樣資訊;相對的距離較遠則可 省去較多追蹤時間,使用較上層的八分樹中,較低解析度的立體像素資訊。因 為使用類似於光徑追蹤的方法,此方法可以呈現包含光滑( glossy )效果的全域照 明(圖 4 右)。 8.

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

(17) 第三章 光傳遞容積 3-1 概要 光傳遞容積( Light Propagation Volume,簡稱 LPV )的運算部分主要可以分 為幾個階段,下圖為階段流程概要圖:. 圖5 LPV 主要流程概要 [10] [6] 首先會將整個場景分割為固定等分的容積體( volume ),容積體皆為正立方 體,容積體中心即為儲存光照資訊的邏輯位置,進行以下步驟: 1.. 在場景中加入虛擬點光源( virtual point light,簡稱 VPL )資 訊,如圖 5 (A)。並讓各個擁有 VPL 的容積體則採樣在該容積 的 VPL 資訊作為間接照明資訊,如圖 5 (B). 2.. 將光照資訊傳遞至相鄰容積體,如圖 5 (C). 3.. 容積體內資訊皆利用球諧函數( spherical harmonics,簡稱 SH ) 壓縮間接照明資訊,SH 基底示意如圖 5 (D) 10.

(18) 4.. 最後採用可視點所在的容積體間接照明資訊(圖 5 (E) )再加上 直接照明資訊成為結果(圖 5 (F) ). 3-2 球諧函數( Spherical Harmonics ) 1. 球諧函數為定義在球座標系的無限項函數集合,其各項互為正交函數,如. 將任一向量以球型參數( spherical parameter )表示為: 𝜔 ⃗ = (sin 𝜃 cos 𝜑 , sin 𝜃 sin 𝜑 , cos 𝜃) 則球諧函數的定義如下: √2𝐾𝑙𝑚 cos(𝑚𝜑) 𝑃𝑙𝑚 cos 𝜃 𝑖𝑓 𝑚 > 0, 𝑚 0 0 (𝜃, 𝑖𝑓 𝑚 = 0, 𝑦𝑙 𝜑) = {𝐾𝑙 𝑃𝑙 cos 𝜃 √2𝐾𝑙𝑚 sin(−𝑚𝜑) 𝑃𝑙−𝑚 cos 𝜃 𝑖𝑓 𝑚 < 0. 其中𝑃𝑙𝑚 為聯合勒讓德多項式( Associated Legendre polynomials ),𝐾𝑙𝑚 為標準 化常數:. 𝐾𝑙𝑚 = √. (2𝑙 + +1) (𝑙 − |𝑚|)! (𝑙 + |𝑚|)! 4𝜋. 𝑙為 SH 頻率,屬於自然數;𝑚和𝑙的關係為−𝑙 ≤ 𝑚 ≤ 𝑙,𝑚屬於整數。因此 將球諧函數展開,例舉在頻率𝑙 = 0, 1, 2,球座標及直角坐標轉換為球諧函數的 定義如下表:. 1. 此段對於 SH 的文字及函數定義引用自 [11] 11.

(19) 圖6 球諧函數定義 [11] 在 3D 空間中,𝑦𝑙𝑚 的值對應於各方向的單位向量,呈現的圖形則為下圖:. 圖7 向量對應球諧函數圖形 [6]. 圖中代表將各方向單位向量帶入球諧函數後,得到的𝑦𝑙𝑚 值:𝑦𝑙𝑚 的大小為原點至 圖形表面之距離、綠色代表正數、紅色代表負數。球諧函數為無限項集合,此 圖僅例舉0 ≤ 𝑙 ≤ 4. 12.

(20) 3-3 球諧用於近似光照分布 在 [6]中,透過正交基底的線性組合性值得知,要將某光照分布函數轉換以 SH 表示,對應至𝑦𝑙𝑚 項的係數為: 𝑐𝑙𝑚 = ∮ 𝑓(𝑠)𝑦𝑙𝑚 (𝑠) 𝑑𝑠 其中𝑓(𝑠)為光照分布在𝑠方向的強度,而𝑦𝑙𝑚 (𝑠)則為用𝑠方向取得 SH 頻率為𝑙 的值。因此在還原時,僅需要將無限項的係數𝑐𝑙𝑚 乘上𝑦𝑙𝑚 (𝑠)理論上即可還原原始 的函數分布,但如果只採樣有限頻率至𝑙 = 𝑛 − 1項,則僅能近似原始分布函 數: 𝑛−1. 𝑛2. 𝑙. 𝑓(𝑠) ≅ 𝑓̃ (𝑠) = ∑ ∑ 𝑐𝑙𝑚 𝑦𝑙𝑚 (𝑠) = ∑ 𝑐𝑖 𝑦𝑖 (𝑠) 𝑙=0 𝑚=−𝑙. 𝑖=0. 其中𝑓̃ (𝑠)為近似後的分布函數。因此使用越多項球諧函數,則越能夠近似 原始光照分布,如下圖所示:. 圖8 以 SH 近似分布函數範例 [6]. 13.

(21) 3-4 初始光照資訊及虛擬點光源 進行 LPV 運算的第一步,以 2-2 介紹的 RSM 在場景範圍內放入若干個 VPL,其作法與陰影映射圖類似。VPL 就是假設會產生間接照明的虛擬光源, 因此代表兩個意義: 1.. 虛擬點光源所在的位置都有直接照明效果,即非陰影區域. 2.. 虛擬點光源會所在的場景物體會產生間接照明. 雖與陰影映射類似,但儲存的資訊除了用於陰影映射的深度外,仍然需要 VPL 的其他資訊,如:強度、顏色、輻射方向及位置。. 圖9 虛擬點光源及預想輻射方向 [10]. 採樣間接貢獻時,輻射方向是假設為漫射的均勻分布 在採樣虛擬點光源資訊時,假設處理的表面皆為漫射性反射表面,因此輻 射方向應為均勻分布 (如圖 9 ),之後會使用有限項 SH 進行壓縮,因壓縮產生的 誤差,即可產生接近漫射的分布,因此在進行 VPL 採樣以通常以所在的平面法 向量為輻射方向。. 14.

(22) 圖10將光照分布植入容積體 [10]. 將圖 9 的採樣資訊加入所在位置的容積體,此時容積體儲存的已經是利用 SH 近 似照明分布的係數 由於在實作層面,儲存各方向的光照分布將會使用掉相當大量的儲存資 源,相較之下如使用頻率至𝑛 − 1的 SH 來近似分布函數,則只要儲存𝑛2 個對應 係數,且使用低頻 SH 近似後,誤差可產生漫射的類似效果;同時由於低頻 SH 的還原運算(係數相乘累加)相當快速,因此能夠相當有效率地將原始光照強度還 原。 在 [2]中提到,通常在實作實作 LPV 時,也要考慮到光源移動依然要相當 快地更新 LPV 中的資訊,因此通常 SH 係數只會取到𝑙 = 1或𝑙 = 2的係數項,也 就是總共會有𝑛2 = 4或𝑛2 = 9項係數。. 3-5 傳遞間接照明資訊 經過 3-4 的第一步驟,所有包含 VPL 的容積體都已經有了間接照明的資 訊,接下來要將間接照明資訊傳遞給相臨的六個容積體,使得場景中的容積體 能夠提供正確的間接照明給任一採樣的可視點。. 15.

(23) 圖11將 SH 係數傳導至相臨的容積體 [10] 傳導至相臨容積體的方式,將針對相臨容積,除了相鄰面以外的五個面進 行貢獻還原,然後再以相鄰容積體的中心採樣還原。在實作上我們採用對於五 個面中心點的方向為還原及重新採樣方向,以還原方向的貢獻度當作對還原面 的貢獻度。. 圖12 LPV 傳導方法 [2]. 圖 12 表示將貢獻值由灰色容積體傳遞至綠色容積體的概略方法,左為還原,右 為重新映射壓縮 由於以對於面中心的貢獻,當作對整面的貢獻(如圖 12 左),在理論上和連 續的貢獻度積分不同(圖 12 的V(ω)用來表達對面 f 的總貢獻度 ),所以還會再乘 上一個針對各個面的比重,修正這個比重造成傳遞的誤差,同時製造因距離而 發散、減弱的間接照明效果。 還原針對各個面的貢獻後,會再將各個面當作輻射方向(圖 12 右𝑛𝑙 為舉例以 面 f 作為輻射方向時),並依各平面的貢獻度,以 3-3 的方式壓縮為 SH 係數,並 16.

(24) 將係數存於所屬的容積體資料中(圖 12 右的𝐼𝑙 (𝜔)表示還原後應有的貢獻度)。以 此類推,多次傳遞後則可將資訊擴散至各個容積體中。. 3-6 採樣可視區域的全域照明 最後在進行可視圖繪製時,所有的可視點將取來自其所屬的容積體中,對 該方向的貢獻度,乘上所希望的間接照明比重成為間接照明。再加上直接照明 後,乘上物件原本的顏色,則可獲得所期待的全域照明效果。. 圖13 Sponza 場景的間接照明. 左為 Sponza 場景的間接照明效果,就算還沒加入直接照明,在離 VPL 距離近的 容積量度依然較高;中為直接照明的效果,暗部完全不會受到周遭反射的影 響;右為結合直接照明及間接照明的全域照明效果. 17.

(25) 第四章 實作細節 4-1 平行化設計 LPV 的特色是能夠在光移動時,能夠即時更新容積體內的間接照明資訊, 雖然低頻 SH 的計算相當快速,但在較高解析度的 RSM 或較高解析度的 LPV 下,仍然難以達到流暢的即時演算結果。在 [12]中,非以光柵化處理的計算, 使用了 OpenGL 4.3 後新增的計算著色器( compute shader ) [13],功能專為平行運 算設計。但由於近年已可見一些以 WebGL 提供虛擬實境(virtual reality,簡稱 VR)裝置的例子,且以 OpenGL 4.0 為環境進行實驗,仍然採取以頂點著色器 ( vertex shader )與片段著色器( fragment shader ),並使用 OpenGL 的繪製至貼圖 ( render to texture )功能,進行計算的平行化處理。 Setup for Parallel Calculation using Fragment Shader. VERTEX DATA. FRAMEBUFFER OBJECT. Width: w Height: h. Vertices: (1, -1), (-1, 1), (1, 1), (-1, -1) w. w. w. w. Texture Coordinates:. (1, 0), (0, 1), (1, 1), (0, 0). h. h. h. h. Faces: (1, 2, 3), (1, 2, 4) Depth Attachment. Color Attachment. 圖14以繪製至貼圖功能平行運算的設定. 使用特定設計來控制斷片著色器的觸發頻率 為了達成利用繪製至貼圖功能進行平行化,對於頂點( vertex )及視框緩存 ( framebuffer )資料使用一些特定的設計。 18.

(26) 頂點資料設定為四個分別為畫面四角的頂點(如圖 14 左),兩個三角片佔滿 全畫面,並且左下角對應至貼圖的(0, 0)位置,右上角則為(1, 1),在此設計下的 頂點著色器,只要單純將頂點位置傳入著色器的 gl_Position 參數,並將貼圖座 標傳入片段著色器中,各斷片的貼圖座標即以內插處理。 當我們有w×h項資料要平行時,包含在視框緩存內的所有資料,如:深度 附加( depth attachment )、顏色附加( color attachment )以及視框緩存物件本身的大 小,都將設定為w×h (如圖 14 右),並在開始 OpenGL 的繪製流程( rendering pipeline )相關函數之前,以 glViewPort 將繪製範圍設定為相符的(0, 0, w, h),由 於上述頂點資訊的設定,如此將可使斷片著色器的觸發頻率與所希望的平行工 作數相等;換句話說,以 glViewPort 控制平行工作的工作數,平行工作以斷片 著色器完成,因此主要的演算法將在斷片著色器中實作。 因為深度附加並沒有辦法自由寫入資訊,OpenGL 會在裡面自動寫入深度測 試用的深度資料,更由於頂點資訊的設計使其無深度資訊(深度資訊將全數為 0 ),因此通常將繪製緩存( render buffer )設定為深度附加,僅作為繪製時流程的 資料存放用,而不作資料取出。 而顏色附加將設定為針對儲存各演算所結果的貼圖,貼圖的參數設定則依 照平行化所需的參數設定,如:長寬與視框緩存相等(w×h)、儲存不同資訊用不 同資料型態(顏色和座標用四維浮點數、光照遮罩( illumination mask )用一維浮點 數)等。 19.

(27) 4-2 繪製反射陰影照圖. RSM. RSM.pixel { Geometry position of VPL v: Color of VPL v:. light ray L. ,. ,. Normal of VPL v: n, Depth of this pixel: L.length … (etc.). normal n. VPL v. }. 圖15繪製 RSM 的邏輯概要 西元 1990 年代後,硬體對於光柵化的方法有相當有效的加速,LPV 中除了 最終階段繪製可視圖以外,在繪製 RSM 時(散布 VPL )亦可以利用此加速處理, 即以光源為出發點進行光柵化繪製,但在儲存資料時除了陰影映射所需的深度 外,還要取得特定的資料(如圖 15)。 如同陰影映射,在繪製 RSM 時我們也要以一個視框緩存作為儲存結果的框 架,並將資料儲存進貼圖,因此視框緩存及寫入目標的大小都為 RSM 的長寬。 在呼叫 glDraw 相關函數時,使用的頂點資料則為全場景的頂點資料。 由於 RSM 同時具有陰影及 VPL 資訊,因此深度附加中必須寫入深度資訊 至貼圖;另外要儲存 VPL 的資料至顏色附加,如:VPL 所在的物件顏色(即間接 照明應產生的顏色)、法向量、位置等等(如圖 16)。. 20.

(28) Attachment Texture Data in Framebuffer Object (A) FRAMEBUFFER OBJECT. w. w. h. h. Depth Attachment. (C). (B). w = RSM. width h = RSM. height w. h. w. h. Color Attachment. (D). 圖16繪製 RSM 的視框資料. 除了傳統作陰影映射所需的深度圖(A)以外,此圖例舉最少所需的 VPL 資訊,如 顏色(B)、位置(C)及所在平面的法向量(D). 4-3 容積體資料型態與採樣 在 OpenGL 4.0 後的版本可以以分層繪製( layered rendering )將資料繪製至 3D 的貼圖,但由於 4-1 提到的 WebGL 及 VR 的應用,捨棄分層繪製時必須使用 的幾何著色器( geometry shader )及密鋪著色器( tessellation shader ),依然使用頂 點著色器和斷片著色器,並繪製至 2D 貼圖材質。LPV 的容積體位置資訊應為. 21.

(29) 3D 資訊,如以 2D 貼圖處理,必然有一軸座標需呈現兩軸的座標資訊。假設 LPV 解析度為𝑟×𝑟×𝑟,則儲存 LPV 資料的 2D 貼圖設計如下:. 𝑟. w=𝑟 𝑙=0. …. z=𝑟. y=0 1. 𝑙=1 z=1 h = r×r. z=0. x=0 1 R. … G. 𝑟 B. A. vec4 圖17 LPV 材質描述貼圖 如圖 17 所示,由於需要取0 ≤ 𝑙 ≤ 1的 SH 係數共 4 個,我們需要四張分別 儲存各係數的貼圖;貼圖的座標同時表示此處儲存的 LPV 座標,如存取位於 (x, y, z)的 LPV,在貼圖上的位置就是(𝑥, 𝑦 + 𝑧×𝑟),由於採樣( sampling )時使用 𝑥. 的貼圖座標夾壓在[0,1]間,採樣貼圖座標則為( 𝑟 ,. 𝑦+𝑧×𝑟 𝑟2. );而在每一個貼圖的. 像素內包含了一個 vec4 的資料,儲存這個 SH 頻率底下的紅( R )、綠( G )、藍 ( B )貢獻值及代表光照權重的透明度( A )欄位。 在植入資訊時,只要算出各個 VPL 所屬的 LPV 座標,再將該 VPL 的資訊 壓縮累加入其所屬的容積體。假設 VPL 的全域座標( global coordinate )為 (𝑥𝑣𝑝𝑙 , 𝑦𝑣𝑝𝑙 , 𝑧𝑣𝑝𝑙 ),則換算至其所屬的 LPV 座標為: 𝑣𝑝𝑙𝑙𝑝𝑣 = (𝑥, 𝑦, 𝑧)𝑙𝑝𝑣 =. (𝑥𝑣𝑝𝑙 , 𝑦𝑣𝑝𝑙 , 𝑧𝑣𝑝𝑙 ) − 𝐴𝐴𝐵𝐵. 𝑙𝑜𝑤𝑒𝑟𝑏𝑜𝑢𝑛𝑑 𝑣𝑜𝑙𝑢𝑚𝑒. 𝑙𝑒𝑛𝑔𝑡ℎ 22.

(30) 其中𝑣𝑜𝑙𝑢𝑚𝑒. 𝑙𝑒𝑛𝑔𝑡ℎ為容積體的邊長(容積體為正立方體);𝐴𝐴𝐵𝐵. 𝑙𝑜𝑤𝑒𝑟𝑏𝑜𝑢𝑛𝑑為整個場景的軸向邊界盒( Axis Align Bounding Box )的最底頂點,意即此 軸向邊界盒中任一點的三軸座標值都將大於或等於𝐴𝐴𝐵𝐵. 𝑙𝑜𝑤𝑒𝑟𝑏𝑜𝑢𝑛𝑑的三軸座 標值。 接著將所有 VPL 的貢獻值,轉換為 SH 係數累加至各個所屬的 LPV 中就完 成了第一步的光照資訊植入。根據 [14],相較於 3-3 向量與 SH 係數轉換的積分 式,此時的資訊為離散的採樣資訊,因此每個 VPL 貢獻度還要再乘上一個權重 來標準化,某容積體內 SH 係數𝑐𝑙𝑚 和 VPL 中的資料關係如下: 𝑐𝑙𝑚 = ∑ 𝑣𝑝𝑙. 𝑐𝑜𝑙𝑜𝑟×𝑦𝑙𝑚 (𝑣𝑝𝑙. 𝑑𝑖𝑟)×𝑤 , 𝑤 = 𝑣𝑝𝑙. 𝑟2 𝑅𝑆𝑀. 𝑤×𝑅𝑆𝑀. ℎ. 𝑣𝑝𝑙. 𝑐𝑜𝑙𝑜𝑟表示 VPL 的間接照明顏色;𝑣𝑝𝑙. 𝑑𝑖𝑟表示 VPL 的輻射方向;𝑤為在 [14]中,基於 LPV 數量及 RSM 涵蓋範圍所得的權重。 將數值植入容積體中這個步驟將對於每一個 VPL 進行,在沒有原子運算 ( atomic operation )的支援下,只能以迴圈進行採樣,但由於 GPU 進行分岔 ( branch )的效率較差,平行化完成各 VPL 貢獻值的 SH 轉換後,針對所屬容積 體的位置,並將數值累加進所屬容積體的部分直接在 CPU 端以迴圈完成,將各 LPV 累加結果儲存至陣列並轉換為 2D 貼圖。. 23.

(31) 4-4 傳遞的平行化. Logic: Propagate iterations. 0. 1. 2. Implementation: processing target 圖18 LPV 傳遞的邏輯和實作差異 依據 [14] [2]的描述,將貢獻資訊傳遞至相鄰容積的邏輯方法,是向某容積 體的上下左右前後傳遞,如圖 18 上,在第 1 次傳遞後要進行第 2 次時,角落四 個容積體將被同時寫入,此方法是為散佈( scattering )的邏輯,在較舊的 GPU 和 圖像函式庫中是不被允許的,且使用斷片著色器平行的方法,無法以多個工作 項目,寫入同一貼圖的同一像素;如要平行完成此步驟,則要採取相反的方 向,由相鄰四面的資訊向該容積體累加,如圖 18 下,是為蒐集( gathering )的邏 輯,如此可以避免平行化時,多個工作項目對同一個區塊進行寫入的狀況。圖 中的綠圓圈為每個平行工作項目處理的容積體。 又因為 OpenGL 無法對於同一材質貼圖進行採樣後寫回,如此我們使用了 兩份一樣結構的貼圖,分為前貼圖及後貼圖,前貼圖儲存傳遞前的貢獻度資 訊,用於採樣;後貼圖則用於寫入傳遞後結果。每個傳遞階段結束再將兩份貼. 24.

(32) 圖調換,將前一個傳遞階段的結果(原後貼圖)作為採樣,並將此次傳遞的結果寫 入另一份貼圖(原前貼圖),以解決此問題。 傳遞完後進行的視圖渲染時,將前貼圖作為間接照明貢獻度結果,但 2D 貼 圖無法作出 3D 的內插採樣,在傳遞完成後必須要把前貼圖轉換為 3D 貼圖,並 將採樣近似方式設定為 GL_LINEAR,在視圖渲染時傳入以下貼圖座標即可內插 取得間接照明貢獻度結果: 𝐹𝑟𝑎𝑔𝑙𝑝𝑣 =. 𝐹𝑟𝑎𝑔𝑤𝑜𝑟𝑙𝑑 − 𝐴𝐴𝐵𝐵. 𝑙𝑜𝑤𝑒𝑟𝑏𝑜𝑢𝑛𝑑 𝑟×𝑣𝑜𝑙𝑢𝑚𝑒. 𝑙𝑒𝑛𝑔𝑡ℎ. 其中𝐹𝑟𝑎𝑔𝑙𝑝𝑣 為採樣 LPV 時的貼圖座標;𝐹𝑟𝑎𝑔𝑤𝑜𝑟𝑙𝑑 為可視點的全域座標。. 4-5 使用 OpenVR OpenVR 是一套能夠不倚賴 VR 發行商的開發工具,實現將電腦圖像呈現至 各大虛擬實境裝置的函式庫 [15],其由 Valve 開發並支援旗下的 HTC Vive,同 時根據 Razer 提出的 VR 標準,聲稱支援各大 VR 裝置 [16]。進行實驗的裝置為 HTC Vive,因此根據 OpenVR 的官方範例,透過 OpenVR 將本 OpenGL 實作的 成果呈現至 VR 裝置相當容易使用。 使用 OpenVR 時,只要透過 VR_Init 即可啟動 VR 裝置,但如要更輕易地處 理 VR 裝置給予的資訊,省去處理訊號的形變( distortion )、裝置姿態預測或同步 問題,可使用 VRCompositor 物件,來更加輕易地取得 VR 的姿態資訊。 針對 VR 裝置姿態的轉換矩陣,VRCompositor 物件提供主要的幾個轉換矩 陣: 25.

(33) 1.. 根據轉頭、抬頭及低頭,計算場景可視範圍的旋轉及位移的 矩陣,相當於處理頭與軀幹的位置及關係. 2.. 處理各個旋轉角度,視點位移的矩陣,相當於處理眼睛與頭 的位置及關係。由於在 VR 中呈現場景須呈現視差產生立體 感,這個矩陣左眼及右眼各提供一份。在 HTC Vive 上提供調 整左右眼差距的功能,調整後會影響此矩陣的數值. 3.. 場景的透視( perspective )投影矩陣。理論上兩眼的投影矩陣應 該要相同,但由於訊號形變的關係,兩眼的投影矩陣會有一 點點的調整,使得投影矩陣也有兩份。. 然後就是透過 OpenGL 繪製場景,由於要處理視差的問題,必須要有兩份 貼圖儲存不同眼的繪製結果,其解析度將以 IVRSystem::GetRecommendedRenderTargetSize 取得 VR 裝置的解析度,最後再將兩份貼圖以 VRCompositor::Summit 上傳至 VR 裝置的兩眼顯示區域,即完成 VR 裝置的結果顯示傳遞。. 26.

(34) 第五章 實驗結果 5-1 全域照明效果 首先就是全域照明效果的比較,以下是直接照明、LPV 的間接照明和全域 照明結果比較: Direct Lighting. Indirect Lighting( LPV ). Global illumination. 表1 及時全域照明結果 可以看到透過 LPV 呈現某些全域照明效果時相當好,照射在不同顏色物體 上的反光相當明顯,因為直接照明和傳遞之後產生的亮度差異也有所不同。 以下是各個 LPV 的𝑐00 ,由於此頻率和方向並無相關(參照 3-2 球諧函數表及 4-3 的離散 SH 轉換),只與顏色相關,可以很直接地呈現該 LPV 的顏色和貢獻 度,以此觀察傳遞次數不同,LPV 資訊的變化: 27.

(35) 0. 1. 3. 5. 表2 傳遞次數與容積體資訊. 表中單位為傳遞次數 傳遞次數 0、1、3、5 時,LPV 座標 z=7 的𝑐00 狀態,直接顯示顏色與傳遞的狀態 可以看到在表 2 中,未傳遞時僅有被光線直接照到的地方有貢獻度;隨著 傳遞次數越多,相鄰的 LPV 有越來越多的照明資訊,多到一定程度以上顏色也 會混合。 除了傳遞次數,間接照明效果也和 LPV 解析度有很大的關係: 8×8. 16×16. 32×32. 表3 LPV 解析度和全域照明效果差別. 表中 LPV 單位為立體像素( texel ) 可以看到當解析度低時,由於同一個容積體內,VPL 的顏色和輻射方向較 多,由於使用的 SH 頻率僅𝑙 ≤ 1,進行 SH 係數累加時,係數會因顏色及方向的 關係而被抵銷,產生無法呈現不同顏色反光的結果;又因為容積體中大多數的 VPL 為接近白色的顏色,在相加時其他顏色的表現將極端不明顯。亮度差異部 28.

(36) 分,8×8的畫面中較多是有 VPL 的容積體(解析度低則容積體佔的空間較大),且 因為傳遞次數少,貢獻值的遞減次數較少,因此亮度較高;而32×32則是因為多 次傳遞之後貢獻遞減次數較多,因此需要傳遞較遠的容積體亮度就不高。. 5-2 效能測試 以下為測試效能所使用環境,以及本論文實作各項參數及幀數狀況: CPU. Intel Xeon E5506@2.13GHz. GPU. NVidia GTX 970@1228MHz. VGA Driver. NVidia GeForce Driver 376.53. VRAM. GDDR5 4G@7010MHz, 256bit. DRAM. DDR3 6GB@1333MHz. OpenGL. OpenGL 4.0. IDE. Visual Studio 2015. Compiler. MSVC++ 14.0 表4 測試用系統規格. Triangles RSM 289,157. 256×256. LPV. Propagate. 32×32×32. 8 iterations. Resolution 1024×768. FPS 120( 34 ). 表5 實作成果效能及各項參數. 本實作以 Crytek 的 Sponza 場景作為實驗場景,括號內為光源移動時的每秒幀數 (frame per second,簡稱 FPS) 29.

(37) 對於平行化的測試分為三種處理策略: 1.. 使用 CPU 處理植入和傳遞. 2.. 使用 CPU 處理植入,以斷片著色器處理傳遞. 3.. 使用斷片著色器處理植入及傳遞. 4.. 使用計算著色器處理植入及傳遞. 2 為本篇論文實作之方法,4 為參考 [12]的實作結果修改而得之測試。下表 為以上四種狀況對於 RSM 解析度的互動性比較: Triangles. LPV. Propagate. Resolution. 289,157. 32×32×32. 8 iterations. 1024×768. 128×128. 256×256. 512×512. 方法 1. 11. 9. 8. 方法 2. 34. 26. 12. 方法 3. 12. 6. 2. 方法 4. 44. 42. 35. RSM 解析度 處理方法. 表6 平行化效能比較. 此表單位皆為每秒幀數( fps )。由於光源未移動時不必更新 LPV 資訊,幀數更新 速率都相當高,此表僅呈現光源移動中的幀數。 方法 1 在完全沒有平行化的狀況下,RSM 解析度對於效能的影響並不大, 但由於傳遞資訊耗時過長,使其互動性較低;方法 3 則是因為此實作方法讓每 30.

(38) 個斷片都利用迴圈掃描所有的 VPL,又 GPU 在進行分岔效能較 CPU 來得低, 不僅互動性較差,RSM 的解析度對其效能影響也相當大;方法 2 取方法 1 及方 法 3 之間較折衷的方式,獲得較佳的互動性;方法 4 則是利用 OpenGL 4.2 後提 供在著色器語言的 imageAtomicAdd 函式,在計算著色器中進行 SH 累加,真正 完全平行化光照資訊植入的步驟。 對於四個方法主要的差異在於植入光照資訊以及傳遞貢獻度的兩個階段, 為了利於探討每種方法造成延遲的狀況,以下是每種方法在各個階段的執行時 間狀況: LPV. RSM. Propagate. 32×32×32. 256×256. 8 iterations. 光照資訊植入. 貢獻度傳遞. 方法 1. 10. 91. 方法 2. 10. 30. 方法 3. 122. 29. 方法 4. 6. 15. 處理方法. LPV 階段. 表7 平行化方法的時間比較. 表 7 單位為毫秒( micro seconds ). 31.

(39) 5-3 以 VR 裝置顯示對效能的影響 在 VR 裝置上顯示結果唯一的差別就是要同時繪製左右眼的可視圖,但兩個 繪製過程都僅是對於 LPV 的結果進行採樣,對於主要影響效能的 LPV 運算並無 改變,但因為 OpenVR 在利用 VRCompositor 取得矩陣時,會等待 VR 裝置的更 新,而 HTC Vive 的更新頻率為 100Hz,因此光源不動的情況下,畫面更新頻率 也降至 100fps 以下;而光源移動中的互動性雖皆有下降,但並無太大改變。. 32.

(40) 第六章 結論 使用 OpenGL 函式庫的最大好處為跨平台,然而由於不同平台的版本限制 使得即時運算的效能及互動性依然存在一些限制。在此方法實作下,確實滿足 即時運算呈現結果的條件,且繪製的結果透過 VR 顯示相較於透過一般螢幕的平 面顯示,立體效果及全景視野確實具有較為身歷其境的效果。 透過目前常用的光傳遞容積實作的結果已經具有間接照明的效果,但如要 提高品質,多數應用都結合光傳播容積以及不同的環境光遮蔽( ambient occlusion )方法,來達到更高品質的即時運算結果;又或者場景主要以戶外為主,間 接照明的效果不明顯,使用環境光遮蔽的效果就足夠;如僅有特定區域需要間 接照明資訊的情況下,在光偵測子以及光傳遞容積之間取得平衡,令使用者能 夠指定特定區域,使用能夠快速運算的低階球諧函數來儲存間接照明資訊,亦 能產生不錯的間接照明效果。 由於 VR 裝置日漸盛行,用途也愈見廣泛,雖然用於展示預先繪製的結果相 當華麗,但在遊戲、設計或其他需要高互動性的使用情境下,依然需要即時運 算的方法來完成畫面的繪製,光傳遞容積提供不錯的解決方案,但由於其僅處 理漫射光的限制,依然無法滿足很多情境下的全域照明處理。近期 NVidia 的硬 體漸漸支援立體像素錐體追蹤的加速,待其成熟即可將該應用進一步在 VR 裝置 上使用,以增進即時全域照明的擬真效果。. 33.

(41) 參考文獻 [1] brc5198, "What Makes Next Generation Graphics," 8 February 2016. [Online]. Available: https://sites.psu.edu/ist446/2016/02/18/what-makes-next-generationgraphics/. [Accessed 23 June 2017]. [2] A. Kaplanyan and C. Dachsbacher, "Cascaded Light Propagation Volume for Real-Time Indirect Illumination," in 2010 ACM SIGGRAPH, 2010. [3] J. T. Kajiya, "The Rendering Equation," in 13th annual conference on Computer graphics and interactive techniques. ACM., 1986. [4] H. W. Jensen, "Global Illumination using Photon Maps," in Rendering Techniques '96, 1996. [5] C. Dachsbacher and M. Stamminger, "Reflective Shadow Maps," in I3D '05, 2005. [6] R. Green, "Spherical Harmonics Lighting," in GDC '03, 2003. [7] R. Cupisz, "Light probes – Unity Blog," 9 3 2011. [Online]. Available: https://blogs.unity3d.com/jp/2011/03/09/light-probes/. [Accessed 25 6 2017]. [8] Cyril Crassin;Fabrice Neyret;Miguel Sainz;Simon Green;Elmar Eisemann, "Interactive Indirect Illumination Using Voxel Cone Tracing," in Pacific Graphics 2011, Kaohsiung, 2011. [9] J. Koivisto, "Monte Carlo path tracing," in Spring 2002 Advanced Rendering Techniques, 2002. [10] A. Kaplanyan, Presentation "Cascaded Light Propagation Volumes for Indirect Illumination", 2010. [11] WojciechJarosz, "Efficient Monte Carlo Methods for Light Transport in Scattering Media," San Diego, University of California, San Diego, 2008, p. Appendix B: Spherical Harmoics. [12] djbozkosz, "GitHub - djbozkosz/Light-Propagation-Volumes: Master's Thesis," 17 October 2015. [Online]. Available: https://github.com/djbozkosz/LightPropagation-Volumes. [Accessed 26 June 2017]. [13] various, "Compute Shader - OpenGL Wiki - Khronos Group," 16 January 2017. [Online]. Available: https://www.khronos.org/opengl/wiki/Compute_Shader. [Accessed 26 June 2017]. [14] A. Kaplanyan, "Light Propagation Volumes in CryEngine 3," in SIGGRAPH 2009, New Orleans, 2009. 34.

(42) [15] JoeLudwig, ZoidCTF, holocronweaver, MarkOates and FGlazov, "API Documentation · ValveSoftware/openvr Wiki · GitHub," 21 April 2015. [Online]. Available: https://github.com/ValveSoftware/openvr/wiki/API-Documentation. [Accessed 30 June 2017]. [16] M. Porter, "Valve's OpenVR Signs Up to Razer's Virtual Reality Standard IGN," 19 May 2015. [Online]. Available: http://www.ign.com/articles/2015/05/19/valves-openvr-signs-up-to-razersvirtual-reality-standard. [Accessed 30 June 2017].. 35.

(43)

參考文獻

相關文件

In the algorithm, the cell averages in the resulting slightly non-uniform grid is updated by employing a finite volume method based on a wave- propagation formulation, which is very

Since Venerable Master Hsing Yun has authored a large quantity of publications, this paper mainly focuses on the first few chapters in the first volume of the Hundred Saying Series

† Institute of Applied Mathematical Sciences, NCTS, National Taiwan University, Taipei 106, Taiwan.. It is also important to note that we obtain an inequality with exactly the

LEARN CARDS WRITE MATCH TEST... How students make use

volume suppressed mass: (TeV) 2 /M P ∼ 10 −4 eV → mm range can be experimentally tested for any number of extra dimensions - Light U(1) gauge bosons: no derivative couplings. =&gt;

In this paper, we develop a novel volumetric stretch energy minimization algorithm for volume-preserving parameterizations of simply connected 3-manifolds with a single boundary

to introduce how teachers may enhance learning and teaching effectiveness by adopting virtual reality (VR) technology and relevant strategies in the classroom as well as

Soft Shadow Volume Algorithm Using