feat: scale village queries and enrich Jajce center
This commit is contained in:
@@ -1,54 +1,42 @@
|
||||
shader_type spatial;
|
||||
render_mode blend_mix, depth_draw_opaque, cull_back, diffuse_burley, specular_schlick_ggx;
|
||||
render_mode blend_mix, depth_prepass_alpha, cull_disabled, diffuse_burley, specular_schlick_ggx;
|
||||
|
||||
uniform float wave_strength : hint_range(0.0, 0.5) = 0.08;
|
||||
uniform float wave_speed : hint_range(0.0, 5.0) = 0.8;
|
||||
uniform float flow_speed : hint_range(0.0, 3.0) = 0.6;
|
||||
uniform vec3 deep_color : source_color = vec3(0.06, 0.24, 0.38);
|
||||
uniform vec3 shallow_color : source_color = vec3(0.18, 0.44, 0.58);
|
||||
uniform vec3 foam_color : source_color = vec3(0.82, 0.88, 0.86);
|
||||
uniform float rim_power : hint_range(0.5, 5.0) = 2.5;
|
||||
uniform float sparkle_strength : hint_range(0.0, 1.0) = 0.12;
|
||||
uniform float wave_strength : hint_range(0.0, 0.3) = 0.055;
|
||||
uniform float wave_speed : hint_range(0.0, 3.0) = 0.72;
|
||||
uniform float flow_speed : hint_range(0.0, 2.0) = 0.46;
|
||||
uniform vec3 deep_color : source_color = vec3(0.03, 0.39, 0.45);
|
||||
uniform vec3 shallow_color : source_color = vec3(0.07, 0.67, 0.64);
|
||||
uniform vec3 sunlit_color : source_color = vec3(0.55, 0.95, 0.78);
|
||||
uniform vec3 foam_color : source_color = vec3(0.82, 0.94, 0.84);
|
||||
|
||||
uniform vec3 sun_direction = vec3(0.4, 0.8, 0.4);
|
||||
|
||||
void vertex() {
|
||||
vec3 pos = VERTEX;
|
||||
float wave_a = sin(pos.x * 0.35 + pos.z * 0.25 + TIME * wave_speed) * wave_strength;
|
||||
float wave_b = cos(pos.x * 0.45 - pos.z * 0.55 + TIME * wave_speed * 0.7) * wave_strength * 0.6;
|
||||
float wave_c = sin(pos.z * 0.7 + TIME * wave_speed * 1.3) * wave_strength * 0.35;
|
||||
pos.y += wave_a + wave_b + wave_c;
|
||||
VERTEX = pos;
|
||||
float broad_wave = sin(VERTEX.x * 0.42 + VERTEX.z * 0.18 + TIME * wave_speed);
|
||||
float crossing_wave = cos(VERTEX.x * 0.7 - VERTEX.z * 0.31 + TIME * wave_speed * 0.73);
|
||||
VERTEX.y += (broad_wave + crossing_wave * 0.45) * wave_strength;
|
||||
}
|
||||
|
||||
|
||||
void fragment() {
|
||||
vec3 view_dir = VIEW;
|
||||
vec3 normal = NORMAL;
|
||||
vec3 view_norm = normalize(view_dir);
|
||||
vec2 flowing_uv = UV * vec2(7.0, 10.0);
|
||||
flowing_uv.y -= TIME * flow_speed;
|
||||
float ribbon_a = sin(flowing_uv.y + sin(flowing_uv.x * 0.72) * 1.25) * 0.5 + 0.5;
|
||||
float ribbon_b = sin(flowing_uv.y * 1.7 - flowing_uv.x * 0.55 + TIME * 0.23) * 0.5 + 0.5;
|
||||
float quiet_ripple = smoothstep(0.72, 0.98, ribbon_a * 0.62 + ribbon_b * 0.38);
|
||||
float fresnel = pow(1.0 - clamp(dot(normalize(NORMAL), normalize(VIEW)), 0.0, 1.0), 2.4);
|
||||
float bank_distance = min(UV.x, 1.0 - UV.x);
|
||||
float bank_foam = 1.0 - smoothstep(0.0, 0.07, bank_distance);
|
||||
bank_foam *= 0.72 + sin(UV.y * 52.0 + TIME * 0.35) * 0.12;
|
||||
|
||||
float rim = 1.0 - abs(dot(normal, view_norm));
|
||||
rim = pow(rim, rim_power);
|
||||
rim = smoothstep(0.15, 0.7, rim);
|
||||
|
||||
vec2 uv = UV;
|
||||
uv.x += TIME * flow_speed * 0.4;
|
||||
uv.y += TIME * flow_speed * 0.3;
|
||||
float flow_a = sin(uv.x * 8.0 + uv.y * 5.0) * 0.5 + 0.5;
|
||||
float flow_b = cos(uv.y * 6.0 - uv.x * 4.0 + TIME * 0.25) * 0.5 + 0.5;
|
||||
float flow = mix(flow_a, flow_b, 0.5);
|
||||
|
||||
vec3 water_color = mix(deep_color, shallow_color, flow * 0.6 + 0.2);
|
||||
water_color = mix(water_color, foam_color, rim * 0.65);
|
||||
|
||||
vec3 half_vec = normalize(view_norm + normalize(sun_direction));
|
||||
float specular = pow(max(dot(normal, half_vec), 0.0), 120.0);
|
||||
specular *= smoothstep(0.4, 0.85, rim);
|
||||
float sparkle = specular * sparkle_strength;
|
||||
vec3 water_color = mix(deep_color, shallow_color, ribbon_a * 0.2 + 0.48);
|
||||
water_color = mix(water_color, sunlit_color, fresnel * 0.42);
|
||||
water_color = mix(water_color, foam_color, quiet_ripple * 0.05);
|
||||
water_color = mix(water_color, foam_color, bank_foam * 0.3);
|
||||
|
||||
ALBEDO = water_color;
|
||||
METALLIC = 0.08;
|
||||
ROUGHNESS = 0.22;
|
||||
EMISSION = water_color * 0.04 + foam_color * sparkle;
|
||||
ALPHA = 0.76;
|
||||
ALPHA_SCISSOR_THRESHOLD = 0.0;
|
||||
ROUGHNESS = mix(0.34, 0.5, ribbon_b);
|
||||
SPECULAR = 0.38;
|
||||
EMISSION = water_color * 0.12 + sunlit_color * (quiet_ripple * 0.05 + fresnel * 0.03);
|
||||
EMISSION += foam_color * bank_foam * 0.025;
|
||||
ALPHA = mix(0.94, 0.99, fresnel);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user