Incremental Instant Radiosity Implementation -- 羅應陞
Two extra shots
Abstract

我在Unity遊戲引擎下實作Incremental instant radiosity,並透過Physics.Raycast來達到shooting shadow ray的功能來判斷VPL和primary light間是否受到遮擋,

由於受限於第三方Voronoi diagram solver的限制,僅能處理二維的坐標,所以只實做了spotlight的部分,另外再Visualize Voronoi diagram的部分,由於Unity並沒有提供方便的繪製簡單線條的工具,當初嘗試了Texture2D的方式透過setPixel填入對應的顏色,結果發現這樣導致FPS大幅下降,所以我改用以native OpenGL API來達到快速繪製且不降低FPS的效果。

Authors
Abstract

我在Unity遊戲引擎下實作Incremental instant radiosity,並透過Physics.Raycast來達到shooting shadow ray的功能來判斷VPL和primary light間是否受到遮擋,

由於受限於第三方Voronoi diagram solver的限制,僅能處理二維的坐標,所以只實做了spotlight的部分,另外再Visualize Voronoi diagram的部分,由於Unity並沒有提供方便的繪製簡單線條的工具,當初嘗試了Texture2D的方式透過setPixel填入對應的顏色,結果發現這樣導致FPS大幅下降,所以我改用以native OpenGL API來達到快速繪製且不降低FPS的效果。

Technical introduction
  • 每個 frame 的更新流程:
  1. Delete invalid VPLs
  2. Reproject existing VPLs to a 2D domain according to the new light source position
  3. Delete more VPLs if the budget says so
  4. Create new VPLs
  5. Compute VPL intensities
  • 計算voronoi cell的面積方式(polygon area + circle segment area)
  • Support Indirect soft shadow
  • Support dynamic scene
  • Support multiple primary lights
Video