Blender Git Loki
Git Commits -> Revision fd77a28
Revision fd77a28 by Brecht Van Lommel (master) October 19, 2021, 13:11 (GMT) |
Cycles: bake transparent shadows for hair These transparent shadows can be expansive to evaluate. Especially on the GPU they can lead to poor occupancy when only some pixels require many kernel launches to trace and evaluate many layers of transparency. Baked transparency allows tracing a single ray in many cases by accumulating the throughput directly in the intersection program without recording hits or evaluating shaders. Transparency is baked at curve vertices and interpolated, for most shaders this will look practically the same as actual shader evaluation. Fixes T91428, performance regression with spring demo file due to transparent hair, and makes it render significantly faster than Blender 2.93. Differential Revision: https://developer.blender.org/D12880 |
Commit Details:
Full Hash: fd77a28031daff3122ded3a1cb37a7fb44feedf6
Parent Commit: d06828f
Lines Changed: +499, -109
24 Modified Paths:
/intern/cycles/bvh/bvh_embree.cpp (+31, -14) (Diff)
/intern/cycles/device/cpu/kernel.cpp (+1, -0) (Diff)
/intern/cycles/device/cpu/kernel.h (+1, -0) (Diff)
/intern/cycles/device/device_kernel.cpp (+2, -0) (Diff)
/intern/cycles/integrator/shader_eval.cpp (+6, -0) (Diff)
/intern/cycles/integrator/shader_eval.h (+1, -0) (Diff)
/intern/cycles/kernel/bvh/bvh.h (+18, -11) (Diff)
/intern/cycles/kernel/bvh/bvh_embree.h (+6, -2) (Diff)
/intern/cycles/kernel/bvh/bvh_shadow_all.h (+55, -30) (Diff)
/intern/cycles/kernel/bvh/bvh_util.h (+28, -0) (Diff)
/intern/cycles/kernel/device/cpu/kernel_arch.h (+5, -0) (Diff)
/intern/cycles/kernel/device/cpu/kernel_arch_impl.h (+13, -0) (Diff)
/intern/cycles/kernel/device/gpu/kernel.h (+15, -1) (Diff)
/intern/cycles/kernel/device/optix/kernel.cu (+30, -8) (Diff)
/intern/cycles/kernel/geom/geom_shader_data.h (+75, -0) (Diff)
/intern/cycles/kernel/integrator/integrator_intersect_shadow.h (+12, -5) (Diff)
/intern/cycles/kernel/integrator/integrator_shade_shadow.h (+5, -5) (Diff)
/intern/cycles/kernel/integrator/integrator_state.h (+0, -13) (Diff)
/intern/cycles/kernel/kernel_bake.h (+21, -0) (Diff)
/intern/cycles/kernel/kernel_types.h (+11, -0) (Diff)
/intern/cycles/render/attribute.cpp (+5, -0) (Diff)
/intern/cycles/render/geometry.cpp (+39, -20) (Diff)
/intern/cycles/render/hair.cpp (+115, -0) (Diff)
/intern/cycles/render/hair.h (+4, -0) (Diff)
/intern/cycles/device/cpu/kernel.cpp (+1, -0) (Diff)
/intern/cycles/device/cpu/kernel.h (+1, -0) (Diff)
/intern/cycles/device/device_kernel.cpp (+2, -0) (Diff)
/intern/cycles/integrator/shader_eval.cpp (+6, -0) (Diff)
/intern/cycles/integrator/shader_eval.h (+1, -0) (Diff)
/intern/cycles/kernel/bvh/bvh.h (+18, -11) (Diff)
/intern/cycles/kernel/bvh/bvh_embree.h (+6, -2) (Diff)
/intern/cycles/kernel/bvh/bvh_shadow_all.h (+55, -30) (Diff)
/intern/cycles/kernel/bvh/bvh_util.h (+28, -0) (Diff)
/intern/cycles/kernel/device/cpu/kernel_arch.h (+5, -0) (Diff)
/intern/cycles/kernel/device/cpu/kernel_arch_impl.h (+13, -0) (Diff)
/intern/cycles/kernel/device/gpu/kernel.h (+15, -1) (Diff)
/intern/cycles/kernel/device/optix/kernel.cu (+30, -8) (Diff)
/intern/cycles/kernel/geom/geom_shader_data.h (+75, -0) (Diff)
/intern/cycles/kernel/integrator/integrator_intersect_shadow.h (+12, -5) (Diff)
/intern/cycles/kernel/integrator/integrator_shade_shadow.h (+5, -5) (Diff)
/intern/cycles/kernel/integrator/integrator_state.h (+0, -13) (Diff)
/intern/cycles/kernel/kernel_bake.h (+21, -0) (Diff)
/intern/cycles/kernel/kernel_types.h (+11, -0) (Diff)
/intern/cycles/render/attribute.cpp (+5, -0) (Diff)
/intern/cycles/render/geometry.cpp (+39, -20) (Diff)
/intern/cycles/render/hair.cpp (+115, -0) (Diff)
/intern/cycles/render/hair.h (+4, -0) (Diff)