Skip to content

Instantly share code, notes, and snippets.

@rasteron
Created August 22, 2015 00:02
Show Gist options
  • Save rasteron/ef9df70fafc5aa2b1945 to your computer and use it in GitHub Desktop.
Save rasteron/ef9df70fafc5aa2b1945 to your computer and use it in GitHub Desktop.
#include "Uniforms.glsl"
#include "Samplers.glsl"
#include "Transform.glsl"
#include "ScreenPos.glsl"
varying vec2 vScreenPos;
uniform float rt_w;
uniform float rt_h;
uniform float stitching_size = 8.0;
uniform int invert = 1;
void VS()
{
mat4 modelMatrix = iModelMatrix;
vec3 worldPos = GetWorldPos(modelMatrix);
gl_Position = GetClipPos(worldPos);
vScreenPos = GetScreenPosPreDiv(gl_Position);
}
vec4 PostFX(sampler2D tex, vec2 uv)
{
float rt_w = 1024.0;
float rt_h = 768.0;
vec4 c = vec4(0.0);
float size = stitching_size;
vec2 cPos = uv * vec2(rt_w, rt_h);
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/rt_w, 1.0/rt_h)) * 1.4;
}
else
{
if (invert == 1)
c = texture2D(tex, tlPos * vec2(1.0/rt_w, 1.0/rt_h)) * 1.4;
else
c = vec4(0.0, 0.0, 0.0, 1.0);
}
return c;
}
void PS()
{
vec2 uv = vScreenPos.xy;
gl_FragColor = PostFX(sDiffMap, uv);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment