| { |
| "MaxCount": 6000, |
| "Duration": 5, |
| "Rate": 2000, |
| "Drawable": { |
| "Type": "SkCircleDrawable", |
| "Radius": 2 |
| }, |
| "Code": [ |
| "// float rand; Every read returns a random float [0 .. 1)", |
| "layout(ctype=float) in uniform float dt;", |
| "layout(ctype=float) in uniform float effectAge;", |
| "", |
| "struct Particle {", |
| " float age;", |
| " float lifetime;", |
| " float2 pos;", |
| " float2 dir;", |
| " float scale;", |
| " float2 vel;", |
| " float spin;", |
| " float4 color;", |
| " float frame;", |
| "};", |
| "", |
| "void spawn(inout Particle p) {", |
| " p.lifetime = 2 + (rand * 2);", |
| " p.vel.x = (30 * rand) + 50;", |
| " p.vel.y = (20 * rand) - 10;", |
| "}", |
| "", |
| "void update(inout Particle p) {", |
| " p.color.r = p.age;", |
| " p.color.g = 1 - p.age;", |
| " float s1 = 0.5 + (1.5 * p.age);", |
| " float s2 = 1.0 + (-0.75 * p.age);", |
| " p.scale = s1 + (s2 - s1) * rand;", |
| " p.vel.y += 20.0 * dt;", |
| "}", |
| "" |
| ], |
| "Bindings": [] |
| } |