// Copyright 2006-2010 (C) - Frictional Games // // This file is part of HPL1 Engine // // For conditions of distribution and use, see copyright notice in LICENSE-shaders // /////////////////////////////////////////////////////// /// REFRACTION SPECIAL FRAGMENT PROGRAM ///////////////// /////////////////////////////////////////////////////// in vec2 vUv; //in object space in vec4 vColor; OUTPUT uniform sampler2DRect tex0; //screenMap uniform sampler2D tex1; //refractMap uniform sampler2D tex2; //alphaMap uniform vec2 screenSize; uniform float t; uniform float scale; void main() { float alpha = texture(tex2, vUv).x; vec2 uv2 = (gl_FragCoord.xy / screenSize); uv2.x += sin(t + uv2.y*10) * 0.001 * scale; uv2.y += sin(t + uv2.x*10) * 0.001 * scale; vec3 offset = vec3(((texture(tex1, uv2)*2.0) - vec4(1.0)) * alpha * vColor.w); outColor.xyz = (texture2DRect(tex0,gl_FragCoord.xy - offset.xy*scale)).xyz; }