Skip to content
Petra Gospodnetic edited this page Aug 17, 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


Solid Angle Light Evaluation

  • Psychopath doesn't have MIS implemented

  • Shading point in pathvertex can only provide point on the surface to be evaluated, but not the ShadingPoint hit before

    • both DirectLightIntegrator and PathTracer have knowledge about the parent shading point, we just need to expose it to the PathVertex
    • I am currently working on it, but it seems that I am missing a condition when assigning it so I get an assertion error right now
  • Store all shading points of a single path into a memory arena within the PathTracer

  • Store last parent shading point

  • Expose the parent shading point to the PathVertex

  • use ShadingPoint instead of a regular point in node evaluation

  • Use parent shading point for evaluate_pdf both in DirectLightIntegrator and PathTracer

  • added projected solid angle light evaluation

  • debugged edge case output from sub_hemispherical_light_source_contribution() when node probabilities p1 and p2 are of similar values with different signs which is illegal! e.g.

approx_contribution p1:   -5.144703
approx contribution p2:    5.185083
                 total:    0.040380
                    p1:   -127.405693
                    p2:    128.405701
  • The bug was introduced with the solid angle eval approach
  • FIX: handle an edge case where a negative 0 is returned
Light tree with hemispherical light source approximation
converging 30s
CDF LightTree
converging 1min
Light Tree node evaluation comparison
Squared distance Hemispherical light approximation
25spp
NPL-EMT mixed evaluation
CDF lightTree
converging

The new hemispherical approximation produces a defect in rendering with the EMT-NPL scene. (shadow to light transition on the sphere)

  • Built an many EMT light test scene containing 50,340 EMTs

    • use of LightTree reduces noise at 16spp but doesn't offer speed improvement
  • Tested SAHPartitioner with the current LightTree

    • SAHPartitioner does not produce correct result because it doesn't force the split for overlapping bboxes
    • Such behavior results with multiple EMTs being stored in a single node and makes the rendering incorrect because some lights get completely ignored.
Appleseed basement workshop scene
CDF LightTree
16spp
Converging 1 min

Currently working on:

  • FIX the rendering artefact in the EMT-NPL scene
  • Add reference in the code to the used article

LightTree seem to be working a bit slower than the CDF approach for small number of light sources.

  • Produce many light test scenes
    • many NPL light sources
    • many EMT 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