SuperTuxKart 1.5 upstream source (from official release tarball)
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
vec2 getDisplaceShift(float horiz, float vert)
|
||||
{
|
||||
vec2 offset = vec2(horiz, vert);
|
||||
offset = 2.0 * offset - 1.0;
|
||||
|
||||
vec4 shiftval;
|
||||
shiftval.r = step(offset.x, 0.0) * -offset.x;
|
||||
shiftval.g = step(0.0, offset.x) * offset.x;
|
||||
shiftval.b = step(offset.y, 0.0) * -offset.y;
|
||||
shiftval.a = step(0.0, offset.y) * offset.y;
|
||||
|
||||
vec2 shift;
|
||||
shift.x = -shiftval.x + shiftval.y;
|
||||
shift.y = -shiftval.z + shiftval.w;
|
||||
return shift;
|
||||
}
|
||||
|
||||
ivec2 getDisplaceUV(vec2 shift, vec4 viewport, sampler2D displace_mask)
|
||||
{
|
||||
ivec2 uv = ivec2(gl_FragCoord.xy);
|
||||
shift *= 0.02 * viewport.zw;
|
||||
ivec2 lo = ivec2(viewport.xy);
|
||||
ivec2 hi = ivec2(viewport.xy + viewport.zw);
|
||||
ivec2 suv = clamp(ivec2(gl_FragCoord.xy) + ivec2(shift), lo, hi);
|
||||
vec2 new_mask = texelFetch(displace_mask, suv, 0).xy;
|
||||
if (!(new_mask.x == 0.0 && new_mask.y == 0.0))
|
||||
uv = suv;
|
||||
return uv;
|
||||
}
|
||||
Reference in New Issue
Block a user