skia2/resources/particles/confetti.json
Brian Osman 95c26efc90 Pure SkSL RNG for particles
Change-Id: I2cb6255a553852a292427d6dc9ef8c5ed7f8286d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/252926
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Mike Reed <reed@google.com>
2020-04-10 17:20:07 +00:00

42 lines
1.2 KiB
JSON

{
"MaxCount": 200,
"Drawable": {
"Type": "SkCircleDrawable",
"Radius": 8
},
"EffectCode": [
"void effectSpawn(inout Effect effect) {",
" effect.lifetime = 2;",
"}",
"",
"void effectUpdate(inout Effect effect) {",
" if (effect.age < 0.25 || effect.age > 0.75) { effect.rate = 0; }",
" else { effect.rate = 200; }",
"}",
""
],
"Code": [
"void spawn(inout Particle p) {",
" float3 colors[4];",
" colors[0] = float3(0.87, 0.24, 0.11);",
" colors[1] = float3(1, 0.9, 0.2);",
" colors[2] = float3(0.44, 0.73, 0.24);",
" colors[3] = float3(0.38, 0.54, 0.95);",
" int idx = int(rand(p.seed) * 4);",
" p.color.rgb = colors[idx];",
"",
" p.lifetime = (1 - effect.age) * effect.lifetime;",
" p.scale = mix(0.6, 1, rand(p.seed));",
"}",
"",
"void update(inout Particle p) {",
" p.color.a = 1 - p.age;",
"",
" float a = radians(rand(p.seed) * 360);",
" float invAge = 1 - p.age;",
" p.vel = float2(cos(a), sin(a)) * mix(250, 550, rand(p.seed)) * invAge * invAge;",
"}",
""
],
"Bindings": []
}