Back to course overview

Part 9: WRAP-UP

⏱️ ~3 minπŸ“‘ 5 sections

Section 19: Summary & Key Takeaways (3 min)

Every lighting decision involves trade-offs:

ApproachProsCons
Lumen GIRealistic bounce light, dynamicCan be noisy, temporal artifacts
Direct lighting onlyConsistent, predictableVisible light sources in reflections
VSM ShadowsWorks on any GPU, detailedCan look "CG perfect"
RT ShadowsPhysically accurate soft shadowsRequires RT hardware, can be noisy
Auto ExposureAdaptive like human eyesInconsistent between frames
Manual ExposureConsistent, predictableRequires manual adjustment

For games/real-time:

  • Lumen GI for realistic environments
  • VSM shadows for broad hardware support
  • Auto exposure often acceptable

For cinematics/product visualization:

  • Direct lighting for control
  • RT shadows for accuracy
  • Manual exposure for consistency

For ML training data:

  • Direct lighting only
  • RT shadows/reflections
  • Manual exposure β€” consistency is critical
  1. Lighting is physics β€” Unreal simulates real light behavior
  2. Reference materials β€” Known values (0.04, 0.18, 0.85) gauge your scene
  3. Shadow softness = apparent source size β€” Bigger/closer lights = softer shadows
  4. VSM vs RT β€” Different tools for different needs, check performance
  5. Lumen is powerful but has trade-offs β€” Great for games, may not suit all workflows
  6. Exposure control is critical β€” Auto vs Manual depends on your use case
  7. Reflections reveal your lights β€” Understand this when designing lighting rigs

Quick Reference: Building a Lit Scene

In Unreal Editor:

  1. ☐ Verify Project Settings (Working Color Space, Lumen, RT, etc.)
  2. ☐ File β†’ New Level β†’ Empty Level
  3. ☐ Window β†’ Place Actors (Shift+1)
  4. ☐ Add floor: Cube scaled to (10, 10, 0.1)
  5. ☐ Add test objects: Cube and Cylinder on floor
  6. ☐ Add reference material spheres (black, white, grey, chrome)
  7. ☐ Add Post Process Volume β†’ Infinite Extent β†’ configure exposure
  8. ☐ Add primary light(s) β€” Rect Lights for studio setup
  9. ☐ Set color temperature to match real-world source
  10. ☐ Enable ray traced shadows on lights (if using RT)
  11. ☐ Add Sky Light for subtle ambient fill (optional)
  12. ☐ Check chrome ball for reflection quality
  13. ☐ Adjust exposure compensation until grey sphere looks correct
  14. ☐ Play (Alt+P) β†’ Stat FPS / Stat Unit to check performance
  15. ☐ Verify consistency across multiple camera angles

Unreal Engine 5.5 Lighting Crash Course
Technical Artist: TK



Appendix A: From Real World to Unreal β€” The Science

PBR values aren't made up β€” they come from scientific measurements of real materials. Here's how real-world properties become numbers in Unreal:

1. Spectrophotometer / Spectroradiometer

A spectrophotometer shines light at a material sample and measures what comes back:

  • Illuminates sample with known light spectrum
  • Measures reflected light at each wavelength
  • Calculates percentage of light reflected = Reflectance

This gives you a number like "this material reflects 18% of incoming light."

2. Separating Diffuse from Specular

Here's the problem: when you photograph or measure a material, you capture both:

  • Diffuse reflection β€” Light that enters the surface, scatters, and exits (color)
  • Specular reflection β€” Light that bounces directly off the surface (shine)

For PBR, we need these separated.

Solution: Cross-Polarization

Studios like Activision (Call of Duty) and DICE use cross-polarized photography:

  • Light source has polarizing filter (oriented one direction)
  • Camera has polarizing filter (oriented 90Β° opposite)
  • Specular reflections are polarized, so they get blocked
  • Only diffuse light reaches the camera

This isolates the Base Color / Albedo β€” the diffuse component we need.

3. Reference Standards

To get accurate measurements, you need known reference points:

ReferenceReflectanceUse
Spectralon99%+Near-perfect white reference
18% Grey Card18%Middle grey standard
Black Velvet~3-4%Near-black reference

Calibrate your measurements against these, then measure your target materials.

4. Linear RGB Conversion

The measured reflectance percentage maps directly to Linear RGB:

Reflectance 18% β†’ Linear RGB 0.18
Reflectance 85% β†’ Linear RGB 0.85
Reflectance 4%  β†’ Linear RGB 0.04

It's that simple. The percentage IS the linear value.

Our visual perception is non-linear. We're bad at judging actual reflectance:

  • A surface that reflects 50% of light doesn't look "half as bright" as white
  • Our brain compresses highlights and expands shadows
  • We adapt to lighting conditions constantly

This is why artists historically made materials too dark or too bright β€” they painted what they perceived, not what the material actually does.

PBR fixes this by using measured values that respond correctly to any lighting.


Appendix B: Why 18% is "Middle" β€” Understanding Exposure

If middle grey is "halfway between black and white," why is it 18% and not 50%?

Answer: Human perception is logarithmic, not linear.

But cameras are linear.

This mismatch is why gamma correction exists.

1. Light itself (Physics) β€” Linear

Double the photons = Double the energy

2. Camera sensors β€” Linear

Double the photons = Double the voltage = Double the pixel value

3. Human vision β€” Logarithmic

Double the photons = Slightly brighter (not twice as bright)

Camera sensors are just photon counters. They respond linearly:

  • 100 photons β†’ sensor value 100
  • 200 photons β†’ sensor value 200
  • 1000 photons β†’ sensor value 1000

If you displayed this raw linear data directly on a screen, it would look wrong:

  • Shadows would be crushed to black
  • Highlights would blow out
  • Middle tones would look too dark

Why? Because our eyes expect a logarithmic response, not linear.

Gamma encoding (like sRGB) compensates for this mismatch:

Linear sensor data β†’ Gamma curve β†’ Looks correct to human eyes

The sRGB gamma curve (~2.2) redistributes the values:

  • Stretches the dark tones (more bits for shadows)
  • Compresses the bright tones (fewer bits for highlights)
  • Makes 18% reflectance land at ~50% in the encoded file

This is why:

  • Textures are stored as sRGB (gamma encoded) β€” optimized for human viewing
  • Rendering happens in Linear β€” physically correct math
  • Final output gets gamma corrected β€” back to what eyes expect
Data TypeColor SpaceWhy
Base Color texturessRGBAuthored by humans looking at screens
Rendering calculationsLinearPhysics requires linear math
Normal mapsLinearNot color data, just vectors
Final displaysRGBMonitors expect gamma-encoded signal

Unreal handles this automatically β€” it converts sRGB textures to Linear for rendering, then back to sRGB for display.

When we say "18% grey = 0.18 Linear RGB":

FormatValueNotes
Reflectance18%Physical measurement
Linear RGB0.18What Unreal uses internally
sRGB~118 (0-255)What you see in Photoshop
Perceived~46% brightnessWhat your eyes see

The 0.18 Linear value displays as roughly middle brightness because the display's gamma curve transforms it to match human perception.

Linear (How light actually works):

0% ────────────── 50% ────────────── 100%
Black            Half the photons        White

Perceptual (How we see it):

0% ─── 18% ─────────────────────────── 100%
Black   Looks like middle             White

Our eyes evolved to see detail across a huge range of light levels β€” from starlight to bright sun. To do this, our visual system compresses bright values and expands dark values.

