Bird
Raised Fist0
Unityframework~30 mins

Unlit vs lit shaders in Unity - Hands-On Comparison

Choose your learning style10 modes available
Unlit vs Lit Shaders in Unity
📖 Scenario: You are creating a simple Unity scene where you want to understand the difference between unlit and lit shaders. Unlit shaders do not react to light and show colors as they are, while lit shaders respond to lighting and shadows in the scene.This project will help you create two materials: one using an unlit shader and one using a lit shader, and apply them to two cubes to see the difference.
🎯 Goal: Build a Unity scene with two cubes: one with an unlit shader material and one with a lit shader material. You will create the materials in code and apply them to the cubes to observe how lighting affects each.
📋 What You'll Learn
Create two cubes in the scene using code.
Create a material with an unlit shader and assign a color.
Create a material with a lit shader and assign a color.
Apply the materials to the respective cubes.
Print the names of the shaders used to the console.
💡 Why This Matters
🌍 Real World
Understanding unlit vs lit shaders helps game developers control how objects appear under different lighting conditions, which is essential for creating realistic or stylized visuals.
💼 Career
Shader knowledge is important for roles like game developer, technical artist, and graphics programmer, where controlling object appearance and performance is key.
Progress0 / 4 steps
1
Create two cubes in the scene
Write code to create two cubes named unlitCube and litCube in the Unity scene using GameObject.CreatePrimitive(PrimitiveType.Cube).
Unity
Hint

Use GameObject.CreatePrimitive(PrimitiveType.Cube) twice and assign the results to unlitCube and litCube.

2
Create materials with unlit and lit shaders
Create two materials called unlitMaterial and litMaterial. Assign the shader Shader.Find("Unlit/Color") to unlitMaterial and Shader.Find("Standard") to litMaterial. Set unlitMaterial.color to red and litMaterial.color to blue.
Unity
Hint

Use new Material(Shader.Find("Unlit/Color")) for the unlit material and new Material(Shader.Find("Standard")) for the lit material. Then set their colors.

3
Apply materials to the cubes
Assign unlitMaterial to the Renderer.material of unlitCube and litMaterial to the Renderer.material of litCube.
Unity
Hint

Use GetComponent<Renderer>().material = to assign the materials to each cube.

4
Print the shader names to the console
Write two Debug.Log statements to print the shader names of unlitMaterial and litMaterial using unlitMaterial.shader.name and litMaterial.shader.name.
Unity
Hint

Use Debug.Log("Unlit shader used: " + unlitMaterial.shader.name) and similarly for litMaterial.

Practice

(1/5)
1. What is the main difference between Unlit and Lit shaders in Unity?
easy
A. Unlit shaders do not react to lighting, Lit shaders do
B. Unlit shaders are slower than Lit shaders
C. Lit shaders ignore shadows, Unlit shaders show shadows
D. Lit shaders only work on 2D objects

Solution

  1. Step 1: Understand Unlit shader behavior

    Unlit shaders display colors without any lighting or shadow effects.
  2. Step 2: Understand Lit shader behavior

    Lit shaders calculate lighting and shadows to create realistic visuals.
  3. Final Answer:

    Unlit shaders do not react to lighting, Lit shaders do -> Option A
  4. Quick Check:

    Lighting reaction = Unlit no, Lit yes [OK]
Hint: Unlit means no light effects, Lit means light and shadows [OK]
Common Mistakes:
  • Thinking Unlit shaders are slower
  • Believing Lit shaders ignore shadows
  • Assuming Lit shaders only work on 2D
2. Which of the following is the correct way to assign an Unlit shader to a material in Unity's Shader dropdown?
easy
A. Shaders > Unlit > Color
B. Shaders > Legacy Shaders > Transparent
C. Shaders > Standard
D. Shaders > Lit > PBR

Solution

  1. Step 1: Locate Unlit shaders in Unity

    Unlit shaders are found under the menu path: Shaders > Unlit > Color.
  2. Step 2: Confirm correct shader assignment

    Assigning 'Unlit > Color' applies an unlit shader that ignores lighting.
  3. Final Answer:

    Shaders > Unlit > Color -> Option A
  4. Quick Check:

    Unlit shader path = Shaders > Unlit > Color [OK]
Hint: Unlit shaders are under Shaders > Unlit in dropdown [OK]
Common Mistakes:
  • Choosing Standard shader which is lit
  • Selecting Legacy shaders unrelated to unlit
  • Picking Lit shaders for unlit materials
3. Given this Unity shader code snippet, what will be the visual result on a 3D object?
Shader "Custom/Example" {
  SubShader {
    Tags { "RenderType"="Opaque" }
    Pass {
      CGPROGRAM
      #pragma vertex vert
      #pragma fragment frag
      struct appdata { float4 vertex : POSITION; };
      struct v2f { float4 pos : SV_POSITION; };
      v2f vert(appdata v) { v2f o; o.pos = UnityObjectToClipPos(v.vertex); return o; }
      fixed4 frag(v2f i) : SV_Target { return fixed4(1,0,0,1); }
      ENDCG
    }
  }
}
medium
A. The object will flicker between colors
B. The object will be shaded with light and shadows
C. The object will be invisible
D. The object will appear bright red without lighting effects

Solution

  1. Step 1: Analyze the fragment shader output

    The fragment shader returns fixed4(1,0,0,1), which is solid red color.
  2. Step 2: Check for lighting calculations

    No lighting or normal calculations exist, so color is unlit and constant.
  3. Final Answer:

    The object will appear bright red without lighting effects -> Option D
  4. Quick Check:

    Fragment color fixed red, no lighting = unlit red [OK]
Hint: No lighting code means solid color output [OK]
Common Mistakes:
  • Assuming lighting affects color here
  • Thinking object is invisible without lighting
  • Expecting color changes or flickering
4. You wrote a Lit shader but the object appears completely black in your scene. What is the most likely cause?
medium
A. The object has no mesh assigned
B. The shader is missing normal vector calculations
C. The shader is set to Unlit accidentally
D. The camera is disabled

Solution

  1. Step 1: Understand Lit shader requirements

    Lit shaders need normal vectors to calculate lighting properly.
  2. Step 2: Identify missing normal vector effect

    If normals are missing or incorrect, lighting calculations fail, causing black appearance.
  3. Final Answer:

    The shader is missing normal vector calculations -> Option B
  4. Quick Check:

    Missing normals = no lighting = black object [OK]
Hint: Lit shaders need normals for lighting; missing normals cause black [OK]
Common Mistakes:
  • Blaming mesh or camera instead of shader code
  • Confusing Unlit shader with Lit shader issues
  • Ignoring normal vector importance
5. You want to optimize a mobile game by reducing lighting calculations but still want some color variation. Which shader approach is best?
hard
A. Use Unlit shaders with no color variation
B. Use fully Lit shaders with multiple lights
C. Use Unlit shaders with vertex colors for variation
D. Use Lit shaders but disable shadows

Solution

  1. Step 1: Consider performance needs

    Reducing lighting calculations improves performance on mobile devices.
  2. Step 2: Choose shader with color variation but no lighting

    Unlit shaders with vertex colors provide color changes without expensive lighting.
  3. Final Answer:

    Use Unlit shaders with vertex colors for variation -> Option C
  4. Quick Check:

    Unlit + vertex colors = color variation without lighting cost [OK]
Hint: Unlit + vertex colors = color without lighting cost [OK]
Common Mistakes:
  • Using full Lit shaders which are costly
  • Choosing Unlit with no color variation loses visual interest
  • Disabling shadows alone doesn't reduce lighting cost fully
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard