研究生: |
鄒毓偉 ZOU, Yu-Wei |
---|---|
論文名稱: |
光線追蹤在OpenCL平台下使用堆疊在加速結構中效能之探討 Performance Evaluation of Acceleration Structures with Stack for Ray Tracing in OpenCL |
指導教授: |
張鈞法
Chang, Chun-Fa |
學位類別: |
碩士 Master |
系所名稱: |
資訊工程學系 Department of Computer Science and Information Engineering |
論文出版年: | 2017 |
畢業學年度: | 105 |
語文別: | 中文 |
論文頁數: | 53 |
中文關鍵詞: | 光線追蹤 、計算機圖學 、OpenCL 、BVH-tree |
英文關鍵詞: | ray tracing, computer graphics, OpenCL, BVH-tree |
DOI URL: | https://doi.org/10.6345/NTNU202203472 |
論文種類: | 學術論文 |
相關次數: | 點閱:148 下載:9 |
分享至: |
查詢本校圖書館目錄 查詢臺灣博碩士論文知識加值系統 勘誤回報 |
光線追蹤是一種在計算機圖學中用於繪圖的演算法,藉由以物理的光學為基礎,模仿光的自然現象,能讓渲染出的場景更具真實性,然而,提升真實性的代價,就是必須大量運算光線追蹤演算法中的數學公式,使得光線追蹤演算法相較於其他演算法渲染速度來的慢,為了改善此缺點,使用開放式計算語言(OpenCL)來進行多核心的平行化運算,並且將場景物件資訊建構成Bounding volume hierarchy (BVH) tree的加速結構,藉由以上的加速方法,能夠縮短完成渲染工作的時間。
使用OpenCL API後,將光線追蹤演算法中龐大的計算量做平行處理,但實際應用後,可以發現OpenCL的內核(kernel)在撰寫時會有許多限制,尤其是函式無法遞迴呼叫和本研究最為相關,論文程式中,有使用到樹狀的加速結構, 所以要有tree traversal的方法,在OpenCL有自己實作的記憶體空間,為了模擬陣列而宣告的stack在kernel函式中,要宣告於何種記憶體空間裡,是程式設計師可以選擇的,本論文就是研究在各個種類的OpenCL記憶體中以及改變一些參數來實作stack時,來觀察以及探討效能的表現與變化。
Ray tracing is an Algorithm that used to render picture in computer graphics. It is based on ray in physical properties and imitates the natural phenomena of ray, which makes the rendered scene becomes more realistic. However, the cost of improving realistic is must compute a large number of operations in ray tracing. In order to improve this disadvantage, OpenCL is used to perform parallel computing on multi-core platform, and the object in the scene is constructed as an acceleration structure that called Bounding volume hierarchy tree. The acceleration method can reduce rendering time.
After using the OpenCL API, A large number of operations in ray tracing is parallel. However, there are some limitations programming kernel of OpenCL, especially tThe function can’t be called recursively in kernel. The program uses an acceleration structure in tree structure, so it must have the way to traverse the tree structure. OpenCL has its own implementation of the memory space, the programmer can choose which type of the memory space to simulate the array and declare the stack in the Kernel function. The purpose of this paper is to study the performance to change some parameters and implement the stack in a variety of OpenCL memory.
[1]T. Whitted "An improved illumination model for shaded display"
Communications of the ACM, Volume 23 Issue 6, Pages 343-349, 1980.
[2] H. J. Haverkort, Results on geometric networks and data structures Chapter 1: Introduction, page 9-10+16, 2004.
[3] Intel®, Developer Zone - The Compute Architecture of Intel® Processor Graphics Gen8. Available:https://software.intel.com/sites/default/files/Compute%20Architecture%20of%20Intel%20Processor%20Graphics%20Gen8.pdf
[4] Nvidia, GeForce - Whitepaper NVIDIA GeForce GTX 980.
Available:https://international.download.nvidia.com/geforcecom/international/pdfs/GeForce_GTX_980_Whitepaper_FINAL.PDF
[5] Khronos Group, OpenCL - The OpenCL Specification version 1.2
Available: https://www.khronos.org/registry/OpenCL/specs/opencl-1.2.pdf
[6] Intel®, Developer Zone - Taking Advantage of Intel® Graphics with OpenCL
Available:
https://software.intel.com/en-us/articles/taking-advantage-of-intel-graphics-with-opencl
[7] Assimp - Open Asset Import Library. Available: http://www.assimp.org/
[8] M. Pharr and G. Humphreys, Physically based rendering: From theory to implementation, 2004.
[9] R. L. Cook, T. Porter, and L. Carpenter, "Distributed ray tracing"
ACM SIGGRAPH Computer Graphics Volume 18 Issue 3, Pages 137-145, 1984.
[10] M. Hapala, T. Davidovič, I. Wald, V. Havran, and P. Slusallek, "Efficient stack-less BVH traversal for ray tracing"
Proceedings of the 27th Spring Conference on Computer Graphics, SCCG '11.