aboutsummaryrefslogtreecommitdiff
path: root/shaders/glsl330/cross_stitching.fs
diff options
context:
space:
mode:
Diffstat (limited to 'shaders/glsl330/cross_stitching.fs')
-rw-r--r--shaders/glsl330/cross_stitching.fs54
1 files changed, 54 insertions, 0 deletions
diff --git a/shaders/glsl330/cross_stitching.fs b/shaders/glsl330/cross_stitching.fs
new file mode 100644
index 00000000..dcb26e79
--- /dev/null
+++ b/shaders/glsl330/cross_stitching.fs
@@ -0,0 +1,54 @@
+#version 330
+
+in vec2 fragTexCoord;
+
+out vec4 fragColor;
+
+uniform sampler2D texture0;
+uniform vec4 fragTintColor;
+
+// NOTE: Add here your custom variables
+
+const float renderWidth = 1280.0;
+const float renderHeight = 720.0;
+
+float stitchingSize = 6.0;
+
+uniform int invert = 0;
+
+vec4 PostFX(sampler2D tex, vec2 uv)
+{
+ vec4 c = vec4(0.0);
+ float size = stitchingSize;
+ vec2 cPos = uv * vec2(renderWidth, renderHeight);
+ vec2 tlPos = floor(cPos / vec2(size, size));
+ tlPos *= size;
+
+ int remX = int(mod(cPos.x, size));
+ int remY = int(mod(cPos.y, size));
+
+ if (remX == 0 && remY == 0) tlPos = cPos;
+
+ vec2 blPos = tlPos;
+ blPos.y += (size - 1.0);
+
+ if ((remX == remY) || (((int(cPos.x) - int(blPos.x)) == (int(blPos.y) - int(cPos.y)))))
+ {
+ if (invert == 1) c = vec4(0.2, 0.15, 0.05, 1.0);
+ else c = texture(tex, tlPos * vec2(1.0/renderWidth, 1.0/renderHeight)) * 1.4;
+ }
+ else
+ {
+ if (invert == 1) c = texture(tex, tlPos * vec2(1.0/renderWidth, 1.0/renderHeight)) * 1.4;
+ else c = vec4(0.0, 0.0, 0.0, 1.0);
+ }
+
+ return c;
+}
+
+void main(void)
+{
+ vec3 tc = PostFX(texture0, fragTexCoord).rgb;
+
+ fragColor = vec4(tc, 1.0);
+} \ No newline at end of file