{ "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": [] }