oneshotlm
Compare all models on this prompt →

Flow-field particles · gemma-4-31b-it

Using the pre-provided p5.min.js (global p5, instance or global mode), create a full-screen flow-field particle animation: thousands of particles advected by Perlin-noise vectors, leaving fading trails, with colors shifting over time.

⛨ sandboxed Open in new tab ↗
transcript · 4 messages
user

Using the pre-provided p5.min.js (global p5, instance or global mode), create a full-screen flow-field particle animation: thousands of particles advected by Perlin-noise vectors, leaving fading trails, with colors shifting over time.

assistant
thinking
The objective is to create a full-screen flow-field particle animation using `p5.js`.
The app must be a single `index.html` file.
`p5.min.js` is already provided in the current directory.
No external resources/CDNs.

    *   Full-screen canvas.
    *   Thousands of particles.
    *   Particles advected by a Perlin noise flow field.
    *   Fading trails (achieved by drawing a semi-transparent background every frame).
    *   Colors shifting over time.

    *   Initialize a `Particle` class with position and velocity.
    *   Create a 2D grid (the flow field) where each cell contains an angle derived from `noise()`.
    *   Update particles:
        *   Look up the current cell in the flow field.
        *   Apply a force based on the angle of that cell.
        *   Update position and velocity.
        *   Wrap around screen edges.
    *   Render particles:
        *   Draw a line from previous position to current position.
        *   Use a color that evolves over time (e.g., using HSB color mode).
    *   Background:
        *   Use `background(0, 0, 0, alpha)` to create trailing effects.

    *   `setup()`: Create canvas, initialize particles, set HSB color mode.
    *   `draw()`:
        *   Draw semi-transparent black background.
        *   Update and display particles.
        *   Shift the noise offset to make the flow field evolve (optional but looks better).
    *   `Particle` class:
        *   `pos`, `prevPos`, `vel`, `acc`.
        *   `update()`: apply force, update vel, update pos.
        *   `follow(vectors)`: get the vector from the field.
        *   `edges()`: wrap around.
        *   `show()`: draw line.

    *   Resolution of flow field (e.g., 20x20 pixel cells).
    *   Number of particles (e.g., 2000-5000).
    *   Noise scale (how "swirly" the flow is).
    *   Particle speed.
    *   Color cycle speed.
write index.html (4409 bytes)
toolResult

Successfully wrote 4409 bytes to index.html

assistant

The flow-field particle animation has been implemented in `index.html`. It utilizes the pre-provided `p5.min.js` to create a high-performance simulation where thousands of particles are guided by a 3D Perlin noise field (evolving over time). ### Implementation Details: - **Flow Field**: A grid of vectors is generated using `noise(x, y, z)`, where `z` increments every frame to make the vectors shift smoothly. - **Particle Dynamics**: Each particle applies the local flow field vector as a force, updating its velocity and position. - **Visuals**: - **Fading Trails**: A semi-transparent background is drawn every frame (`background(0, 0, 0, 10)`), creating a "motion blur" trail effect. - **Dynamic Colors**: The stroke color cycles through the HSB spectrum over time. - **Continuous Motion**: Particles wrap around the edges of the screen to maintain a constant density. - **Optimization**: The flow field is calculated on a grid (`stepSize = 20`) rather than per-pixel to ensure a smooth frame rate with 3,000 active particles. The app is entirely self-contained in `index.html`.

TAKE IT TO CODE

A single self-contained HTML file — copy it and open in any browser, or reuse the prompt with your own pi-agent run.

RUN

modelgemma-4-31b-it
vendorGoogle
harnesspi-agent
generated2026-07-22

EVALUATION

4/5 working

Flow-field particle trails animate continuously with shifting hues, though inputs seem to only affect color, not clear interactivity.

Vision grade · anthropic/claude-sonnet-5

MEASUREMENTS

Raw readings from the capture, not a verdict — the grade above is the only judgement. Percentages are how much of the screen changed; the measure under-reports sparse motion on a dark background.

idle motion18.1%
on click16.2%
on drag17.3%
on wheel9.7%
on enter + space11.4%
on arrow keys9.5%
on w/a/s/d4.0%
frame spread13.4 / 255
console errors0
js errors none

METRICS

runtime56.7s
tokens in3.5k
tokens out2.0k
cached736
cost / run$0.0012