August 12, 2018, 10:30 (GMT) 
Merge branch 'master' into gsoc2018manylightsampling 
August 12, 2018, 09:59 (GMT) 
Cycles: light_tree_pdf() now accounts for splitting For the MIS calculations we need to be able to calculate the probability to sample a light using the light tree. This did not account for splitting so if splitting was used the probability would be wrong. This has now been fixed. Also, if we are in PATH mode then the splitting threshold is set to zero. 
August 12, 2018, 09:57 (GMT) 
Cycles: Removed unused code The simplified GGX code is no longer needed with the new splitting heuristic and has now been removed. 
August 10, 2018, 15:34 (GMT) 
Cycles: Removed energy term in SAOH denominator This should not affect the result since it is just a scale factor to all terms in the minimization. This term was not in eq. 2 of the paper. 
August 10, 2018, 15:31 (GMT) 
Cycles: Added more comments and renamed variables More code comments have been added to all code related to the light tree. I also renamed all uses of "light BVH" to use light tree instead to keep everything consistent. Functions and variable names that used the camel case naming convention has been changed to follow Blender's code style. Also, unneeded includes were removed. 
Revision 94af432 by Erik Englesson (gsoc2018manylightsampling) August 3, 2018, 15:24 (GMT) 
Cycles: Light tree: volume and MIS fixes Now using a more reliable way of knowing if a shading point is inside or on the boundary of a volume. Fixed a bug in light_background_sample() that used an index into the lights array as an index into the distribution array. 
Revision f630504 by Erik Englesson (gsoc2018manylightsampling) August 3, 2018, 15:24 (GMT) 
Cycles: Light tree split heuristic fix Doubles are no longer needed in the split heuristic calculations. 
August 3, 2018, 15:22 (GMT) 
Cycles: Light tree: energy and light picking fixes When calculating the energy for a light source I previously returned zero energy if is_constant_emission() returned false. This has now been changed so it uses an emission of (1,1,1) instead. The normal that is used for light picking for the BSDF approximation in the importance calculations now takes into consideration if the point is on glass, a reflective or transmissive surface. The position and normal used for light picking is now stored in the ShaderData struct. 
Revision 5d344f4 by Erik Englesson (gsoc2018manylightsampling) August 3, 2018, 15:22 (GMT) 
Cycles: Light tree: Area light fix The bounding boxes for area lights was not calculated properly but has now been fixed. 
Revision e8e0669 by Erik Englesson (gsoc2018manylightsampling) August 3, 2018, 15:22 (GMT) 
Cycles: Picking position and normal fix for MIS The picking position and normal has been changed to use the position and normal from the last nontransparent bounce. 
August 3, 2018, 15:21 (GMT) 
Cycles: Light tree instancing and energy fixes Instancing for mesh lights now works with the light tree. The conversion from emission to luminance is now using linear_rgb_to_gray() instead. 
July 30, 2018, 10:03 (GMT) 
Fix CUDA build for many light sampling, still fails when running. 
July 30, 2018, 10:03 (GMT) 
Fix missing viewport update when toggling light BVH option. 
July 27, 2018, 16:19 (GMT) 
Cycles: WIP: Volumes are not using the light tree. If a shading point is inside or on the boundary of a volume then it will use the old sampling method until we have properly implemented the volume parts of the paper. Also, the PDF picking probability for volumes have now been updated properly since the PDF restructure. Tried to provide the correct shading point and normal to the MIS calculations. This part needs more work. 
July 27, 2018, 16:18 (GMT) 
Cycles: Light tree optimization The importance metric calculations now uses the fast_cos() and fast_acos() functions. This gave a 1.4x speedup on one of the test scenes. 
July 27, 2018, 16:16 (GMT) 
Cycles: Light tree related bug fixes  Fixed bug in triangle_light_pdf_area() from PDF refactor  Early exit if picking prob is zero in tree traversal  The background index is now an index into the lights array instead of the distribution array. 
July 20, 2018, 12:29 (GMT) 
Cycles: Several emitters per leaf in light tree This commits makes it possible for leaf nodes in the light tree to have more than one emitter. This reduces the maximum depth of the light tree which makes the traversal of the tree faster but the sampling code is slower if a leaf with several emitters is found. Technical details:  If cost of splitting in build is larger than the energy of the node then we create a leaf instead of splitting.  Maximum emitters per leaf is now set to 64  During traversal if a leaf with several emitters is found then we sample one of these based on the importance of each emitter. This is calculated on the fly and therefore a CDF generation without dynamic allocation was implemented.  Moved the distribution id to node id lookup from light_distribution_pdf() to light_bvh_pdf(). 
July 13, 2018, 11:47 (GMT) 
Cycles: Bug fixes  Stopping recursive tree traversal if negative PDFs are encountered.  accum_light_tree_contribution() now takes a scale factor as input which is passed through to accum_light_contribution  light_bvh_sample now changes randu. This is similar to the other *_sample functions. This fixed a bug where recursive traversal with no splitting gave a different result compared to just using light_sample. 
July 13, 2018, 11:44 (GMT) 
Cycles: Updated SAOH with regularization factor This factor penalizes thin bounding boxes in the tree construction. 
July 13, 2018, 11:41 (GMT) 
Cycles: Updated cone aggregation and measure The paper provided a way to merge two bounding cones and an updated version of the cone measure. 
