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
JavaScript
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');