137 lines
4.3 KiB
Plaintext
137 lines
4.3 KiB
Plaintext
[gd_resource type="Environment" format=3 uid="uid://dq64sos14f8hu"]
|
|
|
|
[ext_resource type="Texture2D" uid="uid://crrj260kiyoy" path="res://dynamic-sky/sky_44_2k.png" id="1_vd8dq"]
|
|
|
|
[sub_resource type="Shader" id="Shader_porxs"]
|
|
code = "
|
|
shader_type sky;
|
|
|
|
uniform sampler2D skybox_texture : source_color, filter_linear_mipmap, repeat_enable;
|
|
uniform bool skybox_enabled = false;
|
|
uniform float skybox_blend = 1.0;
|
|
|
|
uniform vec4 sky_top_color : source_color = vec4(0.2, 0.4, 0.8, 1.0);
|
|
uniform vec4 sky_horizon_color : source_color = vec4(0.6, 0.7, 0.9, 1.0);
|
|
uniform vec4 sky_bottom_color : source_color = vec4(0.4, 0.5, 0.6, 1.0);
|
|
uniform float gradient_intensity = 1.0;
|
|
uniform float horizon_blend = 0.5;
|
|
|
|
uniform bool sun_glow_enabled = true;
|
|
uniform vec3 sun_direction = vec3(0.0, 1.0, 0.0);
|
|
uniform vec4 sun_glow_color : source_color = vec4(1.0, 0.95, 0.8, 1.0);
|
|
uniform float sun_glow_intensity = 0.5;
|
|
uniform float sun_glow_size = 0.2;
|
|
uniform float sun_glow_falloff = 2.0;
|
|
|
|
uniform bool dawn_dusk_enabled = true;
|
|
uniform vec4 dawn_dusk_color : source_color = vec4(1.0, 0.6, 0.4, 1.0);
|
|
uniform float dawn_dusk_intensity = 0.5;
|
|
uniform float dawn_dusk_blend = 0.0;
|
|
|
|
uniform float stars_visibility = 0.0;
|
|
uniform vec4 stars_tint : source_color = vec4(1.0);
|
|
|
|
float hash(vec2 p) {
|
|
return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453);
|
|
}
|
|
|
|
float stars(vec3 dir) {
|
|
vec2 uv = dir.xz / (abs(dir.y) + 0.001) * 50.0;
|
|
vec2 cell = floor(uv);
|
|
vec2 local = fract(uv) - 0.5;
|
|
|
|
float star = 0.0;
|
|
float h = hash(cell);
|
|
if (h > 0.97) {
|
|
float dist = length(local);
|
|
star = smoothstep(0.1, 0.0, dist) * (h - 0.97) / 0.03;
|
|
star *= step(0.0, dir.y);
|
|
}
|
|
return star;
|
|
}
|
|
|
|
vec2 pano_uv(vec3 dir) {
|
|
dir = normalize(dir);
|
|
float u = atan(dir.x, dir.z) / (2.0 * PI) + 0.5;
|
|
float v = acos(clamp(dir.y, -1.0, 1.0)) / PI;
|
|
return vec2(u, v);
|
|
}
|
|
|
|
void sky() {
|
|
vec3 dir = EYEDIR;
|
|
float y = dir.y;
|
|
|
|
vec3 color;
|
|
if (y > 0.0) {
|
|
float t = pow(y, horizon_blend);
|
|
color = mix(sky_horizon_color.rgb, sky_top_color.rgb, t);
|
|
} else {
|
|
float t = pow(-y, horizon_blend);
|
|
color = mix(sky_horizon_color.rgb, sky_bottom_color.rgb, t);
|
|
}
|
|
|
|
color = mix(vec3(0.5), color, gradient_intensity);
|
|
|
|
if (skybox_enabled) {
|
|
vec3 pano_color = texture(skybox_texture, pano_uv(dir)).rgb;
|
|
color = mix(color, pano_color, skybox_blend);
|
|
}
|
|
|
|
if (sun_glow_enabled && sun_direction.y > -0.2) {
|
|
float sun_dot = max(0.0, dot(dir, normalize(sun_direction)));
|
|
float glow = pow(sun_dot, 1.0 / max(0.001, sun_glow_size));
|
|
glow = pow(glow, sun_glow_falloff);
|
|
color += sun_glow_color.rgb * glow * sun_glow_intensity;
|
|
}
|
|
|
|
if (dawn_dusk_enabled && dawn_dusk_blend > 0.0) {
|
|
float horizon_factor = 1.0 - abs(y);
|
|
horizon_factor = pow(horizon_factor, 2.0);
|
|
color = mix(color, dawn_dusk_color.rgb, horizon_factor * dawn_dusk_intensity * dawn_dusk_blend);
|
|
}
|
|
|
|
if (stars_visibility > 0.0 && y > 0.0) {
|
|
float star_value = stars(dir) * stars_visibility;
|
|
color += stars_tint.rgb * star_value;
|
|
}
|
|
|
|
COLOR = color;
|
|
}
|
|
"
|
|
|
|
[sub_resource type="ShaderMaterial" id="ShaderMaterial_jmmec"]
|
|
shader = SubResource("Shader_porxs")
|
|
shader_parameter/skybox_texture = ExtResource("1_vd8dq")
|
|
shader_parameter/skybox_enabled = true
|
|
shader_parameter/skybox_blend = 1.0
|
|
shader_parameter/sky_top_color = Color(0.2, 0.4, 0.85, 1)
|
|
shader_parameter/sky_horizon_color = Color(0.6, 0.75, 0.95, 1)
|
|
shader_parameter/sky_bottom_color = Color(0.5, 0.6, 0.7, 1)
|
|
shader_parameter/gradient_intensity = 1.0
|
|
shader_parameter/horizon_blend = 0.5
|
|
shader_parameter/sun_glow_enabled = true
|
|
shader_parameter/sun_direction = Vector3(-0.99265814, -0.112351425, -0.04480003)
|
|
shader_parameter/sun_glow_color = Color(1, 0.95, 0.85, 1)
|
|
shader_parameter/sun_glow_intensity = 0.3
|
|
shader_parameter/sun_glow_size = 0.2
|
|
shader_parameter/sun_glow_falloff = 2.0
|
|
shader_parameter/dawn_dusk_enabled = true
|
|
shader_parameter/dawn_dusk_color = Color(1, 0.6, 0.4, 1)
|
|
shader_parameter/dawn_dusk_intensity = 0.5
|
|
shader_parameter/dawn_dusk_blend = 0.0
|
|
shader_parameter/stars_visibility = 0.0
|
|
shader_parameter/stars_tint = Color(1, 1, 1, 1)
|
|
|
|
[sub_resource type="Sky" id="Sky_ssi15"]
|
|
sky_material = SubResource("ShaderMaterial_jmmec")
|
|
|
|
[resource]
|
|
background_mode = 2
|
|
sky = SubResource("Sky_ssi15")
|
|
ambient_light_color = Color(0.5162781, 0.4713005, 0.523453, 1)
|
|
ambient_light_energy = 0.32816777
|
|
fog_enabled = true
|
|
fog_light_color = Color(0.6533633, 0.5148431, 0.4713005, 1)
|
|
fog_density = 0.015073524
|
|
fog_height_density = 0.1
|