[Soc-2018-dev] Weekly Report #08 - Many Light Sampling

Erik Englesson erikenglesson at gmail.com
Mon Jul 9 11:25:52 CEST 2018


Great!

I have now read the paper and here are some interesting things mentioned in
it:

   - Regarding orientation bounds for mesh lights on page 4: "In the case
   of a mesh light, we use the fact that the mesh light is also clustered
   using a hierarchy and that we can use its root node directly."
      - Hinting that a separate light tree is constructed per mesh light
      and then merged with the final tree with all lights?
      - They provide an algorithm to combine two bounding cones. See
   algorithm 1 on page 5.
   - An explicit formula for the bounding cone measure is now provided in
   equation 1 on page 6.
   - The regularization factor to penalize thin boxes is now described on
   page 7.
   - The method now considers several emitters per leaf node:
   - On page 7: "Termination of the tree construction is driven by either
      reaching a single emitter per leaf, or by finding a point where the
      splitting cost is never better than the cost of producing a leaf"
      - On page 9: "At the leaves of the tree, if we have more than one
      light to choose from we simply build a discrete probability
distribution on
      the fly, again using our importance measure."
   - The importance of a cluster has been modified to now also depend on a
   "conservative and arbitrary approximation of the surface BSDF times the
   irradiance." See equation 3 on page 8.
   - How they rescale the random numbers is shown in algorithm 2 on page 10.
   - They have a new splitting heuristic based on the estimated variance of
   the lighting within a node. See equation 10 on page 12. They also describe
   how this heuristic is normalized between 0 and 1.
   - They describe how their method works with multiple importance sampling
   on page 13:
   - "However, to use our method with MIS, we need to be able to evaluate
      the probability of an arbitrary light source. This requires the
ability to
      reconstruct the path towards a specific leaf. We chose to use bit-trails
      [Laine 2010] to encode the left/right decisions required to reach each
      light source as an integer. This provides a compact encoding
that does not
      require the presence of parent pointers in the light tree. When a ray
      associated with a BSDF sample intersects a light source, we use the
      bit-trail path through the tree to traverse our light hierarchy while
      computing the probability"
   - Their implementation uses a quadtree instead of a binary tree as
   mentioned on page 15:
      - "While we have described our system as using binary trees, our
      practical implementation takes advantage of SIMD instructions
and builds a
      four-wide tree. This change reduces the overall depth of the tree, which
      improves stratification by reducing the amount of sample stretching in
      Algorithm 3. It does mean that the splitting operation follows four
      subtrees instead of two, but this can be compensated by
adjusting the split
      threshold."
   - On page 16, they provide the default splitting threshold they use.
   This might not be what we want if we use a binary tree though.

This information is great to have!

I will start by implementing the new splitting heuristic and then have a
look at modifying the cluster importance measure.

Thanks,
Erik
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.blender.org/pipermail/soc-2018-dev/attachments/20180709/e04e21d7/attachment.html>


More information about the Soc-2018-dev mailing list