5.1 結論
本研究的貢獻在於使用 OpenCL 加速蒙地卡羅光線追蹤於手機平台上,並比 較和電腦上的差異,對於目前手機動畫或是遊戲並沒有人使用光線追蹤來實作,
因為光線追蹤運算量過大需花費大量計算時間。但光線追蹤在計算機圖學上卻是 具有高擬真度的渲染技術。本研究採用蒙地卡羅路徑追蹤來渲染 3D 場景,本研 究也使用了 K-D Tree 做場景中的加速,可以明顯的看出使用加速結構後的明顯差 異,對於較複雜的場景,其加速效果相對較好,也可以看出手機 GPU 上對於分歧 分支的延遲。並找出因為手機上的 GPU Local Memory 不足的情況,導致無法再 繼續加速。本研究還使用相同演算法在電腦上和手機上跑數據,並比較兩者之間 的差別。在兩萬片的三角片計算上,手機 GPU 需花費 53.66 秒,CPU 則為 120.069 秒。當有了 K-D Tree 後速度明顯加快,GPU 只需 5.316 秒,CPU 需 9.831 秒。如 果在沒有 Local Memory 的限制下 GPU 的速度會在相對提升。此研究使用蒙地卡 羅路徑追蹤演算法讓實驗結果能在手機上產生良好的全域照明效果,實驗結果雖 無法達到即時效率但也盡可能讓光線追蹤在手機上也能調適達成 Interactive Rate
更新畫面的效率,目前在網路上或其他論文中尚未看到有相關類似的研究,隨著 手機的普及性和重要性來說相信對電腦圖學領域和手機是一個新的嘗試,對未來 發展手機遊戲也能有良好的貢獻。
5.2 未來展望
本研究可以看出手機GPU的分歧分支問題導致加速倍率下降,也可發現因為 K-D Tree採用堆疊的走訪方式讓手機上的Local Memory耗盡,也許可以嘗試其他 加速結構來配合手機上的硬體規格,讓此技術能有更好的效能。本研究未來可以 針對適合手機GPU特性來調整加速結構演算法,降低分歧分支所造成的效能損失,
和減少Local Memory使用量讓研究可以達到即時的全域照明效果,來達到更真實 的渲染。因本研究採用Asus PadFone S此台手機只支援OpenCL 1.1版本,但OpenCL 2.0版本將支援SVM的特性,也許未來如採用OpenCL 2.0特性會讓整體效能再更上 層樓。
參考文獻
[Son 11] Son, K.C., Lee, J.Y., 2011. The method of android application speed up by using NDK. Awareness Science and Technology of 3rd International Conference. 382-385.
[Kajiya 86] Kajiya, J.T., 1986. The rendering equation. Computer Graphics.
SIGGRAPH 1986, 143-150.
[Keller 12] Keller, A., Premoze, S., Raab, M., 2012. Advanced (quasi) monte carlo methods for image synthesis. SIGGRAPH 2012.
[Wang 14] Wang, Y., Liu,C., Deng,Y., 2014. A feasibility study of ray tracing on mobile GPUs. SIGGRAPH Asia 2014, Mobile Graphics and Interactive Applications.
[Zhou 08] Zhou, K., Hou, Q., Wang, R., and Guo, B., 2008. Real-time k-d tree construction on graphics hardware. SIGGRAPH Asia 2008, 126:1-126:11
[Foley 05] Foley, T., and Sugerman, J., 2005. K-d tree acceleration structures for a GPU ray tracer. In Proceedings of the ACM SIGGRAPH/
EUROGRAPHICS Conference on Graphics Hardware, 15-22.
[Horn 07] Horn, D. R., Sugerman, J., Houston, M., and Hanrahan, P., 2007.
Interactive k-d tree GPU ray tracing. In Proceedings of Symposium on Interactive 3D graphics and Games, 167-174.
參考資料
[1] KHRONOS, 2011. OpenCL overview. https://www.khronos.org/opencl/
[2] JNI, 2011. http://zhuruenzhe2011-163-com.iteye.com/blog/1630531 [3] WIKI, Random number generation.
http://en.wikipedia.org/wiki/Random_number_generation
附錄
列出重要的 JNI 資料轉換程式碼: