From 3055621894618f764a3e760bf9b906e86c7987dc Mon Sep 17 00:00:00 2001 From: MihailRis Date: Mon, 2 Feb 2026 18:35:44 +0300 Subject: [PATCH] improve sky lighting --- res/shaders/entity.glslv | 4 +++- res/shaders/lib/constants.glsl | 4 ++-- res/shaders/lib/sky.glsl | 5 +++-- res/shaders/main.glslv | 4 +++- res/shaders/translucent.glslv | 4 +++- 5 files changed, 14 insertions(+), 7 deletions(-) diff --git a/res/shaders/entity.glslv b/res/shaders/entity.glslv index c337ddb2d..d50cd0075 100644 --- a/res/shaders/entity.glslv +++ b/res/shaders/entity.glslv @@ -13,6 +13,8 @@ layout (location = 4) in vec4 v_normal; out vec4 a_color; +uniform float u_dayTime; + void main() { a_modelpos = u_model * vec4(v_position, 1.0); vec3 pos3d = a_modelpos.xyz - u_cameraPos; @@ -26,7 +28,7 @@ void main() { a_texCoord = v_texCoord; a_dir = a_modelpos.xyz - u_cameraPos; - vec3 skyLightColor = pick_sky_color(u_skybox); + vec3 skyLightColor = pick_sky_color(u_skybox, u_dayTime); a_color.rgb = max(a_color.rgb, skyLightColor.rgb * v_light.a) * v_color; a_color.a = u_opacity; diff --git a/res/shaders/lib/constants.glsl b/res/shaders/lib/constants.glsl index 74f295458..1c2f4062b 100644 --- a/res/shaders/lib/constants.glsl +++ b/res/shaders/lib/constants.glsl @@ -8,8 +8,8 @@ #define CURVATURE_FACTOR 0.002 // lighting -#define SKY_LIGHT_MUL 2.9 -#define SKY_LIGHT_TINT (vec3(1.0, 0.95, 0.9) * 2.0) +#define SKY_LIGHT_MUL 2.5 +#define SKY_LIGHT_TINT (vec3(1.0, 0.75, 0.6) * 2.0) #define MIN_SKY_LIGHT vec3(0.2, 0.25, 0.33) // fog diff --git a/res/shaders/lib/sky.glsl b/res/shaders/lib/sky.glsl index ce3604f5f..97203286b 100644 --- a/res/shaders/lib/sky.glsl +++ b/res/shaders/lib/sky.glsl @@ -3,8 +3,9 @@ #include -vec3 pick_sky_color(samplerCube cubemap) { - vec3 skyLightColor = texture(cubemap, vec3(0.4f, 0.05f, 0.4f)).rgb; +vec3 pick_sky_color(samplerCube cubemap, float dayTime) { + float elevation = sin(dayTime * PI2) * 0.2; + vec3 skyLightColor = texture(cubemap, vec3(0.0f, elevation, -0.4f)).rgb; skyLightColor *= SKY_LIGHT_TINT; skyLightColor = min(vec3(1.0f), skyLightColor * SKY_LIGHT_MUL); skyLightColor = max(MIN_SKY_LIGHT, skyLightColor); diff --git a/res/shaders/main.glslv b/res/shaders/main.glslv index 3d7220297..8cc7a7637 100644 --- a/res/shaders/main.glslv +++ b/res/shaders/main.glslv @@ -10,6 +10,8 @@ layout (location = 3) in vec4 v_normal; #include #include +uniform float u_dayTime; + out vec4 a_torchLight; void main() { @@ -25,7 +27,7 @@ void main() { a_texCoord = v_texCoord; a_dir = a_modelpos.xyz - u_cameraPos; - vec3 skyLightColor = pick_sky_color(u_skybox); + vec3 skyLightColor = pick_sky_color(u_skybox, u_dayTime); a_skyLight = skyLightColor.rgb*v_light.a; mat4 viewmodel = u_view * u_model; diff --git a/res/shaders/translucent.glslv b/res/shaders/translucent.glslv index 8c429e97b..16cc8c4e3 100644 --- a/res/shaders/translucent.glslv +++ b/res/shaders/translucent.glslv @@ -12,6 +12,8 @@ layout (location = 3) in vec4 v_normal; out vec4 a_torchLight; +uniform float u_dayTime; + void main() { a_modelpos = u_model * vec4(v_position, 1.0f); vec3 pos3d = a_modelpos.xyz - u_cameraPos; @@ -25,7 +27,7 @@ void main() { a_texCoord = v_texCoord; a_dir = a_modelpos.xyz - u_cameraPos; - vec3 skyLightColor = pick_sky_color(u_skybox); + vec3 skyLightColor = pick_sky_color(u_skybox, u_dayTime); a_skyLight = skyLightColor.rgb*v_light.a; mat4 viewmodel = u_view * u_model;