From 841ab089d7c8125c7062224aaa0e992a5d882b2a Mon Sep 17 00:00:00 2001 From: Merlin1809 <88194861+Merlin1809@users.noreply.github.com> Date: Wed, 21 Jan 2026 20:35:24 +0100 Subject: [PATCH] fix https://github.com/Merlin1809/Eclipse-Shader/issues/77 --- shaders/dimensions/all_solid.gsh | 27 +++++++++++++++++--------- shaders/dimensions/all_translucent.fsh | 14 ++++++------- shaders/dimensions/final.fsh | 2 +- shaders/dimensions/prepare1.csh | 2 +- shaders/dimensions/prepare2.csh | 2 +- shaders/world1/gbuffers_entities.gsh | 8 -------- 6 files changed, 28 insertions(+), 27 deletions(-) delete mode 100644 shaders/world1/gbuffers_entities.gsh diff --git a/shaders/dimensions/all_solid.gsh b/shaders/dimensions/all_solid.gsh index 1238660..45ade94 100644 --- a/shaders/dimensions/all_solid.gsh +++ b/shaders/dimensions/all_solid.gsh @@ -277,30 +277,39 @@ void main() { vec2 edgeBlend = eastHeightMult*vec2(-0.17,0.0) + westHeightMult*vec2(0.17,0.0) + southHeightMult*vec2(0.0,-0.17) + northHeightMult*vec2(0.0,0.17); + vec3 worldUp = vec3(0.0, 1.0, 0.0); - vec3 offsetPos = vertex+vec3(0.0, 1.0, 0.0)+relativeEyePosition; + vec3 offsetPos = vertex + worldUp + relativeEyePosition; float playerDist = smoothstep(0.5, 0.05, length(offsetPos.xz)) * smoothstep(1.0, 0.2, abs(offsetPos.y)); - vec2 dir2 = normalize(vertex.xz+relativeEyePosition.xz); + vec2 dir2 = normalize(vertex.xz + relativeEyePosition.xz); - vec2 Wvertex = vertex.xz+cameraPositionFract.xz+mod(vec2(cameraPositionInt.xz), vec2(20.0)); + vec2 Wvertex = vertex.xz + cameraPositionFract.xz + mod(vec2(cameraPositionInt.xz), vec2(20.0)); - vec2 randomDir = 2.0*(texture(noisetex, 0.75*Wvertex).xy+texture(noisetex, 0.35*Wvertex.yx).xy)-1.0; + vec2 randomDir = 2.0 * (texture(noisetex, 0.75*Wvertex).xy + texture(noisetex, 0.35*Wvertex.yx).xy) - 1.0; // vertex.xz -= 0.05*randomDir; vec3 dir = normalize(vertex); vec3 originalVertex = vertex; - vec3 worldUp = vec3(0.0, 1.0, 0.0); - vec3 right = GRASS_BASE_THICKNESS*normalize(cross(worldUp, dir)); worldUp *= heightMult; originalVertex -= right*0.125*GRASS_BASE_THICKNESS; - vec3 verticies[21]; - float grassHeights[21]; - vec3 GrassNormal[7]; + #if GRASS_QUALITY == 2 + vec3 verticies[21]; + float grassHeights[21]; + vec3 GrassNormal[7]; + #elif GRASS_QUALITY == 1 + vec3 verticies[15]; + float grassHeights[15]; + vec3 GrassNormal[5]; + #else + vec3 verticies[9]; + float grassHeights[9]; + vec3 GrassNormal[3]; + #endif for (j = 0; j < triangle_count; j++) { diff --git a/shaders/dimensions/all_translucent.fsh b/shaders/dimensions/all_translucent.fsh index 40a6a00..91e28f0 100644 --- a/shaders/dimensions/all_translucent.fsh +++ b/shaders/dimensions/all_translucent.fsh @@ -801,11 +801,11 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) #ifdef PIXELATED_WAVES #if WATER_SIM_SCALE == 0 - float NORMAL_SCALE = 20.0; + const float NORMAL_SCALE = 20.0; #elif WATER_SIM_SCALE == 1 - float NORMAL_SCALE = 40.0; + const float NORMAL_SCALE = 40.0; #else - float NORMAL_SCALE = 80.0; + const float NORMAL_SCALE = 80.0; #endif ivec2 normalSize = imageSize(waveSim2); @@ -816,13 +816,13 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) vec4 waves = imageLoad(waveSim2, ivec2(centeredUV)); #else #if WATER_SIM_DISTANCE == 1 - float NORMAL_SCALE = 0.04; + const float NORMAL_SCALE = 0.04; #elif WATER_SIM_DISTANCE == 2 - float NORMAL_SCALE = 0.02; + const float NORMAL_SCALE = 0.02; #elif WATER_SIM_DISTANCE == 3 - float NORMAL_SCALE = 0.015; + const float NORMAL_SCALE = 0.015; #else - float NORMAL_SCALE = 0.01; + const float NORMAL_SCALE = 0.01; #endif vec2 waveUV = (worldPos.xz - previousCameraPositionWave2.xz) * NORMAL_SCALE; diff --git a/shaders/dimensions/final.fsh b/shaders/dimensions/final.fsh index e0f4b97..9f3d00a 100644 --- a/shaders/dimensions/final.fsh +++ b/shaders/dimensions/final.fsh @@ -146,7 +146,7 @@ float doVignette( in vec2 texcoord, in float noise){ } #if DEBUG_VIEW == debug_WATERSIM && WATER_INTERACTION == 2 - layout (rgba16f) uniform image2D waveSim2; + layout (rgba16f) uniform readonly image2D waveSim2; #endif diff --git a/shaders/dimensions/prepare1.csh b/shaders/dimensions/prepare1.csh index a19122f..a442282 100644 --- a/shaders/dimensions/prepare1.csh +++ b/shaders/dimensions/prepare1.csh @@ -38,7 +38,7 @@ layout (local_size_x = 32, local_size_y = 32, local_size_z = 1) in; layout (rg16f) uniform image2D waveSim; -layout (rgba16f) uniform image2D waveSim2; +layout (rgba16f) uniform readonly image2D waveSim2; const ivec2 resolution = ivec2(workGroups.x * 32, workGroups.y * 32); diff --git a/shaders/dimensions/prepare2.csh b/shaders/dimensions/prepare2.csh index 235ed5a..1db090e 100644 --- a/shaders/dimensions/prepare2.csh +++ b/shaders/dimensions/prepare2.csh @@ -37,7 +37,7 @@ layout (local_size_x = 32, local_size_y = 32, local_size_z = 1) in; #endif -layout (rg16f) uniform image2D waveSim; +layout (rg16f) uniform readonly image2D waveSim; layout (rgba16f) uniform image2D waveSim2; const ivec2 resolution = ivec2(workGroups.x * 32, workGroups.y * 32); diff --git a/shaders/world1/gbuffers_entities.gsh b/shaders/world1/gbuffers_entities.gsh deleted file mode 100644 index 99faf7a..0000000 --- a/shaders/world1/gbuffers_entities.gsh +++ /dev/null @@ -1,8 +0,0 @@ -#version 430 compatibility - -#define OVERWORLD_SHADER - -#define WORLD -#define ENTITIES - -#include "/dimensions/all_solid.gsh" \ No newline at end of file