Ray Tracer -- 黃弘文
Two extra shots
Abstract

RayTracer Project

Authors
Hong-Wen Huang
Abstract

RayTracer Project

Technical introduction
  1. 從相機射出追蹤射線: 計算出Viewport上,在3D場景內,每個像素點中心的3D座標,並相機位置分別打出射往該座標的射線。
  2. 利用引擎計算射線的交點:利用Unity提供的API,在射線打出後,能夠取得到射線擊中的物件,並取得交點座標,及法向量,UV座標等資訊。
  3. 實作Whitted illumination model:通過計算射線打在物體上的折射,反射,並與場景中的光源作用,計算出shadow,反光等效果,參考作法網址:https://www.scratchapixel.com/code.php?id=8&origin=%2Flessons%2F3d-basic-rendering%2Fray-tracing-overview
  4. 計算三角形上的內插法向量:通過打中的三角形上的點,與三角形三個頂點上的向量做內插,取得內插後的法向量。
  5. 反鋸齒:在每個像素點上,平均的多從相機打出數條射線,並取得顏色後,取平均值作為該像素點的顏色。
  6. Beer’s Law:射線經過該材質的物體後,會根據在射線在該材質內所走距離,與設定的衰減量,使得材質呈現半透明的顏色。參考作法網址:https://blog.demofox.org/2017/01/09/raytracing-reflection-refraction-fresnel-total-internal-reflection-and-beers-law/
  7. 實作Fresnel reflection model:根據材質所設定的折射率,根據公式算出反射及折射的射線方向。
  8. 實作Area Light : 設定光為一個具有長寬的區域光源,並取出數個取樣點,當計算shadow時,同時向數個取樣點做計算,並將結果做平均。
  9. 實作射線分布: 實作的技術與Area Light相同,在適當時機點,打出數條射線追蹤。
  10. 實作Texture mapping:讀入一張貼圖,並利用交點在物體上的UV座標,取得貼圖上的顏色。
  11. 實作Bump mapping:讀入一張貼圖,並計算Normal Map上的資訊,得出物體法向量經Bump mapping後的向量值,作為射線交點上的法向量值。
  12. 實作Environment Mapping:當射線打不中任何物體時,藉由射線的方向,算出該射線取到的Skybox上的顏色,作為這次射線所取出的顏色。