Engine core: Timeline (fixed dt, audio-mastered in realtime), seeded Rng, Renderer, Layer/ShaderLayer/SceneLayer, Compositor with blend modes, feedback and post chain. Shader scenes are compiled against a fixed uniform contract and define only `vec4 scene(vec2 uv, vec2 p)`, so adding a scene costs a shader plus a params block. Deep Nebula ported from party-stage as the first one. Gate passes, 7/7 in checks.html: - 300 frames rendered twice are bit-identical - a fresh Engine reproduces the same frames - simulated dropped frames change nothing (proves dt is fixed) - seek matches sequential playback - 320x180 vs 1280x720 agree within 0.010 (limit 0.06) - seeded rng reproducible, forked streams independent - compositor reset clears feedback history Static gates: no wall-clock or unseeded randomness in deterministic directories; scene schemas and shader sources agree in both directions. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
21 lines
451 B
JSON
21 lines
451 B
JSON
{
|
|
"name": "flow-state",
|
|
"version": "1.0.0",
|
|
"description": "Ambient/EDM music video generator with a deterministic render core",
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"build": "vite build",
|
|
"preview": "vite preview",
|
|
"lint:scenes": "node tools/lint-scenes.js",
|
|
"test": "node --test test/"
|
|
},
|
|
"license": "ISC",
|
|
"devDependencies": {
|
|
"vite": "^7.2.2"
|
|
},
|
|
"dependencies": {
|
|
"three": "^0.181.1"
|
|
}
|
|
}
|