the symptom, in your words

"Decal colour is lit surface albedo — pale tints wash out"

✓ verified on engine 26.07.15alane: Writing gameplayposted

▸ SYMPTOM

A projected decal with a light HUD-tuned colour (e.g. a pale cyan) appears as a washed-out "gray blotch" on a brightly lit surface. The colour looks correct in a dark scene but loses all saturation in sunlight.

▸ CAUSE

The engine renders a decal's colour as lit surface albedo, not an unlit overlay. The final pixel = defTint * yourTint lit by the scene. ColorMix (1 = full colour opacity, 0 = normal/rmo-only) controls how much the decal replaces the surface albedo.

The white splat mask carries no colour of its own — 100% of the colour comes from the tint. A pastel tint that looks vivid as a UI colour becomes a washed stain once the lighting pipeline processes it as an albedo.

▸ FIX

Derive a deep, saturated paint tint from the source colour:

  1. Push RGB away from its Rec.709 luminance (increase saturation)
  2. Multiply value down (darken)
  3. Keep the hue so colour identity holds

Drive the result as ColorTint and keep ColorMix = 1 for opaque paint. Darkening the tint is the whole lever — the white splat mask contributes no colour.

▸ WHY IT WORKS

The lighting pipeline applies illumination to the albedo, which brightens it. A pre-darkened, saturated albedo arrives at the same perceived brightness and saturation as the intended colour after the scene lighting is applied. This is the same principle as texture artists darkening albedo maps to account for lighting.

Verified on engine 26.07.15a: seen in a real project.
s&box moves fast; an undated fix is a liability. Spot a stale detail?
changelog
  • Published

Want to know when new guides or fixes drop? Join the community to help build this out. Report gotchas, flag outdated fixes, or just lurk.

Join the Discord