Skip to content

"shadow_contact" property's effect still applies to meshes that are set to not cast shadows if the mesh's material is set to "opaque pre-pass" at the same time. #42924

@KnightNine

Description

@KnightNine

Godot version:
3.2.3

OS/device including version:
Windows 10, Version 1803
Gtx 1080, GeForce Driver 442.74 , GLES3

Issue description:
i noticed this immediately when switching to 3.2.3 from 3.2.2.
A Mesh Instance with a material using "Opaque Pre-Pass" as it's "params_depth_draw_mode" property will cast a shadow when in front of a directional light with it's "shadow_contact" property set to a value higher than 0 , regardless of the mesh geometry "Cast Shadow" property being set to "Off".

So the shadow_contact property's effect doesn't account for meshes that aren't supposed to cast a shadow. (this shadow only appears when the mesh is close to the surface that it's casting a shadow on, as per the function of the shadow_contact property)

Steps to reproduce:
Using GLES3 in a 3D scene

  • add two meshes and a directional light
  • one mesh should serve as a wall and the other is for projecting the shadow before the directional light, place them as such.
  • on the directional light under the "Shadow" dropdown, tick "Enabled", then increase the "Contact" param value to something reasonable like 0.5.
  • on the mesh instance casting the shadow, under "Geometry", set "Cast Shadow" to Off
  • add a new spacial material, open it's properties, under the "Parameters" dropdown, set "Depth Draw Mode" to "Opaque Pre-Pass"
  • move the mesh instance closer to the other mesh instance and you should be able to make out the shadow created by the "shadow_contact" property's effect.

Minimal reproduction project:
Test.zip

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions