Archviz 2 min read

A Practical Linear Workflow for Archviz

Why your renders look washed out — and how a correct linear color workflow fixes materials, lighting and post in one move.

Most “my render looks flat” problems are not lighting problems. They are color management problems that masquerade as lighting problems.

The short version

Your renderer computes light in linear space. Your monitor displays gamma-encoded images. Every texture, light value and post-production step has to respect that boundary — or you end up compensating with ever-stronger lights and crunchy contrast.

Fix the pipeline once, and stop fighting every image individually.

Where it goes wrong

  1. Albedo textures imported as linear when they are sRGB.
  2. HDRIs double-corrected on import.
  3. Post-production applied to already display-referred images.

A quick sanity check for albedo values:

SurfaceRealistic albedoCommon mistake
White paint0.75–0.851.0
Concrete0.30–0.500.15
Dark wood floor0.10–0.200.05

Nothing in the physical world is albedo 1.0 — not even fresh snow.

Checking a texture in practice

If you want to verify what a renderer actually sees, sample the texture in linear space. A tiny Python check with imageio:

import imageio.v3 as iio
import numpy as np

img = iio.imread("albedo.png") / 255.0
linear = np.where(img <= 0.04045, img / 12.92, ((img + 0.055) / 1.055) ** 2.4)
print(f"mean albedo (linear): {linear.mean():.3f}")

If the mean of a “white wall” texture comes back at 0.92, your walls are emitting more light than they receive — and no lighting rig will save the image.


Takeaways

  • Treat color management as infrastructure, not per-image seasoning.
  • Calibrate albedo first; only then judge lighting.
  • Keep post-production scene-referred for as long as possible.

The next post will cover camera response and why “filmic” tone mapping earned its place in every archviz pipeline.