You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Light tree: orientation cone of a reverse-sided light points the wrong way #332
Summary. With adaptive light sampling, reverse-sided lights with a spread below 1 are under-selected: the image is about 4% too dark, and BSDF samples do not compensate. Version 2026.29.1, scalar mode.
Reproduce. Eight DiskLights (radius 0.2, spread 0.5) facing down onto a diffuse floor, max_depth 1, light samples only. Ratio of light_sampling_mode adaptive to uniform:
lights
adaptive / uniform
sidedness reverse
0.9558
the same lights with regular sidedness (rotated instead)
0.9998
reverse, with bsdf_samples on too
0.9559
With spread 0.8 or 1 there is no loss.
Cause.LightTreeCone(const Light*) (lib/rendering/pbr/light/LightTreeUtil.h) takes the cone axis from light->getDirection(0), the local +z, for every light. A light with sidedness reverse emits toward -z, so with a spread below 1 the tree's orientation bound excludes directions the light does emit into, and the importance of the light is underestimated.
Fix (untested). Use -getDirection() as the cone axis for reverse-sided lights (two-sided lights already set mTwoSided).
Activity