blob: f495d1958082d109450369f111857a4cc5921d19 [file] [log] [blame]
Brian Osman7c979f52019-02-12 13:27:51 -05001{
2 "MaxCount": 4096,
Brian Osman8b6283f2019-02-14 16:55:21 -05003 "Duration": 1,
Brian Osman7c979f52019-02-12 13:27:51 -05004 "Rate": 90,
Brian Osman543d2e22019-02-15 14:29:38 -05005 "Drawable": {
6 "Type": "SkCircleDrawable",
7 "Radius": 2
Brian Osman7c979f52019-02-12 13:27:51 -05008 },
Brian Osmand6108ad2019-07-25 16:27:35 -04009 "Spawn": [
10 "",
11 "// float rand; Every read returns a random float [0 .. 1)",
12 "layout(ctype=float) in uniform float dt;",
13 "layout(ctype=float) in uniform float effectAge;",
14 "",
15 "struct Particle {",
16 " float age;",
17 " float lifetime;",
18 " float2 pos;",
19 " float2 dir;",
20 " float scale;",
21 " float2 vel;",
22 " float spin;",
23 " float4 color;",
24 " float frame;",
25 "};",
26 "",
27 "float2 circle() {",
28 " float x;",
29 " float y;",
30 " do {",
31 " x = rand * 2 - 1;",
32 " y = rand * 2 - 1;",
33 " } while (x*x + y*y > 1);",
34 " return float2(x, y);",
35 "}",
36 "",
37 "void main(inout Particle p) {",
38 " p.lifetime = 30;",
39 " p.pos = circle() * 40;",
40 "}",
41 ""
42 ],
43 "Update": [
44 "",
45 "// float rand; Every read returns a random float [0 .. 1)",
46 "layout(ctype=float) in uniform float dt;",
47 "layout(ctype=float) in uniform float effectAge;",
48 "",
49 "struct Particle {",
50 " float age;",
51 " float lifetime;",
52 " float2 pos;",
53 " float2 dir;",
54 " float scale;",
55 " float2 vel;",
56 " float spin;",
57 " float4 color;",
58 " float frame;",
59 "};",
60 "",
61 "void main(inout Particle p) {",
62 " p.vel += normalize(p.pos) * dt * 10;",
63 " p.scale = mix(0.25, 3, p.age);",
64 "}",
65 ""
66 ],
Brian Osmanfe491632019-07-25 15:14:50 -040067 "Bindings": []
Brian Osman7c979f52019-02-12 13:27:51 -050068}