topical media & game development

talk show tell print

mobile-query-three-vendor-three.js-shaders-KaleidoShader.js / js



  

author: felixturner / airtight.cc/ 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

  
  
  THREE.KaleidoShader = {
  
          uniforms: {
  
                  "tDiffuse": { type: "t", value: null },
                  "sides":    { type: "f", value: 6.0 },
                  "angle":    { type: "f", value: 0.0 }
  
          },
  
          vertexShader: [
  
                  "varying vec2 vUv;",
  
                  "void main() {",
  
                          "vUv = uv;",
                          "gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );",
  
                  "}"
  
          ].join("\n"),
  
          fragmentShader: [
  
                  "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;",
  
                  "}"
  
          ].join("\n")
  
  };
  


(C) Æliens 04/09/2009

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.