blob: 4d9bc358720614e334a884929508d902cdedcad9 [file] [log] [blame]
import './index.ts';
import './particles-player-sk-demo.css';
import { $$ } from 'common-sk/modules/dom';
import { ParticlesPlayerSk } from './particles-player-sk';
const player = $$<ParticlesPlayerSk>('particles-player-sk')!;
const nouniforms = {
width: 256,
height: 256,
body: {
Bindings: [],
Code: `
void spawn(inout Particle p) {
p.lifetime = 2 + rand(p.seed);
p.vel = p.dir * mix(50, 60, rand(p.seed));
}
void update(inout Particle p) {
p.scale = 0.5 + 1.5 * p.age;
float3 a0 = float3(0.098, 0.141, 0.784);
float3 a1 = float3(0.525, 0.886, 0.980);
float3 b0 = float3(0.376, 0.121, 0.705);
float3 b1 = float3(0.933, 0.227, 0.953);
p.color.rgb = mix(mix(a0, a1, p.age), mix(b0, b1, p.age), rand(p.seed));
}
`.split('\n'),
Drawable: {
Radius: 2,
Type: 'SkCircleDrawable',
},
EffectCode: `
void effectSpawn(inout Effect effect) {
effect.lifetime = 4;
effect.rate = 120;
effect.spin = 6;
}
`.split('\n'),
MaxCount: 800,
},
};
const uniforms = {
width: 256,
height: 256,
body: {
MaxCount: 800,
Drawable: {
Type: 'SkCircleDrawable',
Radius: 2,
},
EffectCode: `
uniform float slider_rate;
uniform float slider_spin;
void effectSpawn(inout Effect effect) {
effect.lifetime = 4;
}
void effectUpdate(inout Effect effect) {
effect.rate = 100 * slider_rate;
effect.spin = 10 * slider_spin;
}
`.split('\n'),
Code: `
uniform float3 slider_color;
void spawn(inout Particle p) {
p.lifetime = 2 + rand(p.seed);
p.vel = p.dir * mix(50, 60, rand(p.seed));
}
void update(inout Particle p) {
p.color.rgb = slider_color;
}
`.split('\n'),
Bindings: [],
},
};
player.initialize(uniforms).then(() => {
player.pause();
$$('#results')!.innerHTML = '<div id=loaded>Loaded.</div>';
});
$$('#pause')!.addEventListener('click', () => player.pause());
$$('#play')!.addEventListener('click', () => player.play());
$$('#reset')!.addEventListener('click', () => player.resetView());
$$('#restart')!.addEventListener('click', () => player.restartAnimation());
$$('#nouniforms')!.addEventListener('click', () => { player.initialize(nouniforms); });
$$('#uniforms')!.addEventListener('click', () => { player.initialize(uniforms); });