I implemented

> "Adaptive filtering for progressive Monte Carlo image rendering" (2000) by Frank Suykens , Yves D. Willems
> (links to 2.4MB PDF)

for a toy () renderer, following the plan of

> "The Fractal Flame Algorithm" (2003-2008) by Scott Draves, Erik Reckase
> (22MB(!) PDF)

Seems to work well!

I haven't yet optimized the first pass with fixed radius, if I use a separated blur kernel (just blur horizontally then blur the result vertically) it should be a lot faster for most images (for sparse dots it might be slower, but they're boring).

looks better with density estimation kernel width factor increased (maximum width is actually a bit lower, but this scaling means the first bunch of samples are blurred smoothly before the later samples with narrow kernels tighten things up)

Show thread

Switched from float to uint32_t for the accumulation buffer, but at level 14 i got some white artifacts which I think are due to overflow wrapping back to 0. Trying again with uint64_t.

Trying to make it faster as I'm not sure if float are CPU accelerated (they might take locks in software?)

Show thread

uint64_t fixes the artifacts. Didn't think to measure the speed before/after.

Show thread
Sign in to participate in the conversation

Welcome to, an instance for discussions around cultural freedom, experimental, new media art, net and computational culture, and things like that.