@petkoneo/phaser3-rex-plugins
Version:
43 lines (36 loc) • 1.07 kB
JavaScript
// reference : https://www.geeks3d.com/20110408/cross-stitching-post-processing-shader-glsl-filter-geexlab-pixel-bender/
const frag = `\
precision highmedp float;
// Scene buffer
uniform sampler2D uMainSampler;
varying vec2 outTexCoord;
// Effect parameters
uniform vec2 texSize;
uniform vec2 center;
uniform float waveRadius;
uniform float waveHalfWidth; // 10.0
uniform float powBaseScale; // 0.8
uniform float powExponent; // 0.1
void main (void) {
if (waveHalfWidth > 0.0) {
vec2 tc = outTexCoord * texSize;
tc -= center;
float diff = length(tc) - waveRadius;
if ((diff <= waveHalfWidth) && (diff >= -waveHalfWidth)) {
diff /= max(texSize.x, texSize.y);
float powDiff = 1.0 - pow(abs(diff*powBaseScale), powExponent);
tc += texSize * diff * powDiff;
}
tc += center;
gl_FragColor = texture2D(uMainSampler, tc / texSize);
} else {
gl_FragColor = texture2D(uMainSampler, outTexCoord);
}
}
`;
export default frag;