From 487dbd4f46c535a564c7c992517eb4c8ede2ef9d Mon Sep 17 00:00:00 2001 From: Jari Komppa Date: Tue, 8 Feb 2022 15:06:36 +0200 Subject: [PATCH] Stability fixes for sampler shaders Floor and 256->255 changes to coordinates. --- .../main/glsl/samples/450/stable_sampler_boxfilter.frag | 4 ++-- .../src/main/glsl/samples/450/stable_sampler_loop.frag | 4 ++-- .../src/main/glsl/samples/450/stable_sampler_minimal.frag | 2 +- shaders/src/main/glsl/samples/450/stable_sampler_mip.frag | 2 +- .../glsl/samples/450/stable_sampler_polar_simple.frag | 4 ++-- .../main/glsl/samples/450/stable_sampler_polar_warp.frag | 8 ++++---- .../src/main/glsl/samples/450/stable_sampler_reuse.frag | 4 ++-- .../src/main/glsl/samples/450/stable_sampler_trace.frag | 6 +++--- 8 files changed, 17 insertions(+), 17 deletions(-) diff --git a/shaders/src/main/glsl/samples/450/stable_sampler_boxfilter.frag b/shaders/src/main/glsl/samples/450/stable_sampler_boxfilter.frag index bf65499f6..045396297 100644 --- a/shaders/src/main/glsl/samples/450/stable_sampler_boxfilter.frag +++ b/shaders/src/main/glsl/samples/450/stable_sampler_boxfilter.frag @@ -44,8 +44,8 @@ const float weights[9] = float[9]( void main() { - vec2 coord = gl_FragCoord.xy * (1.0 / 256.0); - float uvstep = 1.0 / 256.0; + vec2 coord = floor(gl_FragCoord.xy) * (1.0 / 255.0); + float uvstep = 1.0 / 255.0; vec4 res = vec4(0); diff --git a/shaders/src/main/glsl/samples/450/stable_sampler_loop.frag b/shaders/src/main/glsl/samples/450/stable_sampler_loop.frag index 84e951b44..34336af1f 100644 --- a/shaders/src/main/glsl/samples/450/stable_sampler_loop.frag +++ b/shaders/src/main/glsl/samples/450/stable_sampler_loop.frag @@ -42,12 +42,12 @@ uniform sampler2D tex; void main() { int i = 0; - vec2 coord = gl_FragCoord.xy * (1.0 / 256.0); + vec2 coord = floor(gl_FragCoord.xy) * (1.0 / 255.0); vec4 texel = texture(tex, coord); while (texel.x + texel.y + texel.z > 1.0 && i < 16) { coord = texel.xz + texel.yy; - coord = floor(coord * 256.0) / 256.0; + coord = floor(coord * 255.0) / 255.0; texel = texture(tex, coord); i++; } diff --git a/shaders/src/main/glsl/samples/450/stable_sampler_minimal.frag b/shaders/src/main/glsl/samples/450/stable_sampler_minimal.frag index c10da7926..780983566 100644 --- a/shaders/src/main/glsl/samples/450/stable_sampler_minimal.frag +++ b/shaders/src/main/glsl/samples/450/stable_sampler_minimal.frag @@ -33,6 +33,6 @@ uniform sampler2D tex; void main() { - _GLF_color = texture(tex, gl_FragCoord.xy * (1.0 / 256.0)); + _GLF_color = texture(tex, floor(gl_FragCoord.xy) * (1.0 / 255.0)); } diff --git a/shaders/src/main/glsl/samples/450/stable_sampler_mip.frag b/shaders/src/main/glsl/samples/450/stable_sampler_mip.frag index 98d67542c..ddab10e45 100644 --- a/shaders/src/main/glsl/samples/450/stable_sampler_mip.frag +++ b/shaders/src/main/glsl/samples/450/stable_sampler_mip.frag @@ -37,7 +37,7 @@ uniform sampler2D tex; void main() { - vec2 coord = gl_FragCoord.xy * (1.0 / 256.0); + vec2 coord = floor(gl_FragCoord.xy) * (1.0 / 255.0); vec4 res = vec4(0.25); coord *= 2.0; int i = 0; diff --git a/shaders/src/main/glsl/samples/450/stable_sampler_polar_simple.frag b/shaders/src/main/glsl/samples/450/stable_sampler_polar_simple.frag index d54d9ad38..6449d2090 100644 --- a/shaders/src/main/glsl/samples/450/stable_sampler_polar_simple.frag +++ b/shaders/src/main/glsl/samples/450/stable_sampler_polar_simple.frag @@ -92,9 +92,9 @@ vec2 polarize(vec2 coord) void main() { - vec2 coord = gl_FragCoord.xy * (1.0 / 256.0); + vec2 coord = floor(gl_FragCoord.xy) * (1.0 / 255.0); coord = polarize(coord); - coord = floor(coord * 256.0) / 256.0; + coord = floor(coord * 255.0) / 255.0; _GLF_color = vec4(texture(tex, coord).xyz, 1.0); } diff --git a/shaders/src/main/glsl/samples/450/stable_sampler_polar_warp.frag b/shaders/src/main/glsl/samples/450/stable_sampler_polar_warp.frag index e446015cc..1d1bb261a 100644 --- a/shaders/src/main/glsl/samples/450/stable_sampler_polar_warp.frag +++ b/shaders/src/main/glsl/samples/450/stable_sampler_polar_warp.frag @@ -93,14 +93,14 @@ vec2 polarize(vec2 coord) void main() { - vec2 coord = gl_FragCoord.xy * (1.0 / 256.0); + vec2 coord = floor(gl_FragCoord.xy) * (1.0 / 255.0); - vec2 coord1 = polarize(coord + vec2(20.0 / 256.0, -80.0 / 256.0)); - vec2 coord2 = polarize(coord + vec2(-60.0 / 256.0, 40.0 / 256.0)); + vec2 coord1 = polarize(coord + vec2(20.0 / 255.0, -80.0 / 255.0)); + vec2 coord2 = polarize(coord + vec2(-60.0 / 255.0, 40.0 / 255.0)); vec2 coord3 = polarize(coord); coord = coord1 - coord2 + coord3; - coord = floor(coord * 256.0) / 256.0; + coord = floor(coord * 255.0) / 255.0; _GLF_color = vec4(texture(tex, coord).xyz, 1.0); } diff --git a/shaders/src/main/glsl/samples/450/stable_sampler_reuse.frag b/shaders/src/main/glsl/samples/450/stable_sampler_reuse.frag index 4a3af7fbd..d10cbf6ff 100644 --- a/shaders/src/main/glsl/samples/450/stable_sampler_reuse.frag +++ b/shaders/src/main/glsl/samples/450/stable_sampler_reuse.frag @@ -39,9 +39,9 @@ uniform sampler2D tex; void main() { - vec3 texel = texture(tex, gl_FragCoord.xy * (1.0 / 256.0)).xyz; + vec3 texel = texture(tex, floor(gl_FragCoord.xy) * (1.0 / 255.0)).xyz; vec2 reuse = (texel.xz + texel.yy) * 0.5 + vec2(0.25, 0.25); - reuse = floor(reuse * 256.0) / 256.0; + reuse = floor(reuse * 255.0) / 255.0; _GLF_color = texture(tex, reuse); } diff --git a/shaders/src/main/glsl/samples/450/stable_sampler_trace.frag b/shaders/src/main/glsl/samples/450/stable_sampler_trace.frag index abc14fbfa..a72d134cd 100644 --- a/shaders/src/main/glsl/samples/450/stable_sampler_trace.frag +++ b/shaders/src/main/glsl/samples/450/stable_sampler_trace.frag @@ -40,9 +40,9 @@ uniform sampler2D tex; void main() { int i = 0; - vec2 uvstep = vec2(1.0) * (1.0 / 256.0); - float slope = 2.0 / 256.0; - vec2 coord = gl_FragCoord.xy * (1.0 / 256.0); + vec2 uvstep = vec2(1.0) * (1.0 / 255.0); + float slope = 2.0 / 255.0; + vec2 coord = floor(gl_FragCoord.xy) * (1.0 / 255.0); float refh = texture(tex, coord).y; coord -= uvstep; refh += slope;