- My GameObject(s) do not show any shadows when I am using either baked shadows or real-time shadows in my scene.
The most common reasons for this issue are:
- The Shadows aren't activated on the Quality settings.
- The Culling Mask on your Light is not pointing to any Layer.
- The Strength of the Realtime Shadows on the Light is too low to be visible.
- The Render Mode on the Light is not set correctly.
- The Shadow Distance on Quality Settings is too low to be visible.
The problem could be with Realtime Shadows or Baked Shadows, depending on your setup. By default, Unity lights are set up to mixed mode. We will start explaining the settings for Realtime Shadows:
First, we'll take a look a the Light settings. You can find them in the Inspector when you have selected light in the scene. Remember that each light in the scene will have its own configuration, so you must check them all.
- Baking setting: This option specifies what light will affect. There are three options; RealTime, Baked, and Mixed. For real-time shows to appear, make sure either RealTime or Mixed is selected.
- Shadow Type: The options under this tab are: Hard shadows, Soft shadows, and No Shadows. We need to make sure Hard or Soft shadows are selected for Real-Time shadows.
- Culling Mask: These masks allow you to specify which layers the light will affect. For example, if we have a character set to a custom layer called "Character" and want him to be affected by the light, the culling mask needs to include the "Character" layer.
We will also need to make sure the objects in the scene are correctly configured to receive and cast shadows. We go to the Mesh Renderer or Skinned Mesh Component in the inspector of the Object we want to check.
- Static: This toggles whether the object is static in the scene or dynamic. Leave this unticked for real-time lighting.
- Cast shadows and Receive shadows: These specify whether the mesh renderer will cast and receive shadows. Note: Real-Time lit objects will not receive baked shadows. See Mixed mode lighting - Baked objects casting shadows on realtime objects for additional information.
If the light/object settings didn't solve the issue, you could look at the Quality settings window, which can be found by going to the top menu and selecting Edit > Project Settings > Quality. This will open the window above in the inspector. From here, we can check the red highlighted areas:
- Shadows: You can specify the shadows allowed to render in the project in this field. Make sure either Hard Shadows only or Hard and Soft Shadows is selected.
- Shadow Distance: This is the maximum distance from the camera at which shadows will be visible. Objects set to cast Real-Time shadows beyond this distance will not be rendered.
Here, we will cover the important settings for Baked Shadows that could be the cause of most problems.
Let's take a look at the Light settings. You can find them in the Inspector when you have selected light in the scene.
- Mode: Like the Real-Time settings on a light, the mode option field in the light component needs to be set to either Baked or Mixed for baked shadows to appear.
We also need to make sure the objects in the scene are correctly configured to receive and cast shadows. Go to the Mesh Renderer Component in the inspector of the Object we want to check.
- Static: To specify that this mesh needs to be included in the lightmap baking, the static field must be checked.
- Cast shadows and Receive shadows: Cast Shadows needs to be set to On if the object should cast shadows during the baking of the lightmaps. Receive Shadows should be selected if the object needs to receive either baked or Real-Time shadows.
We will also need to set up some parameters for baked lights in the Lighting window. To open it, go to Window > Rendering > Lighting.
- Baked Global Illumination (Baked GI): To enable baking of lightmaps, make sure that Baked Global Illumination is enabled from the Lighting window in the Scene tab.
- Contribute Global Illumination (Contribute GI): There is a Contribute Global Illumination toggle in the Lighting window. This is set to true when a GameObject is set to true in the inspector. This property includes this GameObject's Mesh Renderer in global illumination calculations. These calculations take place while precomputing lighting data at bake time. This property only takes effect if you enable a Global Illumination setting such as Baked Global Illumination or Realtime Global Illumination for this Scene. In the case of requiring the object to be baked and use lightmapped shadows, we need to ticket the lightmap static toggle.
I'm still not getting any shadows in Unity 2018.3.0f2 for Linux.
So I believe I'm experiencing some kind of hardware/Driver issue on my laptop. I have created a project on my desktop, then when I open the same project on my laptop the shadows are gone. What I have found is that under the Lighting tab>Scene>Environment Reflections>Intensity Multiplier, if I dial the intensity down the shadows are revealed. Its as if the shadows are just blown out. Any Ideas on whats going on? I have a Geforce 850m on the laptop running v418.91 of the drivers
My issue was that my material was set to "Surface Type" "Transparent". Setting it to "Opaque" finally made my objects receive shadows.
If you're trying to use shadows with unlit shader graph, you may struggle to get the shadow attenuation and may need to spelunk in the shader code to call the right methods directly
This process doesn't work for Unity 2021.3.3f1 LTS,
- There is no receive shadows option,
- There is no shadow distance in the Quality settings in the project settings.
Amongst other bits missing. I really am stumped at this point as to why the lights won't show up. Surprisingly the global light works. I'm using real time lights on quads filled with sprite-lit-default materials.
Please sign in to leave a comment.