Ray Tracer
Two extra shots
Abstract

Implement RayTracing in Unity 3D C#

 
Authors
Zhong-Qi Cai
Abstract

Implement RayTracing in Unity 3D C#

 
Technical introduction
  • Phong interpolation of normals on triangle meshes : 使用Unity的API取得交點所在的三角面重心權重,再根據三角形所在的三角面資訊去做重心內插。
  • Stochastic (jittered) super-sampling : 在兩個Sample之間多取幾個Sample,使用Uniform Jitter控制隨機的取法,讓取樣不會過於偏頗。
    參考資料 : https://goo.gl/JJfqV8
  • Modify shadow attenuation to use Beer's law : 光線發生折射在物體中時會因為物體的材質有不同的衰減情況,衰減的程度主要和光線在物體中行徑的距離成正向的指數成長。參考資料 : https://goo.gl/hF2ysS
  • Fresnel reflection model : 光會因為介質有不同的速度造成折射,Fresnel方程式定義了在同時發生反射和折射時光線的能量分量。
    參考資料 : https://goo.gl/z7X5e9
  • Implement distributed ray tracing and area light : 在Ray tracer中和光源做計算時,將每個光源都當作複數光源去做計算,產生Soft shadow的效果。
  • Texture mapping and Bump mapping : 物體的顏色和法向量改用貼圖來對應,根據貼圖座標去查找貼圖上的資訊取代原本的資訊。
    參考資料 : https://goo.gl/RTjm15https://goo.gl/nc1Vry
  • Photon mapping : 利用Fibonacci lattice演算法從光源均勻打出光子,光線經過物體時將光子資訊紀錄1並建立簡單的KD-Tree,最後從相機打出射線時根據交點附近的光子資訊計算出顏色。光源打出的光子應該改用隨機的方式,避免光子在某些地方會因為演算法的關係分布不好。
    參考資料 : https://goo.gl/cH8jgfhttps://goo.gl/KtDrcD