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:
co-authored by
Claude Fable 5
parent
1ad3563e5a
commit
d46530bd8c
@@ -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 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 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
|
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
|
// Matte-anime defaults: a whisper of rim and near-zero specular. Anything
|
||||||
// reads as wet plastic / patent leather on dark surfaces.
|
// hotter reads as wet plastic / patent leather on dark surfaces and makes
|
||||||
uniform float rim_strength : hint_range(0.0, 2.0) = 0.15;
|
// light hair look shiny.
|
||||||
uniform float rim_width : hint_range(0.0, 1.0) = 0.4;
|
uniform float rim_strength : hint_range(0.0, 2.0) = 0.08;
|
||||||
uniform float specular_strength : hint_range(0.0, 1.0) = 0.06;
|
uniform float rim_width : hint_range(0.0, 1.0) = 0.32;
|
||||||
uniform float specular_shininess : hint_range(1.0, 128.0) = 56.0;
|
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_pos;
|
||||||
varying vec3 world_normal;
|
varying vec3 world_normal;
|
||||||
|
|||||||
@@ -104,11 +104,13 @@ static func make_environment(sky_variant: String = "day") -> Environment:
|
|||||||
environment.glow_bloom = 0.05
|
environment.glow_bloom = 0.05
|
||||||
environment.glow_hdr_threshold = 1.45
|
environment.glow_hdr_threshold = 1.45
|
||||||
|
|
||||||
# Cel color grade: punchy saturation, hint of contrast (bumped a touch to
|
# Cel color grade: a LIGHT saturation lift only. Anything stronger shifts
|
||||||
# make up for filmic's slightly tamer mids — vibrancy stays).
|
# hues — authored ginger hair grades into fire-truck red, pastels go neon —
|
||||||
|
# and the whole game reads "filtered". Let the textures' own colors carry
|
||||||
|
# the vibrancy.
|
||||||
environment.adjustment_enabled = true
|
environment.adjustment_enabled = true
|
||||||
environment.adjustment_saturation = 1.3
|
environment.adjustment_saturation = 1.08
|
||||||
environment.adjustment_contrast = 1.05
|
environment.adjustment_contrast = 1.03
|
||||||
|
|
||||||
# A touch of depth haze for scale; far enough to not gray the arena.
|
# A touch of depth haze for scale; far enough to not gray the arena.
|
||||||
environment.fog_enabled = true
|
environment.fog_enabled = true
|
||||||
|
|||||||
@@ -85,13 +85,13 @@ static func toonify(src: Material) -> Material:
|
|||||||
mat.set_shader_parameter("has_texture", tex != null)
|
mat.set_shader_parameter("has_texture", tex != null)
|
||||||
mat.set_shader_parameter("use_triplanar", false)
|
mat.set_shader_parameter("use_triplanar", false)
|
||||||
mat.set_shader_parameter("albedo_color", col)
|
mat.set_shader_parameter("albedo_color", col)
|
||||||
# Matte anime surfaces: a thin rim for silhouette pop and a small tight
|
# Matte anime surfaces: a whisper of rim for silhouette pop, near-zero
|
||||||
# glint. The old hot rim (0.45 over 65% width) + broad specular made
|
# specular. Characters should read as cloth/hair, not vinyl — any hotter
|
||||||
# every character and prop read as wet plastic / a colored mirror.
|
# and dark surfaces gloss up and light hair looks wet.
|
||||||
mat.set_shader_parameter("rim_strength", 0.15)
|
mat.set_shader_parameter("rim_strength", 0.08)
|
||||||
mat.set_shader_parameter("rim_width", 0.4)
|
mat.set_shader_parameter("rim_width", 0.32)
|
||||||
mat.set_shader_parameter("specular_strength", 0.06)
|
mat.set_shader_parameter("specular_strength", 0.025)
|
||||||
mat.set_shader_parameter("specular_shininess", 56.0)
|
mat.set_shader_parameter("specular_shininess", 64.0)
|
||||||
return mat
|
return mat
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user