diff --git a/binaries/data/mods/public/shaders/arb/model_common.fp b/binaries/data/mods/public/shaders/arb/model_common.fp index 37a3d99b39..ff866554eb 100644 --- a/binaries/data/mods/public/shaders/arb/model_common.fp +++ b/binaries/data/mods/public/shaders/arb/model_common.fp @@ -94,16 +94,10 @@ TEX tex, v_tex, texture[0], 2D; FRC offset.xy, offset; ADD size.xy, offset, 1.0; SUB size.zw, 2.0, offset.xyxy; - RCP weight.x, size.x; - RCP weight.y, size.y; - RCP weight.z, size.z; - RCP weight.w, size.w; - SUB weight.xy, 2.0, weight; - SUB weight.zw, weight, 1.0; - SUB offset.xy, v_shadow, offset; + MAD offset.xy, -0.5, offset, v_shadow; MOV offset.z, biasedShdw.z; - ADD weight, weight, offset.xyxy; + ADD weight, { 1.0, 1.0, -0.5, -0.5 }, offset.xyxy; MUL weight, weight, shadowScale.zwzw; MOV offset.xy, weight.zwww; diff --git a/binaries/data/mods/public/shaders/arb/terrain_common.fp b/binaries/data/mods/public/shaders/arb/terrain_common.fp index 0a14b5ce27..0a152d684b 100644 --- a/binaries/data/mods/public/shaders/arb/terrain_common.fp +++ b/binaries/data/mods/public/shaders/arb/terrain_common.fp @@ -48,16 +48,10 @@ TEX color, fragment.texcoord[0], texture[0], 2D; FRC offset.xy, offset; ADD size.xy, offset, 1.0; SUB size.zw, 2.0, offset.xyxy; - RCP weight.x, size.x; - RCP weight.y, size.y; - RCP weight.z, size.z; - RCP weight.w, size.w; - SUB weight.xy, 2.0, weight; - SUB weight.zw, weight, 1.0; - SUB offset.xy, fragment.texcoord[2], offset; - MOV offset.z, biasedShdw; - ADD weight, weight, offset.xyxy; + MAD offset.xy, -0.5, offset, fragment.texcoord[2]; + MOV offset.z, biasedShdw.z; + ADD weight, { 1.0, 1.0, -0.5, -0.5 }, offset.xyxy; MUL weight, weight, shadowScale.zwzw; MOV offset.xy, weight.zwww; diff --git a/binaries/data/mods/public/shaders/glsl/model_common.fs b/binaries/data/mods/public/shaders/glsl/model_common.fs index 4e3bc68067..760527430d 100644 --- a/binaries/data/mods/public/shaders/glsl/model_common.fs +++ b/binaries/data/mods/public/shaders/glsl/model_common.fs @@ -74,7 +74,7 @@ float get_shadow() #if USE_SHADOW_PCF vec2 offset = fract(v_shadow.xy - 0.5); vec4 size = vec4(offset + 1.0, 2.0 - offset); - vec4 weight = (vec4(2.0 - 1.0 / size.xy, 1.0 / size.zw - 1.0) + (v_shadow.xy - offset).xyxy) * shadowScale.zwzw; + vec4 weight = (vec4(1.0, 1.0, -0.5, -0.5) + (v_shadow.xy - 0.5*offset).xyxy) * shadowScale.zwzw; return (1.0/9.0)*dot(size.zxzx*size.wwyy, vec4(shadow2D(shadowTex, vec3(weight.zw, biasedShdwZ)).r, shadow2D(shadowTex, vec3(weight.xw, biasedShdwZ)).r, diff --git a/binaries/data/mods/public/shaders/glsl/model_water.fs b/binaries/data/mods/public/shaders/glsl/model_water.fs index 18e537ca9c..26906e2465 100644 --- a/binaries/data/mods/public/shaders/glsl/model_water.fs +++ b/binaries/data/mods/public/shaders/glsl/model_water.fs @@ -61,7 +61,7 @@ float get_shadow(vec4 coords) #if USE_SHADOW_PCF vec2 offset = fract(coords.xy - 0.5); vec4 size = vec4(offset + 1.0, 2.0 - offset); - vec4 weight = (vec4(2.0 - 1.0 / size.xy, 1.0 / size.zw - 1.0) + (coords.xy - offset).xyxy) * shadowScale.zwzw; + vec4 weight = (vec4(1.0, 1.0, -0.5, -0.5) + (coords.xy - 0.5*offset).xyxy) * shadowScale.zwzw; return (1.0/9.0)*dot(size.zxzx*size.wwyy, vec4(shadow2D(shadowTex, vec3(weight.zw, coords.z)).r, shadow2D(shadowTex, vec3(weight.xw, coords.z)).r, diff --git a/binaries/data/mods/public/shaders/glsl/model_waterfall.fs b/binaries/data/mods/public/shaders/glsl/model_waterfall.fs index 499b8fe59e..7e415f3573 100644 --- a/binaries/data/mods/public/shaders/glsl/model_waterfall.fs +++ b/binaries/data/mods/public/shaders/glsl/model_waterfall.fs @@ -41,7 +41,7 @@ float get_shadow() #if USE_SHADOW_PCF vec2 offset = fract(v_shadow.xy - 0.5); vec4 size = vec4(offset + 1.0, 2.0 - offset); - vec4 weight = (vec4(2.0 - 1.0 / size.xy, 1.0 / size.zw - 1.0) + (v_shadow.xy - offset).xyxy) * shadowScale.zwzw; + vec4 weight = (vec4(1.0, 1.0, -0.5, -0.5) + (v_shadow.xy - 0.5*offset).xyxy) * shadowScale.zwzw; return (1.0/9.0)*dot(size.zxzx*size.wwyy, vec4(shadow2D(shadowTex, vec3(weight.zw, v_shadow.z)).r, shadow2D(shadowTex, vec3(weight.xw, v_shadow.z)).r, diff --git a/binaries/data/mods/public/shaders/glsl/terrain_common.fs b/binaries/data/mods/public/shaders/glsl/terrain_common.fs index 523e544049..804de0081a 100644 --- a/binaries/data/mods/public/shaders/glsl/terrain_common.fs +++ b/binaries/data/mods/public/shaders/glsl/terrain_common.fs @@ -76,7 +76,7 @@ float get_shadow() #if USE_SHADOW_PCF vec2 offset = fract(v_shadow.xy - 0.5); vec4 size = vec4(offset + 1.0, 2.0 - offset); - vec4 weight = (vec4(2.0 - 1.0 / size.xy, 1.0 / size.zw - 1.0) + (v_shadow.xy - offset).xyxy) * shadowScale.zwzw; + vec4 weight = (vec4(1.0, 1.0, -0.5, -0.5) + (v_shadow.xy - 0.5*offset).xyxy) * shadowScale.zwzw; return (1.0/9.0)*dot(size.zxzx*size.wwyy, vec4(shadow2D(shadowTex, vec3(weight.zw, biasedShdwZ)).r, shadow2D(shadowTex, vec3(weight.xw, biasedShdwZ)).r, diff --git a/binaries/data/mods/public/shaders/glsl/water_high.fs b/binaries/data/mods/public/shaders/glsl/water_high.fs index 79d1019090..22efca935a 100644 --- a/binaries/data/mods/public/shaders/glsl/water_high.fs +++ b/binaries/data/mods/public/shaders/glsl/water_high.fs @@ -58,7 +58,7 @@ uniform sampler2D normalMap2; #if USE_SHADOW_PCF vec2 offset = fract(coords.xy - 0.5); vec4 size = vec4(offset + 1.0, 2.0 - offset); - vec4 weight = (vec4(2.0 - 1.0 / size.xy, 1.0 / size.zw - 1.0) + (coords.xy - offset).xyxy) * shadowScale.zwzw; + vec4 weight = (vec4(1.0, 1.0, -0.5, -0.5) + (coords.xy - 0.5*offset).xyxy) * shadowScale.zwzw; return (1.0/9.0)*dot(size.zxzx*size.wwyy, vec4(shadow2D(shadowTex, vec3(weight.zw, coords.z)).r, shadow2D(shadowTex, vec3(weight.xw, coords.z)).r,