uniform vec3 dataResolution;
uniform vec3 dataSize;
uniform float cosine;
uniform float sine;
vec4 getSample(vec3 xyz);
vec4 getFramesSample(vec3 xyz) {
vec2 pos = xyz.xy * dataResolution.xy - .5;
pos = ((pos * dataSize.xy) * mat2(cosine, sine, -sine, cosine) * .999) / dataSize.xy;
xyz.xy = (pos + .5) * dataSize.xy;
vec4 c = getSample(xyz + vec3( 0.0, 0.0, 1.0));
vec3 t = getSample(xyz + vec3( 0.0, 1.5, 0.0)).xyz;
vec3 b = getSample(xyz + vec3( 0.0,-1.5, 0.0)).xyz;
vec3 l = getSample(xyz + vec3(-1.5, 0.0, 0.0)).xyz;
vec3 r = getSample(xyz + vec3( 1.5, 0.0, 0.0)).xyz;
return vec4((t + b + l + r) / 2.0 - c.xyz, c.w);
}