oneshotlm
Compare all models on this prompt →

Flow-field particles · qwen3.6-27b

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 · 6 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 user wants me to create a single-page web app (index.html) that uses p5.js to create a flow-field particle animation. Let me build this with:

1. Full-screen canvas
2. Thousands of particles advected by Perlin noise vectors
3. Fading trails (semi-transparent background)
4. Colors shifting over time

Let me create a well-crafted implementation.

write /workspace/index.html (5772 bytes)
toolResult

Successfully wrote 5772 bytes to /workspace/index.html

assistant
thinking
I noticed a bug — I wrote `TWO_API` instead of `TWO_PI` in the sparkle-draw section. Let me also fix the `rectMode(CENTER)` usage where I'm using rect with CENTER mode but passing width/height — that should still work for the background fade, but let me fix the typo first.

Also the `res` parameter handling in the rect call — actually with `rectMode(CENTER)`, passing `width/2, height/2, width, height` should fill the whole canvas. That's fine.

Let me fix the `TWO_API` typo.

I spotted a typo (`TWO_API` → `TWO_PI`). Let me fix it:

edit {"edits":[{"newText":" ctx.arc(this.x, this.y, this.size * 0.4, 0, TWO_PI);","oldText":" ctx.arc(this.x, this.y, this.size * 0
toolResult

Successfully replaced 1 block(s) in /workspace/index.html.

assistant
thinking
Good, the typo is fixed. The file is now complete. Let me verify the final state.

The file is complete. Here's what **index.html** delivers: | Feature | Detail | |---|---| | **3 000 particles** | Advected by a 2D Perlin-noise vector field | | **Flow-field** | Pre-baked angle grid (`noise(x,y) → 0..2π`), re-baked every 2 frames for slow evolution | | **Fading trails** | Semi-transparent black overlay each frame (`alpha=6`) | | **Additive blending** | `globalCompositeOperation = 'lighter'` for luminous overlap | | **Color shift** | Global hue drifts + per-particle hue offset (±60°) + life-based fade | | **Size variety** | Each particle has a random size and a tiny bright core "sparkle" | | **Edge respawning** | Particles that drift off-screen or live out spawn from the edges | | **Full-screen** | Matches `window.innerWidth × innerHeight`, reloads on resize |

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

modelqwen3.6-27b
vendorQwen
harnesspi-agent
generated2026-07-31

EVALUATION

3/5 working

Flow-field particles create faint fading trails on a shifting background color, but density looks sparse in most frames.

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 motion0.0%
on click3.6%
on drag100.0%
frame spread5 / 255
console errors0
js errors none

METRICS

runtime52.2s
tokens in2.3k
tokens out2.4k
cached6.6k
cost / run$0.0082