1{ 2 "MaxCount": 800, 3 "Duration": 4, 4 "Rate": 120, 5 "Drawable": { 6 "Type": "SkCircleDrawable", 7 "Radius": 2 8 }, 9 "Code": [ 10 "// float rand; Every read returns a random float [0 .. 1)", 11 "layout(ctype=float) in uniform float dt;", 12 "layout(ctype=float) in uniform float effectAge;", 13 "", 14 "struct Particle {", 15 " float age;", 16 " float lifetime;", 17 " float2 pos;", 18 " float2 dir;", 19 " float scale;", 20 " float2 vel;", 21 " float spin;", 22 " float4 color;", 23 " float frame;", 24 "};", 25 "", 26 "void spawn(inout Particle p) {", 27 " p.lifetime = 2 + rand;", 28 " float a = radians(effectAge * 1080);", 29 " float s = 50 + rand * 10;", 30 " p.vel.x = cos(a) * s;", 31 " p.vel.y = sin(a) * s;", 32 "}", 33 "", 34 "void update(inout Particle p) {", 35 " p.scale = 0.5 + 1.5 * p.age;", 36 " float3 a0 = float3(0.098, 0.141, 0.784);", 37 " float3 a1 = float3(0.525, 0.886, 0.980);", 38 " float3 b0 = float3(0.376, 0.121, 0.705);", 39 " float3 b1 = float3(0.933, 0.227, 0.953);", 40 " p.color.rgb = mix(mix(a0, a1, p.age), mix(b0, b1, p.age), rand);", 41 "}", 42 "" 43 ], 44 "Bindings": [] 45}