• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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}