Guide to Shadows in Unity

If you're a beginner Unity developer eager to enhance the visual appeal of your projects, understanding and implementing shadows can make a significant difference. Shadows add depth and realism to your scenes, making objects interact realistically with light sources. This guide will walk you through the basics of enabling shadows in Unity and explore additional optimizations using Lightmaps.

Shadows in Unity Editor.

  • Check Sharp Shadows Toolkit

Enabling Shadows in Unity

Step 1: Open Your Unity Project

  • Open your Unity project, and open a scene with objects to cast shadows.

Step 2: Directional Light Setup

  • In your scene hierarchy, locate the "Directional Light". This light simulates sunlight in Unity.
  • Select the "Directional Light" to access its properties in the Inspector window.

Step 3: Shadow Settings

  • Scroll down in the Inspector to find the "Shadow Type" dropdown.
  • Choose "Soft Shadows" or "Hard Shadows" based on your preference.

Step 4: Adjust Shadow Distance and Resolution

Shadow distance and resolution can be adjusted in the project's Quality Settings.

  • Modify the "Shadow Distance" to control the range of shadows.
  • Modify the "Shadow Resolution" to balance quality and performance.

Step 5: Disable Shadows on Objects

If you wish to disable shadow casting from specific objects, follow the steps below:

  • Select an object in your scene.
  • In the Inspector, find the "Mesh Renderer", or any component derived from "Renderer".
  • Change the "Cast Shadows" setting to the appropriate value.
  • It's also possible to control whether the object will receive shadows by checking or unchecking the "Receive Shadows" checkbox.

Step 6: Observe the Scene

  • Observe the Scene to see real-time shadows.

Troubleshooting Shadows:

If shadows are not visible in your scene, consider the following:

  • Directional Light Angle: Ensure the Directional Light is positioned so that its rays hit your objects. Experiment with its rotation.
  • Object Settings: Check if the "Cast Shadows" option is enabled on the objects you want to cast shadows.
  • Lightmap Resolution: If using Lightmaps, ensure your static objects have sufficient lightmap resolution. Increase it if necessary.
  • Shader Compatibility: Some shaders may not be compatible with shadows. Test with Unity's standard shaders or shaders designed for shadow compatibility.
  • Real-Time vs. Baked: Real-time shadows may not appear if the object is marked as static. Choose either real-time or baked shadows.
  • Shadow Distance in Quality Settings: Check the "Shadow Distance" setting in the project's Quality Settings. If the distance is set lower than the current distance from the camera, shadows may not be visible at certain distances.

Optimizing Shadows with Lightmaps

Unity offers Lightmaps as an advanced optimization technique for static objects, reducing the need for real-time calculations.

Baked Lightmaps in Unity.

  • Check Bakery - GPU Lightmapper

Step 1: Mark Objects as Static

  • Select static objects in your scene.
  • In the Inspector, check the "Static" checkbox.

Step 2: Configure Lightmap Settings

  • Go to 'Window -> Rendering -> Lighting' to open the Lighting window.
  • Scroll down to the "Lightmapping" section.
  • Set the "Lightmapper" to "Progressive" or "Enlighten".
  • Click "Generate Lighting" to bake light maps.

Step 3: Adjust Real-Time vs. Baked Shadows

  • Use real-time shadows for dynamic objects.
  • For static objects, rely on baked shadows from Lightmaps.

Step 4: Test and Iterate

  • Press Play to test your scene. Tweak settings and iterate to achieve the desired balance between visual quality and performance.

Conclusion

You've successfully enabled shadows in Unity and explored Lightmaps for optimized shadow rendering. Experiment with different settings, observe the impact on your scene and continue your journey into creating visually stunning Unity projects.

Links
Unity 6