topical media & game development

talk show tell print

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



  

author: felixturner / airtight.cc/ Mirror Shader Copies half the input to the other half side: side of input to mirror (0 = left, 1 = right, 2 = top, 3 = bottom)

  
  
  THREE.MirrorShader = {
  
          uniforms: {
  
                  "tDiffuse": { type: "t", value: null },
                  "side":     { type: "i", value: 1 }
  
          },
  
          vertexShader: [
  
                  "varying vec2 vUv;",
  
                  "void main() {",
  
                          "vUv = uv;",
                          "gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );",
  
                  "}"
  
          ].join("\n"),
  
          fragmentShader: [
  
                  "uniform sampler2D tDiffuse;",
                  "uniform int side;",
                  
                  "varying vec2 vUv;",
  
                  "void main() {",
  
                          "vec2 p = vUv;",
                          "if (side == 0){",
                                  "if (p.x > 0.5) p.x = 1.0 - p.x;",
                          "}else if (side == 1){",
                                  "if (p.x < 0.5) p.x = 1.0 - p.x;",
                          "}else if (side == 2){",
                                  "if (p.y < 0.5) p.y = 1.0 - p.y;",
                          "}else if (side == 3){",
                                  "if (p.y > 0.5) p.y = 1.0 - p.y;",
                          "} ",
                          "vec4 color = texture2D(tDiffuse, p);",
                          "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.