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
Both Omni lights and spotlights will light up a mesh that has been transformed, despite there being no overlapping layers. This does not appear to be a problem with the Forward+ Renderer nor with directional lights on the mobile renderer.
In this example I have two lights, one is set to affect all layers, the light is periodically toggled on and off,
another light is on all of the time, but it's cull mask is only set to affect layer 2, which neither of the Mesh Instances are on.
The expected behaviour is that when the first light is toggled, the cubes will no longer be visible,
as works on the Forward+ renderer. However when using the mobile renderer, Meshes will reappear again if they are moved (via script) and will not disappear even if their movement is stopped.
I first noticed this behaviour when I was attempting to do an effect where all but one object would fade to black because it was the only mesh on a specific layer (which the spotlight cull was also set to) however other objects still appeared despite not being on that layer because they had been or were being moved.
Steps to reproduce
Start a project with the mobile renderer
Create a 3D scene with a mesh that can be moved.
Create a spot light or omni light near the mesh so that it is noticeably lit.
Set the Cull Mask of the light to only affect layers that do not overlap with the cube's VisualInstance3D layers
The cube will correctly not be lit by the spotlight upon first playing, but once the cube has been moved, it will suddenly be lit up.
Calinou
changed the title
Spotlight and OmniLight Cull Masks Don't Cull Moving Meshes in Mobile Renderer
Vulkan Mobile: SpotLight and OmniLight cull masks don't cull moving meshes
Dec 12, 2023
Godot version
v4.1.1.stable.official[bd6af8e]
System information
Windows 10 - Godot 4.1.1 Stable - Mobile
Issue description
Both Omni lights and spotlights will light up a mesh that has been transformed, despite there being no overlapping layers. This does not appear to be a problem with the Forward+ Renderer nor with directional lights on the mobile renderer.
In this example I have two lights, one is set to affect all layers, the light is periodically toggled on and off,
another light is on all of the time, but it's cull mask is only set to affect layer 2, which neither of the Mesh Instances are on.
The expected behaviour is that when the first light is toggled, the cubes will no longer be visible,
as works on the Forward+ renderer. However when using the mobile renderer, Meshes will reappear again if they are moved (via script) and will not disappear even if their movement is stopped.
I first noticed this behaviour when I was attempting to do an effect where all but one object would fade to black because it was the only mesh on a specific layer (which the spotlight cull was also set to) however other objects still appeared despite not being on that layer because they had been or were being moved.
Steps to reproduce
Start a project with the mobile renderer
Create a 3D scene with a mesh that can be moved.
Create a spot light or omni light near the mesh so that it is noticeably lit.
Set the Cull Mask of the light to only affect layers that do not overlap with the cube's VisualInstance3D layers
The cube will correctly not be lit by the spotlight upon first playing, but once the cube has been moved, it will suddenly be lit up.
Minimal reproduction project
Light Cull Mask Mini Project.zip
Production edit (keywords for easier searching): OpenGL
The text was updated successfully, but these errors were encountered: