feat: cel-shaded look — toon shader, ink outlines, stylized environment
- toon.gdshader: banded diffuse with cool-tinted shadows (3 tones), stepped specular, rim light, and an optional world-triplanar albedo path so level geometry keeps the 0.5 m grid with no UVs - toon_outline.gdshader: inverted-hull ink outline, applied via material_overlay so it works on skinned (deforming) meshes - LevelMaterials: tinted() now returns toon grid materials; toonify()/ apply_toon_recursive() convert imported character/prop materials in place - SkinnedPlayerModel: characters get toon shading + outline on load - LevelEnvironment: shared stylized environment for all maps — saturated anime sky, linear tonemap (filmic/ACES crush cel bands), bloom for emissives, saturation+contrast grade, light depth haze; test level and dust2 now use it and the procedural arena (which had NO environment) gets it plus runtime toonification of its baked geometry Co-Authored-By: Claude Fable 5 <[email protected]>
This commit is contained in:
co-authored by
Claude Fable 5
parent
2c7b5a1aca
commit
37c15bed1a
@@ -0,0 +1,17 @@
|
||||
shader_type spatial;
|
||||
render_mode cull_front, unshaded;
|
||||
|
||||
// Inverted-hull outline. Assign as material_overlay on a GeometryInstance3D:
|
||||
// the mesh renders a second time, grown along its normals with front faces
|
||||
// culled, leaving a colored shell visible only at the silhouette.
|
||||
|
||||
uniform vec4 outline_color : source_color = vec4(0.06, 0.05, 0.09, 1.0);
|
||||
uniform float outline_width : hint_range(0.0, 0.1) = 0.02;
|
||||
|
||||
void vertex() {
|
||||
VERTEX += NORMAL * outline_width;
|
||||
}
|
||||
|
||||
void fragment() {
|
||||
ALBEDO = outline_color.rgb;
|
||||
}
|
||||
Reference in New Issue
Block a user