| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 | ( function () {	/** * Kaleidoscope Shader * Radial reflection around center point * Ported from: http://pixelshaders.com/editor/ * by Toby Schachman / http://tobyschachman.com/ * * sides: number of reflections * angle: initial angle in radians */	const KaleidoShader = {		uniforms: {			'tDiffuse': {				value: null			},			'sides': {				value: 6.0			},			'angle': {				value: 0.0			}		},		vertexShader:  /* glsl */  `		varying vec2 vUv;		void main() {			vUv = uv;			gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );		}`,		fragmentShader:  /* glsl */  `		uniform sampler2D tDiffuse;		uniform float sides;		uniform float angle;		varying vec2 vUv;		void main() {			vec2 p = vUv - 0.5;			float r = length(p);			float a = atan(p.y, p.x) + angle;			float tau = 2. * 3.1416 ;			a = mod(a, tau/sides);			a = abs(a - tau/sides/2.) ;			p = r * vec2(cos(a), sin(a));			vec4 color = texture2D(tDiffuse, p + 0.5);			gl_FragColor = color;		}`	};	THREE.KaleidoShader = KaleidoShader;} )();
 |