Skip to content
Petra Gospodnetic edited this page Aug 21, 2017 · 219 revisions

Google Summer of Code 2017

Weekly Report on Many-light Sampling Method

Goal of the project is to integrate the new many-light sampling algorithm proposed by Nathan Veghdal

  1. May 15th - May 30th (Community Bonding Period)

  2. May 31st – June 2nd

  3. June 5th - June 9th

  4. June 12st – June 16th

  5. June 19th – June 23rd

  6. June 26th – June 30th

  7. July 3rd – July 7th

  8. July 10th – July 14th

  9. July 17th – July 21st

  10. July 24th – July 28th

  11. July 31st – August 4th

  12. & 13. August 7th - August 18th


  • SAH partitioner without split stop
SAH partitioner without the split cost stop - comparison
SAH + squared distance
SAH + solid angle
CDF
Squared distance node prob evaluation
converging 1s
LT + SAH partitioner
LT + Middle partitioner
CDF

Nathan's LightTree tests

Appleseed 2 Psychopath comparison
Appleseed Psychopath
16spp
Middle Partitioner + squared distance
n/a
Middle Partitioner + solid angle
n/a
SAH Partitioner + squared distance
SAH Partitioner + solid angle
  • It seems that appleseed's and psychopath's SAH partitioners do not behave the same.

    • I would expect it to behave very similar to middle partitioner in this case, where the lights are uniformly distributed over the scene, but it never performs the horizontal split
  • The partitioners did not behave the same because the surface of vertical bbox is smaller than the surface of the rectangular bbox (containing the same number of light sources) and therefore the partitioner was still not splitting along the longest dimension.



1 2 1
-----
*   *|   1
     |   2
*   *|   1
     |   2
*   *|   1
     |   2
*   *|   1

 -----
|*   *|
|     | A = 4 * 4 = 16
|*   *|
 -----

 -
|*|
| |
|*|
| | A = 10 * 1
|*|
| |
|*|
 -
  • After modifying SAH to split along the longest dim:
Appleseed 2 Psychopath longest dimension split SAH comparison
Appleseed Psychopath
16spp
SAH Partitioner + squared distance
SAH Partitioner + solid angle
  • Add reference in the code to the used article
  • FIX the rendering artifact in the EMT-NPL scene
    • source of the problem was that the contribution returned zero contribution for some cases, which would cause the overall light probability to be zero as well
    • fixed it by returning value slightly greater than zero
EMT-NPL scene
CDF LightTree with hemispherical light approximation
  • Improved sub-hemispherical light approximation
    • in case of point being outside of the node, evaluate it using square distance light attenuation instead of surface area.
Improved sub-hemispherical approx
16spp
Hemispherical light approx
Improved hemispherical light approx
Improved sub-hemispherical approx
16spp
CDF
Improved hemispherical light approx
Hemispherical light approx

Currently working on:

  • Implement proprietary LightTree partitioner

    • partitions lights based on:
      • surface
      • intensity
      • orientation
  • Produce many light test scenes

    • many NPL light sources
    • many mixed light sources

Ideas on Implementing Light Tree Sampling Based on the Light Orientation

  • Cone of normals
  • K-means of children vertices

Optimization TODO

  • Store items within the LightTree nodes
  • Store bbox node info within the node itself
  • Reduce number of variables set by recursive_node_update() (i.e. variables which can be set during the building time)

Collection of useful papers