Human brightness perception roughly follows a power curve (Stevens' Power Law):

Perceived Brightness β‰ˆ (Actual Reflectance)^0.5

So:

  • 18% reflectance β†’ √0.18 β‰ˆ 0.42 (42% perceived brightness)
  • 50% reflectance β†’ √0.50 β‰ˆ 0.71 (71% perceived brightness β€” way brighter than "middle")

18% actual reflectance appears perceptually as middle grey.

In 1933, Munsell (the color system guy) found through experiments that a series of grey patches with reflectances of approximately 3%, 9%, 18%, 36%, 72%... appeared as evenly spaced brightness steps to human observers.

Notice: these aren't linear steps (10%, 20%, 30%...). They're roughly doubling each step β€” a logarithmic scale.

This is why camera light meters are calibrated to 18%:

  • The meter assumes the scene averages to middle grey
  • It sets exposure so that average scene = 18% reflectance output
  • This puts "middle" in the middle of the camera's dynamic range

Problem: Point your camera at snow (90% reflectance), and the meter tries to make it 18% grey β€” underexposed. Point at coal (4% reflectance), and it overexposes to 18% grey.

This is exactly what we disable with Manual Exposure when consistency matters.

SphereReflectancePerceived BrightnessPurpose
Black4%Very darkDarkest natural baseline
Grey18%MiddleExposure reference
White85%Very brightBrightest diffuse baseline

If your 18% grey sphere looks like "middle grey" on screen, your exposure is correct.

If it looks too dark β†’ increase exposure compensation If it looks too bright β†’ decrease exposure compensation

18% is not arbitrary. It's the reflectance value that human vision perceives as the midpoint between black and white. Every camera meter, every exposure system, and every PBR workflow is built around this fact.


Appendix C: PBR Material Values Reference

These are measured real-world reflectance values for physically based rendering. In Unreal Engine's Metalness/Roughness workflow:

  • Base Color = Albedo (diffuse reflectance for non-metals, reflection color for metals)
  • Values are in Linear RGB (what Unreal uses internally)
  • sRGB values shown for reference when working in Photoshop/image editors
Linear to sRGB:  sRGB = Linear^(1/2.2) Γ— 255
sRGB to Linear:  Linear = (sRGB/255)^2.2
TypeMinimumMaximum
Dielectrics (non-metals)0.02 - 0.040.8 - 0.85
Metals0.50.98

Going outside these ranges creates materials that don't respond correctly to lighting.


MaterialLinear RGBsRGB (0-255)Notes
Charcoal0.0240Near-black baseline
Tire (Rubber)0.02343Very dark rubber
Blackboard0.03956Matte dark surface
Toner (Black)0.0563Printed black on paper
Brick (Red)0.26, 0.10, 0.06137, 82, 66Terracotta brick
Concrete0.51186Neutral grey
Sand0.44, 0.39, 0.23175, 166, 128Beach sand
Soil (Dark)0.0877Rich earth
Grass0.21, 0.28, 0.07123, 141, 72Healthy lawn
Tree Bark0.1084Average wood bark
Wood (Light)0.35, 0.22, 0.12158, 125, 93Pine, birch
Wood (Dark)0.15, 0.08, 0.04104, 76, 54Walnut, mahogany
Marble (White)0.83, 0.79, 0.75234, 229, 224Polished marble
Car Paint0.1084Base coat (varies with color)
Skin I (Light)0.85, 0.64, 0.55236, 208, 194Very fair
Skin II0.80, 0.49, 0.35230, 182, 158Fair
Skin III0.62, 0.43, 0.34205, 174, 156Medium
Skin IV0.44, 0.23, 0.13175, 128, 97Olive/tan
Skin V0.28, 0.15, 0.08142, 103, 76Brown
Skin VI (Dark)0.09, 0.05, 0.0280, 62, 39Very dark
Chocolate0.16, 0.09, 0.06107, 80, 66Dark chocolate
Egg Shell0.61, 0.62, 0.63204, 206, 207White hen egg
Bone0.79, 0.79, 0.66229, 229, 212Dry bone

MaterialLinear RGBsRGB (0-255)Purpose
Middle Grey (18%)0.18118Exposure reference
Gray Card0.18118Photography standard
Fresh Snow0.85237Brightest natural diffuse
White Paint0.80231Practical white limit
Whiteboard0.87, 0.87, 0.77239, 239, 226Office whiteboard
Office Paper0.79, 0.83, 0.88229, 234, 241Contains optical brighteners
Coal/Carbon0.0454Practical black baseline
Musou Black0.00620Extreme black paint
MIT Black0.000Carbon nanotube (theoretical)

For metals, Base Color represents reflection color, not diffuse.

MaterialLinear RGBsRGB (0-255)Notes
Silver0.99, 0.99, 0.97255, 255, 252Polished silver
Aluminum0.92, 0.92, 0.92246, 246, 246Polished aluminum
Platinum0.77, 0.73, 0.68226, 221, 213Jewelry platinum
Palladium0.73, 0.70, 0.66221, 217, 212Similar to platinum
Chromium0.65, 0.69, 0.70210, 215, 217Chrome plating
Nickel0.70, 0.64, 0.56217, 208, 196Polished nickel
Iron0.53, 0.51, 0.49190, 186, 182Polished iron
Stainless Steel0.67, 0.64, 0.60213, 208, 202Typical alloy
Titanium0.44, 0.40, 0.36175, 168, 160Polished titanium
Cobalt0.70, 0.70, 0.67217, 217, 213Polished cobalt
Zinc0.81, 0.84, 0.87232, 236, 239Galvanized zinc
Gold1.00, 0.77, 0.31255, 226, 15024K polished gold
Copper0.93, 0.62, 0.52247, 205, 188Polished copper
Brass0.91, 0.78, 0.42245, 227, 172Polished brass
Bronze0.80, 0.50, 0.30231, 184, 147Polished bronze

MaterialIORNotes
Air1.000Baseline
Water1.333Clear water
Ice1.310Frozen water
Glass1.520Standard glass
Plastic (Acrylic)1.490PMMA/Plexiglass
Plastic (PET)1.575Bottles
Diamond2.417Maximum natural IOR
Eye (Cornea)1.376Human eye
Honey1.504Liquid honey

For the crash course demonstration:

SphereBase Color (Linear)MetallicRoughnessPurpose
Black0.0400.3Darkest baseline
White0.8500.3Brightest diffuse
Grey0.1800.3Exposure reference
Chrome0.9010.02Reflection check

  1. Non-metal Base Color should be 0.04 - 0.85 (Linear)
  2. Metals should be 0.5 - 0.98 (Linear)
  3. Nothing in nature is pure black (0) or pure white (1)
  4. Middle grey is 0.18, not 0.5 (perception is non-linear)
  5. Roughness doesn't change brightness (energy conservation)
  6. If it looks wrong under different lighting, the values are wrong

  • physicallybased.info β€” Searchable database with engine-specific values
  • DONTNOD UE4 Chart β€” Industry-standard reference (SΓ©bastien Lagarde)
  • Substance PBR Guide β€” Comprehensive material creation guide
  • Call of Duty: Advanced Warfare β€” Activision's measured material research