Page MenuHome

Eevee: Lights dont cast shadows if they are part of an collection instance
Open, Confirmed, LowPublic

Description

System Information
Fedora 29, 970m

Blender Version
Broken: rB0c8aa85069fa
Worked: NA

Short description of error
Lights appear to not cast shadows if they are part of an collection instance.
Lights in the collection itself work though.

Exact steps for others to reproduce the error

  • open attached .blend
  • switch to rendered view (same is true for lookdev with Scene Lights option ON)
  • there is a collection with one light (casting shadows)
  • there is an instance of that collection (light in that instance appears to not cast a shadow)

while instancing of collections of lights might not be a very common practice, it is mostly relevant when linking such a collection from another blend.
( and the Instance Collectionsoption is enabled by default when linking a collection -- if that option is disabled during linking, shadows work... )

Details

Type
Bug

Event Timeline

This is a current limitation of Eevee/Depsgraph. I might lift this limitation for Renders but for viewport it's not that simple.

For the record the problem is that Depsgraph generate transient objects for duplis and these transient objects only live for the time of the iteration (they are deleted between redraw) and I cannot keep track of which shadow map to update if I don't have persistent storage per dupli. If I don't keep track, that means every shadow map from a dupli lamp will be updated each redraw and it will lead to major performance drop.

Clément Foucault (fclem) triaged this task as Confirmed, Low priority.Nov 8 2018, 11:17 AM

What is the best performing workaround for this? Linked duplicates instead of collections?