From d4ce69df999301eb1fe59ffd0b75a3585b2023fe Mon Sep 17 00:00:00 2001 From: Joshua Barretto Date: Thu, 4 Mar 2021 11:02:40 +0000 Subject: [PATCH] Static light flickering --- assets/voxygen/shaders/figure-frag.glsl | 2 +- assets/voxygen/shaders/include/random.glsl | 5 +++++ assets/voxygen/shaders/include/sky.glsl | 4 ++++ assets/voxygen/shaders/sprite-frag.glsl | 2 +- assets/voxygen/shaders/terrain-frag.glsl | 2 +- 5 files changed, 12 insertions(+), 3 deletions(-) diff --git a/assets/voxygen/shaders/figure-frag.glsl b/assets/voxygen/shaders/figure-frag.glsl index 7d3586ee5b..3b3fd6d84f 100644 --- a/assets/voxygen/shaders/figure-frag.glsl +++ b/assets/voxygen/shaders/figure-frag.glsl @@ -184,7 +184,7 @@ void main() { float ao = f_ao * sqrt(f_ao);//0.25 + f_ao * 0.75; ///*pow(f_ao, 0.5)*/f_ao * 0.85 + 0.15; - vec3 glow = pow(pow(model_glow.w, 2.0) * (max(dot(f_norm, normalize(model_glow.xyz)) * 0.5 + 0.5, 0.0) * 1.0 + max(1.0 - length(model_glow.xyz), 0.0)), 1) * 4 * GLOW_COLOR; + vec3 glow = pow(pow(model_glow.w, 2.0) * (max(dot(f_norm, normalize(model_glow.xyz)) * 0.5 + 0.5, 0.0) * 1.0 + max(1.0 - length(model_glow.xyz), 0.0)), 1) * 4 * glow_light(f_pos); emitted_light += glow; reflected_light *= ao; diff --git a/assets/voxygen/shaders/include/random.glsl b/assets/voxygen/shaders/include/random.glsl index 9a5432cb1a..6f337fee35 100644 --- a/assets/voxygen/shaders/include/random.glsl +++ b/assets/voxygen/shaders/include/random.glsl @@ -26,6 +26,11 @@ float hash_fast(uvec3 q) return float(n) * (1.0/float(0xffffffffU)); } +// 2D, but using shifted 2D textures +float noise_2d(vec2 pos) { + return texture(t_noise, pos).x; +} + // 3D, but using shifted 2D textures float noise_3d(vec3 pos) { pos.z *= 15.0; diff --git a/assets/voxygen/shaders/include/sky.glsl b/assets/voxygen/shaders/include/sky.glsl index 7e9dd14eda..ddbb15efbf 100644 --- a/assets/voxygen/shaders/include/sky.glsl +++ b/assets/voxygen/shaders/include/sky.glsl @@ -47,6 +47,10 @@ const float PERSISTENT_AMBIANCE = 1.0 / 32.0;// 1.0 / 80; // 1.0 / 512; // 0.001 // Allowed to be > 1 due to HDR const vec3 GLOW_COLOR = vec3(3.0, 0.9, 0.05); +vec3 glow_light(vec3 pos) { + return GLOW_COLOR * (1.0 + (noise_3d(vec3(pos.xy * 0.005, tick.x * 0.5)) - 0.5) * 1.0); +} + //vec3 get_sun_dir(float time_of_day) { // const float TIME_FACTOR = (PI * 2.0) / (3600.0 * 24.0); // diff --git a/assets/voxygen/shaders/sprite-frag.glsl b/assets/voxygen/shaders/sprite-frag.glsl index 5295423998..317f385417 100644 --- a/assets/voxygen/shaders/sprite-frag.glsl +++ b/assets/voxygen/shaders/sprite-frag.glsl @@ -174,7 +174,7 @@ void main() { reflected_light += point_light; */ // float ao = /*pow(f_ao, 0.5)*/f_ao * 0.85 + 0.15; - vec3 glow = pow(f_inst_light.y, 3) * 4 * GLOW_COLOR; + vec3 glow = pow(f_inst_light.y, 3) * 4 * glow_light(f_pos); emitted_light += glow; float ao = f_ao; diff --git a/assets/voxygen/shaders/terrain-frag.glsl b/assets/voxygen/shaders/terrain-frag.glsl index 93a013cf33..16863e36eb 100644 --- a/assets/voxygen/shaders/terrain-frag.glsl +++ b/assets/voxygen/shaders/terrain-frag.glsl @@ -266,7 +266,7 @@ void main() { max_light *= f_light; // TODO: Apply AO after this - vec3 glow = GLOW_COLOR * (pow(f_glow, 6) * 5 + pow(f_glow, 1.5) * 2); + vec3 glow = glow_light(f_pos) * (pow(f_glow, 6) * 5 + pow(f_glow, 1.5) * 2); reflected_light += glow; max_light += lights_at(f_pos, f_norm, view_dir, mu, cam_attenuation, fluid_alt, k_a, k_d, k_s, alpha, f_norm, 1.0, emitted_light, reflected_light);