Blender Git Commits

Blender Git "gsoc-2018-many-light-sampling" branch commits.

June 3, 2020, 22:21 (GMT)
Merge commit 'master' into gsoc-2018-many-light-sampling
June 2, 2020, 15:46 (GMT)
Merge commit 'e12c08e8d170b7ca40f204a5b0423c23a9fbc2c1' into gsoc-2018-many-light-sampling
June 2, 2020, 15:30 (GMT)
Merge commit 'e12c08e8d170b7ca40f204a5b0423c23a9fbc2c1^1' into gsoc-2018-many-light-sampling
August 12, 2018, 10:30 (GMT)
Merge branch 'master' into gsoc-2018-many-light-sampling
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.
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.
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.
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.
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
non-transparent 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().
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021