feat: full cel treatment for Neon Alley — flat toon colors + ink outlines
- LevelMaterials.flat(): toon-banded FLAT color material (no greybox grid texture) for dressed maps; cached per tint, rim/spec off - Neon Alley overrides _box_static: every structure renders flat cel color; prop-scale pieces (<10m) get an inverted-hull ink outline scaled to their size. Building-scale boxes skip the hull — the inflated plates smear into black voids at close range (found via fixed street-camera capture) - Pylon wires render as flat ink lines; warmer wood + hotter vermilion for flat shading (the grid multiply used to brighten tints) - visual_capture: deterministic street-level shot after the aerial for style comparisons Street capture now reads properly BoomerangX: flat lavender asphalt, hard light bands, torii framed down the underpass, neon strips + sign glow. Co-Authored-By: Claude Fable 5 <[email protected]>
This commit is contained in:
co-authored by
Claude Fable 5
parent
0813d0b40d
commit
233f88aee3
@@ -51,6 +51,26 @@ static func tinted(tint: Color, dark: bool = false) -> Material:
|
||||
return mat
|
||||
|
||||
|
||||
static var _flat_cache: Dictionary = {}
|
||||
|
||||
## Flat cel color: toon banding with NO grid texture — the full stylized
|
||||
## look for dressed maps (vs. tinted()'s greybox grid for blockouts).
|
||||
## Rim/specular stay off (they blob on large level surfaces).
|
||||
static func flat(tint: Color) -> Material:
|
||||
var key := tint.to_html()
|
||||
if _flat_cache.has(key):
|
||||
return _flat_cache[key]
|
||||
var mat := ShaderMaterial.new()
|
||||
mat.shader = load(TOON_SHADER)
|
||||
mat.set_shader_parameter("has_texture", false)
|
||||
mat.set_shader_parameter("use_triplanar", false)
|
||||
mat.set_shader_parameter("albedo_color", tint)
|
||||
mat.set_shader_parameter("rim_strength", 0.0)
|
||||
mat.set_shader_parameter("specular_strength", 0.0)
|
||||
_flat_cache[key] = mat
|
||||
return mat
|
||||
|
||||
|
||||
## Toon version of an arbitrary material (usually a character's imported
|
||||
## StandardMaterial3D): keeps its albedo texture/color, swaps the shading.
|
||||
static func toonify(src: Material) -> Material:
|
||||
|
||||
Reference in New Issue
Block a user