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

Erik Englesson erikenglesson at gmail.com
Fri Jul 13 16:11:36 CEST 2018


Hi all,

Here is my weekly report:

*This week* I have started implementing the things described in the paper
<http://www.aconty.com/pdf/many-lights-hpg2018.pdf> Brecht found last week:

   - Split Heuristic <https://developer.blender.org/rBc6bd7a974b34>: The
   new splitting heuristic is based on the estimated variance of the lighting
   in the cluster.
      - Comment: This heuristic splits a lot more which affects
      performance. One of my test scenes rendered ~10x slower than with the old
      heuristic.
      - Random Number Rescaling
   <https://developer.blender.org/rB2d6e1ddb94a3>: This rescaling is used
   in the tree traversal.
   - Importance Metric <https://developer.blender.org/rB260b2e9e20ac>: This
   metric now also considers a term that represents a "conservative and
   arbitrary approximation of the surface BSDF times the irradiance".
   - Comment 1: They say they use a diffuse approximation of the surface
      BSDF. For now, I do something similar to bsdf_diffuse_eval_reflect().
      - Comment 2: This new term of the importance metric depends on the
      surface normal at the shading point which makes the MIS PDF calculations
      also depend on this normal.
      - Cone Aggregation and Measure
   <https://developer.blender.org/rB8a0ff32abda6>: They did not even
   mention cone aggregation in the abstract/slides so I implemented the first
   thing that came to mind. Now that they have described how they do it then I
   changed to do the same. The measure is similar to before.
   - SAOH Regularization Factor
   <https://developer.blender.org/rB0db119ad11e4>: This factor will
   penalize thin bounding boxes in the tree build.

Also, some bugs were fixed <https://developer.blender.org/rBff4833a6b395>.

*Next week* I want to:

   - Investigate if the performance degradation really is because of the
   new splitting heuristic.
   - It would be good to test the implementation more. Right now, I have
   mostly tried branched path tracing with no subsurface, no volumes etc. This
   might bring bugs to light.
   - Implement several emitters per leaf node
   - To do this, the build algorithm and the tree traversal has to be
      changed. If a leaf with several emitters is found during tree traversal
      then a CDF is generated on the fly based on the importance of each of the
      emitters and then this is sampled.
      - This might improve the performance of the tree traversal.

If there is more time, I am not sure if I should improve what I already
have(e.g. distant light sampling, tests, optimization, etc) or start the
implementation of the volume part.

Have a good weekend!

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


More information about the Soc-2018-dev mailing list