Course contentsShow
← Unity Game Development
Lesson 599 of 8289. Rendering and VisualsFree lesson

Utilizing Albedo Maps for Base Color

Create and apply albedo textures that represent raw surface color without baked-in lighting or shadows to ensure consistent PBR behavior.

In this lesson, you will learn how to create and implement albedo maps that provide accurate, lighting-independent base colors for your Physically Based Rendering (PBR) materials.

The Physics of Pure Base Color

In PBR, the Albedo map is intended to represent the "diffuse color" of a surface, stripped of all lighting information. Think of it as the color the object would appear if you photographed it under perfectly flat, neutral, white light with no shadows or highlights.

If you bake shadows, ambient occlusion, or highlights directly into your texture, you break the PBR workflow. When Unity’s lighting engine calculates real-time light and shadows, it multiplies your Albedo texture by the incoming light data. If your texture already contains "fake" shadows, the object will look muddy and unrealistic when light shifts or moves across its surface.

Creating Clean Albedo Maps

To prepare your assets:

  1. Remove Directional Light: If you are hand-painting or photogrammetry-scanning, ensure the source imagery is diffuse.
  2. Neutralize Values: Avoid pure black or pure white values. In the real world, few materials have 0% or 100% reflectivity. Most non-metal materials fall within a range of 50-240 sRGB values.
  3. Application: In your Material inspector (Standard or URP/HDRP Lit), drag your flat color texture into the Base Map or Albedo slot.

Validating Your Material

You can check if your albedo is "clean" by using the Scene View’s draw mode. Toggle the dropdown in the Scene View to "Albedo" mode. If you see depth, silhouettes, or shadows in this view, your texture contains baked-in lighting data that will conflict with your light probes and reflection probes.

// To verify your texture properties via script (if needed for debugging):
Material mat = GetComponent<Renderer>().material;
if (mat.HasProperty("_BaseMap")) {
    Texture2D albedo = (Texture2D)mat.GetTexture("_BaseMap");
    Debug.Log($"Validating {albedo.name}: Ensure no directional highlights exist.");
}

By keeping your Albedo maps "flat," you allow Unity’s lighting pipeline to accurately calculate how your scene’s light, probes, and shadows should interact with the object, ensuring consistent visuals across all environmental conditions.

Key Takeaway: An effective Albedo map must contain only the raw, diffuse surface color without any baked-in shadows or highlights to ensure the PBR engine renders your object accurately under dynamic lighting.