1{ 2 "MaxCount": 4096, 3 "Duration": 1, 4 "Rate": 1000, 5 "Drawable": { 6 "Type": "SkCircleDrawable", 7 "Radius": 1 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 = mix(1, 3, rand);", 28 " float a = radians(mix(250, 290, rand));", 29 " float s = mix(10, 30, rand);", 30 " p.vel.x = cos(a) * s;", 31 " p.vel.y = sin(a) * s;", 32 " p.pos = text(rand).xy;", 33 "}", 34 "", 35 "void update(inout Particle p) {", 36 " float4 startColor = float4(1, 0.196, 0.078, 1);", 37 " float4 endColor = float4(1, 0.784, 0.078, 1);", 38 " p.color = mix(startColor, endColor, p.age);", 39 "}", 40 "" 41 ], 42 "Bindings": [ 43 { 44 "Type": "SkTextBinding", 45 "Name": "text", 46 "Text": "SKIA", 47 "FontSize": 96 48 } 49 ] 50}