Skip to content

Light tree: orientation cone of a reverse-sided light points the wrong way #332

Open

Description

@gonsolo

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions