UNPKG

phaser

Version:

A fast, free and fun HTML5 Game Framework for Desktop and Mobile web browsers from the team at Phaser Studio Inc.

53 lines (52 loc) 1.77 kB
module.exports = [ '#version 100', '#pragma phaserTemplate(shaderName)', '#ifdef GL_FRAGMENT_PRECISION_HIGH', 'precision highp float;', '#else', 'precision mediump float;', '#endif', 'uniform vec2 uOffset;', 'uniform vec4 uColorStart;', 'uniform vec4 uColorEnd;', 'uniform float uPower;', 'uniform int uMode;', 'varying vec2 outTexCoord;', 'float trig(vec2 p)', '{', ' return fract(43757.5453*sin(dot(p, vec2(12.9898,78.233))));', '}', 'void main ()', '{', ' float value = pow(trig(outTexCoord + uOffset), uPower);', ' if (uMode == 0)', ' {', ' vec4 color = mix(uColorStart, uColorEnd, value);', ' color.rgb *= color.a;', ' gl_FragColor = color;', ' }', ' else if (uMode == 1)', ' {', ' float valueR = pow(trig(outTexCoord + uOffset + 32.1), uPower);', ' float valueG = pow(trig(outTexCoord + uOffset + 11.1), uPower);', ' float valueB = pow(trig(outTexCoord + uOffset + 23.4), uPower);', ' vec4 color = vec4(valueR, valueG, valueB, 1.);', ' color *= mix(uColorStart, uColorEnd, value);', ' color.rgb *= color.a;', ' gl_FragColor = color;', ' }', ' else if (uMode == 2)', ' {', ' float valueAngle = pow(trig(outTexCoord + uOffset), uPower) * 3.141592;', ' float x = value * cos(valueAngle);', ' float y = value * sin(valueAngle);', ' vec4 color = vec4(', ' x,', ' y,', ' sqrt(1. - x * x - y * y),', ' 1.0', ' );', ' gl_FragColor = color * 0.5 + 0.5;', ' }', '}', ].join('\n');