From b1a90a7f915e7779aad975a70b503788b0a1b228 Mon Sep 17 00:00:00 2001 From: raysan5 Date: Wed, 2 Sep 2015 02:44:16 +0200 Subject: Added some useful postprocessing shaders Shaders come in two flavours: - shaders/gl330: OpenGL 3.3+ (Windows, Linux, OSX) - shaders/gles100: OpenGL ES 2.0 (Android, RPI, HTML5) --- shaders/gl330/cross_stitching.fs | 54 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 shaders/gl330/cross_stitching.fs (limited to 'shaders/gl330/cross_stitching.fs') diff --git a/shaders/gl330/cross_stitching.fs b/shaders/gl330/cross_stitching.fs new file mode 100644 index 00000000..041bf1dc --- /dev/null +++ b/shaders/gl330/cross_stitching.fs @@ -0,0 +1,54 @@ +#version 330 + +in vec2 fragTexCoord; + +out vec4 fragColor; + +uniform sampler2D texture0; +uniform vec4 tintColor; + +// NOTE: Add here your custom variables + +const float renderWidth = 1280; +const float renderHeight = 720; + +float stitchingSize = 6.0f; + +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 = texture2D(tex, tlPos * vec2(1.0/renderWidth, 1.0/renderHeight)) * 1.4; + } + else + { + if (invert == 1) c = texture2D(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 -- cgit v1.2.3