Blender Git Loki

Git Commits -> Revision 632a774

Revision 632a774 by Sergey Sharybin (cycles-x)
July 21, 2021, 09:31 (GMT)
Cycles X: Support approximate shadow catcher with background

On a user-level this change behaves as if the approximate shadow
catcher matte pass is alpha-overed on top of background pass.
This makes it easier to combine artificial objects onto a HDRI
footage.

General idea is to "de-tour" a shadow catcher matte path to the
shade background kernel when needed.

There is some not-so-nice looking scheduling logic after the
intersect closest kernel, which seems to be the best so far from
the performance point of view.

While the shadow catcher performance case might be improved by
avoiding some redundant atomic operations, there is no performance
impact for "regular" case (numbers are on RTX 5000):

```
new cycles-x
bmw27.blend 12.2091 12.2334
classroom.blend 24.2948 24.2565
pabellon.blend 11.1832 11.1941
monster.blend 13.2831 13.1683
barbershop_interior.blend 18.8203 18.904
junkshop.blend 26.5066 26.4452
pvt_flat.blend 22.6359 22.5914
```

There seems to be 2% deviation, sometimes new code is 2% slower,
sometimes it is old code which is 2% slower.

Differential Revision: https://developer.blender.org/D11971

Commit Details:

Full Hash: 632a7747cf5aba1ddb7a352a4564eff53ccdc5a6
Parent Commit: 49f5a0e
Lines Changed: +160, -58

15 Modified Paths:

/intern/cycles/device/optix/device_impl.cpp (+1, -0) (Diff)
/intern/cycles/integrator/denoiser_oidn.cpp (+1, -0) (Diff)
/intern/cycles/integrator/pass_accessor.cpp (+11, -1) (Diff)
/intern/cycles/integrator/pass_accessor.h (+8, -1) (Diff)
/intern/cycles/integrator/path_trace_work.cpp (+3, -0) (Diff)
/intern/cycles/kernel/bvh/bvh_util.h (+10, -4) (Diff)
/intern/cycles/kernel/integrator/integrator_intersect_closest.h (+43, -4) (Diff)
/intern/cycles/kernel/integrator/integrator_shade_background.h (+23, -2) (Diff)
/intern/cycles/kernel/integrator/integrator_state_util.h (+14, -36) (Diff)
/intern/cycles/kernel/kernel_accumulate.h (+4, -0) (Diff)
/intern/cycles/kernel/kernel_film.h (+15, -4) (Diff)
/intern/cycles/kernel/kernel_shadow_catcher.h (+9, -3) (Diff)
/intern/cycles/kernel/kernel_types.h (+7, -1) (Diff)
/intern/cycles/render/scene.cpp (+7, -0) (Diff)
/intern/cycles/render/session.cpp (+4, -2) (Diff)
Tehnyt: Miika HämäläinenViimeksi päivitetty: 07.11.2014 14:18MiikaH:n Sivut a.k.a. MiikaHweb | 2003-2021