fix: color-accurate grade — ginger hair stays ginger, characters stay matte

The saturation grade (1.3) was shifting authored hues — Taila's auburn
ginger hair rendered fire-truck red and the whole game read filtered.
Saturation 1.3 -> 1.08, contrast 1.05 -> 1.03: textures now carry their
own vibrancy. Verified by sampling the rendered hair against the source
texture: lit hue 18-20 deg vs authored ~20 deg.

Character rim/specular cut again (rim 0.15/0.4 -> 0.08/0.32, spec
0.06 -> 0.025 @ 64): hair and cloth read fully matte, no wet sheen.

Co-Authored-By: Claude Fable 5 <[email protected]>
This commit is contained in:
Nicholas Butzke
2026-07-20 22:55:58 -04:00
co-authored by Claude Fable 5
parent 1ad3563e5a
commit d46530bd8c
3 changed files with 20 additions and 17 deletions
+7 -6
View File
@@ -16,12 +16,13 @@ uniform float band_edge : hint_range(-1.0, 1.0) = 0.05; // NdotL where light b
uniform float band_softness : hint_range(0.001, 0.5) = 0.04;
uniform float mid_band_edge : hint_range(-1.0, 1.0) = 0.55; // second, brighter band
uniform vec4 shadow_color : source_color = vec4(0.62, 0.65, 0.78, 1.0); // cool shadow tint
// Matte-anime defaults: a thin rim and a tiny tight glint. Anything hotter
// reads as wet plastic / patent leather on dark surfaces.
uniform float rim_strength : hint_range(0.0, 2.0) = 0.15;
uniform float rim_width : hint_range(0.0, 1.0) = 0.4;
uniform float specular_strength : hint_range(0.0, 1.0) = 0.06;
uniform float specular_shininess : hint_range(1.0, 128.0) = 56.0;
// Matte-anime defaults: a whisper of rim and near-zero specular. Anything
// hotter reads as wet plastic / patent leather on dark surfaces and makes
// light hair look shiny.
uniform float rim_strength : hint_range(0.0, 2.0) = 0.08;
uniform float rim_width : hint_range(0.0, 1.0) = 0.32;
uniform float specular_strength : hint_range(0.0, 1.0) = 0.025;
uniform float specular_shininess : hint_range(1.0, 128.0) = 64.0;
varying vec3 world_pos;
varying vec3 world_normal;