Blender Git Loki

Git Commits -> Revision 1e43f0d

Revision 1e43f0d by Sergey Sharybin (master)
November 28, 2015, 15:07 (GMT)
Cycles: Set of fixes for delayed SSS ray tracing

There were multiple issues which are solved now:

- It was possible that ray wouldn't be bounced off the BSSRDF, for example
when PDF or shader eval is zero. In this case PathState might have been
left in pre-bounced state which would have been gave incorrect shading
results.

This is solved by having separate PathState for each of the hits.

- Path radiance summing wasn't happening correct as well, indirect rays
were using wrong path radiance in the case when there were more than
one hit recorded.

This is now using a bit trickier state machine which calculates path
radiance for just SSS (both direct and indirect) and then sums it back
to the final radiance.

- Previous commit wasn't totally correct either and was an induced bug
due to wrong path state left from the "un-happened" ray bounce.

There should be no special case happening here, BSSRDFs will be replaced
with diffuse ones due to PATH_RAY_DIFFUSE_ANCESTOR flag.

- Merged back codebases for "delayed" and "immediate" indirect SSS ray
tracing, hopefully making it easier to maintain the codebase.

Sure this changes brings memory usage back by about 4-5%, but overall
it's still about 2x memory reduction for the experimental kernel here.

Thanks Brecht for the review!

Commit Details:

Full Hash: 1e43f0d74216cc936e6a708be321ba2c05b66ca1
Parent Commit: 8919ed3
Lines Changed: +55, -74

3 Modified Paths:

/intern/cycles/kernel/kernel_bake.h (+4, -4) (Diff)
/intern/cycles/kernel/kernel_path.h (+47, -68) (Diff)
/intern/cycles/kernel/kernel_types.h (+4, -2) (Diff)
Tehnyt: Miika HämäläinenViimeksi päivitetty: 07.11.2014 14:18MiikaH:n Sivut a.k.a. MiikaHweb | 2003-2021