askvity

How do you make shadows in Unity?

Published in Unity Graphics 3 mins read

To create shadows in Unity, the simplest way is to add a directional light and enable shadows on it. Here's a breakdown:

Steps to Enable Shadows:

  1. Add a Directional Light: Navigate to GameObject -> Light -> Directional Light in the Unity editor. This creates a directional light source in your scene. Directional lights simulate light from a distant source, like the sun.

  2. Adjust Shadow Type: In the Inspector panel for the Directional Light, locate the "Shadow Type" property within the "Light" component. Change it from "No Shadows" to either:

    • "Soft Shadows": Creates shadows with softer edges, which generally look more realistic.
    • "Hard Shadows": Creates shadows with sharp, defined edges. Hard shadows can sometimes look less natural but are computationally cheaper.
  3. Adjust Shadow Strength (Optional): The "Strength" property controls the darkness or intensity of the shadows. A value of 0 creates no shadows, while a value of 1 creates very dark shadows. Experiment with values between 0 and 1. A value of 0.2 or lower can work well as a starting point, depending on your scene's lighting.

  4. Adjust the Light's Rotation: The direction of the directional light affects the direction of the shadows. In the Transform panel of the Directional Light, adjust the X and Y Rotation values to control the angle of the light. You can adjust the angle for various shadow effects.

Important Considerations:

  • Shadow Quality: Unity offers project-wide shadow quality settings (Edit -> Project Settings -> Quality). These settings affect shadow resolution, distance, and other parameters. Higher quality settings produce better-looking shadows but can impact performance.

  • Shadow Distance: The "Shadow Distance" setting in the Quality settings determines how far shadows are rendered from the camera. Increasing this value can improve visual fidelity, but it can also decrease performance.

  • Lightmapping: For static objects, consider using lightmapping. Baking shadows into lightmaps can significantly improve performance, especially on mobile devices. This involves pre-rendering the lighting and shadows and storing them as textures.

  • Performance: Shadows can be computationally expensive, especially with high resolutions and long distances. Optimize your scene by adjusting shadow settings, using lightmapping where appropriate, and limiting the number of shadow-casting objects.

Troubleshooting:

  • No Shadows Appearing:

    • Ensure the "Shadow Type" is not set to "No Shadows" on the light source.
    • Make sure objects in your scene have "Cast Shadows" enabled in their Mesh Renderer component (or other relevant renderer component).
    • Verify the objects are within the shadow distance range.
    • Check the object's material and shader. Ensure they support shadow casting and receiving.
  • Aliased/Pixelated Shadows:

    • Increase the shadow resolution in the Quality settings.
    • Enable shadow anti-aliasing in the camera's post-processing stack (if using).
    • Use soft shadows instead of hard shadows.

By following these steps and considerations, you can effectively create and customize shadows in your Unity projects.

Related Articles