4054e2c0dd
- Upgrade river shader with multi-layer UV flow, fresnel edges, foam highlights, and specular sparkle - Upgrade waterfall shader with dual-band scrolling, distinct foam contrast, and rim transparency - Widen river (8m) and waterfall (8m) for greater visual presence - Increase waterfall mist particles to 72 with wider spread and longer lifetime - Add fortress crenellations (10), three turrets, and prominent ridge banner for readable skyline silhouette - Remove duplicate banner nodes from JajceWorld instance (now owned by FortressBlockout scene) - Update BUILD_IN_PUBLIC_PLAN and LEARNING_ROADMAP to reflect completion
51 lines
1.7 KiB
Plaintext
51 lines
1.7 KiB
Plaintext
shader_type spatial;
|
|
render_mode blend_mix, depth_draw_opaque, cull_back, diffuse_burley, specular_schlick_ggx;
|
|
|
|
uniform float scroll_speed : hint_range(0.0, 5.0) = 1.8;
|
|
uniform vec3 deep_color : source_color = vec3(0.1, 0.45, 0.55);
|
|
uniform vec3 mid_color : source_color = vec3(0.45, 0.78, 0.82);
|
|
uniform vec3 foam_color : source_color = vec3(0.9, 0.95, 0.95);
|
|
uniform float foam_contrast : hint_range(0.5, 4.0) = 2.2;
|
|
uniform float sparkle_strength : hint_range(0.0, 0.8) = 0.25;
|
|
|
|
void vertex() {
|
|
}
|
|
|
|
void fragment() {
|
|
vec2 uv = UV;
|
|
uv.y += TIME * scroll_speed;
|
|
|
|
float band_a = fract(uv.y * 5.0 + sin(uv.x * 2.0) * 0.15);
|
|
band_a = smoothstep(0.2, 0.55, band_a) * smoothstep(0.8, 0.45, band_a);
|
|
|
|
float band_b = fract(uv.y * 3.5 + cos(uv.x * 2.5 + TIME * 0.3) * 0.12);
|
|
band_b = smoothstep(0.1, 0.5, band_b) * smoothstep(0.85, 0.4, band_b);
|
|
|
|
float foam_a = fract(uv.y * 4.0);
|
|
foam_a = pow(smoothstep(0.0, 0.12, foam_a) * smoothstep(0.3, 0.15, foam_a), foam_contrast);
|
|
|
|
float foam_b = fract(uv.y * 6.0 + uv.x * 1.5);
|
|
foam_b = pow(smoothstep(0.5, 0.58, foam_b) * smoothstep(0.7, 0.6, foam_b), foam_contrast * 0.8);
|
|
|
|
float foam = foam_a * 0.7 + foam_b * 0.3;
|
|
|
|
vec3 base = mix(deep_color, mid_color, band_a * 0.5 + band_b * 0.3);
|
|
vec3 color = mix(base, foam_color, foam);
|
|
|
|
float sparkle = pow(foam_a, 3.0) * sparkle_strength;
|
|
float highlight = band_a * band_b * 0.35;
|
|
float emission_value = sparkle + highlight * 0.3;
|
|
|
|
ALBEDO = color;
|
|
ALPHA = mix(0.25, 0.78, foam * 0.7 + 0.15);
|
|
EMISSION = color * emission_value;
|
|
METALLIC = 0.05;
|
|
ROUGHNESS = 0.15;
|
|
|
|
vec3 normal = NORMAL;
|
|
vec3 view_dir = VIEW;
|
|
vec3 view_norm = normalize(view_dir);
|
|
float rim = 1.0 - abs(dot(normal, view_norm));
|
|
ALPHA = mix(ALPHA, ALPHA * 0.5, rim * 0.6);
|
|
}
|