Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- varying vec2 v_vTexcoord;
- // Do not edit these uniforms
- uniform float time;
- uniform sampler2D paletteTexture;
- uniform vec2 paletteTexel;
- uniform vec2 textureTexel;
- uniform vec4 uv;
- // Editable uniforms
- uniform float index;
- uniform float colors;
- uniform float cycle;
- uniform vec2 scroll;
- uniform vec2 scale;
- uniform vec3 oscillateX;
- uniform vec3 oscillateY;
- uniform vec3 oscillateSplit;
- const float TWOPI = 6.28318530718;
- void main()
- {
- vec2 pos = v_vTexcoord;
- // Oscillate
- float moment = pos.y / textureTexel.y;
- // Horizontal
- pos.x += (oscillateX.x * textureTexel.x) * sin(TWOPI * (moment / oscillateX.y + time * oscillateX.z));
- // Split
- pos.x += (2. * floor(mod(moment, 2.0)) - 1.) * (oscillateSplit.x * textureTexel.x) * sin(TWOPI * (moment / oscillateSplit.y + time * oscillateSplit.z));
- // Vertical
- pos.y += (oscillateY.x * textureTexel.y) * sin(TWOPI * (moment / oscillateY.y + time * oscillateY.z));
- // Scroll
- pos *= scale;
- pos += scroll * textureTexel;
- // Wrap
- pos = vec2(mod(pos.x - uv.x, uv.z - uv.x) + uv.x, mod(pos.y - uv.y, uv.w - uv.y) + uv.y);
- // Palette
- vec4 color = texture2D(gm_BaseTexture, pos);
- float red = color.r * colors;
- red = mod(red + cycle, colors);
- vec2 palettePos = vec2((index + 0.5) * paletteTexel.x, (red + 0.5) * paletteTexel.y);
- // Render
- gl_FragColor = vec4(texture2D(paletteTexture, palettePos).rgb, color.a);
- }
Advertisement
Add Comment
Please, Sign In to add comment