# ═══════════════════════════════════════════════════════════════════ # Procedural Cast Smoke — declarative project document # ═══════════════════════════════════════════════════════════════════ # Mirrors tv/procedural_cast_smoke.py as data. Renders bit-identical # clean master + multiple variant outputs from one invocation. # # Usage: # python -m tv.studio.render_project tv/studio/projects/procedural_cast_smoke.project.yaml # ═══════════════════════════════════════════════════════════════════ project: title: Procedural Cast Smoke deck: Re-rendering the newsroom with sprites that no AI ever drew. kicker: DAILY SPORE REPORT . PROCEDURAL CAST PROOF credit: A PROMETHEUS7 RESEARCH INSTITUTE TRANSMISSION # Cast roster — references tv/characters/{id}.yaml cast: - id: editor_prime - id: spore_oracle - id: reporter_field - id: reporter_tech # Timeline of beats — rendered in order segments: - type: line speaker: editor_prime emotion: stern act_break: true act_title: The Cast Is Now Ours text: |- Tonight we open with an internal note. The four reporters you are about to see were redrawn this afternoon. Not by us. Not by an external image model. By the program itself, from a parameter file. - type: line speaker: spore_oracle emotion: calm text: |- The sprite you see is the same shape. The provenance is different. Every pixel is now traceable to a number we wrote down. - type: line speaker: reporter_field emotion: alert walk_before: e walk_duration_s: 4.0 text: |- From the field. The walk-cycle path now runs on procedural sprites. If you can see me move, the loop closed. - type: line speaker: reporter_tech emotion: neutral text: |- The fit distance landed between five and six and a half. We have axes left to add. The pipeline, however, is no longer rented. - type: line speaker: editor_prime emotion: approving text: |- Filed. We will iterate the resemblance. The substrate is in our hands. # Variants — each renders a separate MP4. Empty effects = clean master. variants: - id: clean effects: [] output: "{slug}_clean.mp4" - id: brainrot effects: - name: brainrot_v5 intensity: 1.0 enable_premium_polish: false output: "{slug}_brainrot.mp4" - id: brainrot_max effects: - name: brainrot_v5 intensity: 1.5 enable_premium_polish: false output: "{slug}_brainrot_max.mp4" - id: brainrot_premium effects: - name: brainrot_v5 intensity: 1.25 enable_premium_polish: true output: "{slug}_brainrot_premium.mp4" output: fps: 24 resolution: [1280, 720] output_dir: tv/output