diff --git a/examples/_site/examples.json b/examples/_site/examples.json index dd36c136..8a68d60f 100644 --- a/examples/_site/examples.json +++ b/examples/_site/examples.json @@ -194,6 +194,10 @@ "file": "lightbeams.js", "title": "lightbeams" }, + { + "file": "marble.js", + "title": "marble" + }, { "file": "plasma.js", "title": "plasma" diff --git a/examples/filters/marble.js b/examples/filters/marble.js new file mode 100644 index 00000000..723421a6 --- /dev/null +++ b/examples/filters/marble.js @@ -0,0 +1,34 @@ + +var game = new Phaser.Game(800, 600, Phaser.WEBGL, 'phaser-example', { preload: preload, create: create, update: update }); + +var background; +var filter; + +function preload() { + + game.load.image('phaser', 'assets/sprites/phaser2.png'); + game.load.script('filter', '../filters/Marble.js'); + +} + +function create() { + + var logo = game.add.sprite(game.world.centerX, game.world.centerY, 'phaser'); + logo.anchor.setTo(0.5, 0.5); + + background = game.add.sprite(0, 0); + background.width = 800; + background.height = 600; + + filter = game.add.filter('Marble', 800, 600); + //filter.alpha = 0.0; + + background.filters = [filter]; + +} + +function update() { + + filter.update(); + +} diff --git a/filters/CausticLight.js b/filters/CausticLight.js new file mode 100644 index 00000000..d909ab39 --- /dev/null +++ b/filters/CausticLight.js @@ -0,0 +1,61 @@ +/** +* A sample demonstrating how to create new Phaser Filters. +*/ +Phaser.Filter.SampleFilter = function (game) { + + Phaser.Filter.call(this, game); + + this.uniforms.divisor = { type: '1f', value: 0.5 }; + + // The fragment shader source + this.fragmentSrc = [ + + "precision mediump float;", + "uniform vec3 resolution;", + "uniform float time;", + + "const int complexity = 40; // More points of color.", + "const float mouse_factor = 25.0; // Makes it more/less jumpy.", + "const float mouse_offset = 5.0; // Drives complexity in the amount of curls/cuves. Zero is a single whirlpool.", + "const float fluid_speed = 45.0; // Drives speed, higher number will make it slower.", + "const float color_intensity = 0.30;", + + "const float Pi = 3.14159;", + + "float sinApprox(float x) {", + "x = Pi + (2.0 * Pi) * floor(x / (2.0 * Pi)) - x;", + "return (4.0 / Pi) * x - (4.0 / Pi / Pi) * x * abs(x);", + "}", + + "float cosApprox(float x) {", + "return sinApprox(x + 0.5 * Pi);", + "}", + + "void main()", + "{", + "vec2 p=(2.0*gl_FragCoord.xy-resolution)/max(resolution.x,resolution.y);", + "for(int i=1;i