Feat/visual audio overhaul #21
@@ -16,10 +16,12 @@ 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
|
||||||
uniform float rim_strength : hint_range(0.0, 2.0) = 0.35;
|
// Matte-anime defaults: a thin rim and a tiny tight glint. Anything hotter
|
||||||
uniform float rim_width : hint_range(0.0, 1.0) = 0.65;
|
// reads as wet plastic / patent leather on dark surfaces.
|
||||||
uniform float specular_strength : hint_range(0.0, 1.0) = 0.25;
|
uniform float rim_strength : hint_range(0.0, 2.0) = 0.15;
|
||||||
uniform float specular_shininess : hint_range(1.0, 128.0) = 24.0;
|
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;
|
||||||
|
|
||||||
varying vec3 world_pos;
|
varying vec3 world_pos;
|
||||||
varying vec3 world_normal;
|
varying vec3 world_normal;
|
||||||
|
|||||||
@@ -91,18 +91,23 @@ static func make_environment(sky_variant: String = "day") -> Environment:
|
|||||||
environment.ambient_light_source = Environment.AMBIENT_SOURCE_SKY
|
environment.ambient_light_source = Environment.AMBIENT_SOURCE_SKY
|
||||||
environment.ambient_light_energy = 0.55
|
environment.ambient_light_energy = 0.55
|
||||||
|
|
||||||
# Filmic crushes the cel bands; linear-ish keeps them crisp.
|
# Filmic with a high white point: near-linear through the cel bands (they
|
||||||
environment.tonemap_mode = Environment.TONE_MAPPER_LINEAR
|
# stay crisp) but a soft shoulder above 1.0. LINEAR clipped lit white
|
||||||
|
# surfaces and then bloomed the clip — every facade glowed like porcelain.
|
||||||
|
environment.tonemap_mode = Environment.TONE_MAPPER_FILMIC
|
||||||
|
environment.tonemap_white = 2.4
|
||||||
|
|
||||||
# Bloom sells emissives (tracers, plasma, rim highlights).
|
# Bloom for genuine emissives only (tracers, plasma, neon) — lit geometry
|
||||||
|
# must never cross this threshold or it reads as glowing glass.
|
||||||
environment.glow_enabled = true
|
environment.glow_enabled = true
|
||||||
environment.glow_intensity = 0.5
|
environment.glow_intensity = 0.4
|
||||||
environment.glow_bloom = 0.05
|
environment.glow_bloom = 0.05
|
||||||
environment.glow_hdr_threshold = 1.1
|
environment.glow_hdr_threshold = 1.45
|
||||||
|
|
||||||
# Cel color grade: punchy saturation, hint of contrast.
|
# Cel color grade: punchy saturation, hint of contrast (bumped a touch to
|
||||||
|
# make up for filmic's slightly tamer mids — vibrancy stays).
|
||||||
environment.adjustment_enabled = true
|
environment.adjustment_enabled = true
|
||||||
environment.adjustment_saturation = 1.22
|
environment.adjustment_saturation = 1.3
|
||||||
environment.adjustment_contrast = 1.05
|
environment.adjustment_contrast = 1.05
|
||||||
|
|
||||||
# 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.
|
||||||
|
|||||||
@@ -85,8 +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)
|
||||||
# Characters read best with a slightly wider lit band and stronger rim.
|
# Matte anime surfaces: a thin rim for silhouette pop and a small tight
|
||||||
mat.set_shader_parameter("rim_strength", 0.45)
|
# glint. The old hot rim (0.45 over 65% width) + broad specular made
|
||||||
|
# every character and prop read as wet plastic / a colored mirror.
|
||||||
|
mat.set_shader_parameter("rim_strength", 0.15)
|
||||||
|
mat.set_shader_parameter("rim_width", 0.4)
|
||||||
|
mat.set_shader_parameter("specular_strength", 0.06)
|
||||||
|
mat.set_shader_parameter("specular_shininess", 56.0)
|
||||||
return mat
|
return mat
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -321,14 +321,17 @@ func _build_environment() -> void:
|
|||||||
# the energies the old dark flat palette needed).
|
# the energies the old dark flat palette needed).
|
||||||
env.environment.ambient_light_source = Environment.AMBIENT_SOURCE_COLOR
|
env.environment.ambient_light_source = Environment.AMBIENT_SOURCE_COLOR
|
||||||
env.environment.ambient_light_color = Color(0.58, 0.54, 0.66)
|
env.environment.ambient_light_color = Color(0.58, 0.54, 0.66)
|
||||||
env.environment.ambient_light_energy = 1.7
|
# Under the filmic shoulder the ambient's lavender tint actually shows
|
||||||
|
# (LINEAR used to clip it to white) — keep it lower so the sun shapes
|
||||||
|
# surfaces and lit faces stay bright.
|
||||||
|
env.environment.ambient_light_energy = 1.35
|
||||||
env.environment.fog_density = 0.0007 # light city haze for depth over 600m
|
env.environment.fog_density = 0.0007 # light city haze for depth over 600m
|
||||||
# Ambient occlusion grounds the modeled facade detail (ZZZ-style depth)
|
# Ambient occlusion grounds the modeled facade detail (ZZZ-style depth)
|
||||||
env.environment.ssao_enabled = true
|
env.environment.ssao_enabled = true
|
||||||
env.environment.ssao_intensity = 2.0
|
env.environment.ssao_intensity = 2.0
|
||||||
var sun := get_node_or_null("Sun")
|
var sun := get_node_or_null("Sun")
|
||||||
if sun:
|
if sun:
|
||||||
sun.light_energy = 2.2
|
sun.light_energy = 2.5
|
||||||
sun.rotation_degrees = Vector3(-38, 55, 0)
|
sun.rotation_degrees = Vector3(-38, 55, 0)
|
||||||
sun.directional_shadow_max_distance = 220.0
|
sun.directional_shadow_max_distance = 220.0
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user