GraphiteEditor / Graphite

2D vector & raster editor that melds traditional layers & tools with a modern node-based, non-destructive, procedural workflow.
https://graphite.rs
Apache License 2.0
9.68k stars 470 forks source link

Faster Gaussian blur implementation #995

Open Keavon opened 1 year ago

Keavon commented 1 year ago

The current implementation of Gaussian Blur runs through each pixel and blurs it with all its neighboring pixels within the kernel radius. That's great for other types of kernels, but the special case of Gaussian Blur can be drastically sped up by blurring just the X axis followed by just the Y axis.

(An even faster approach at larger radius values, using an FFT and IFFT, can be tackled later in another issue.)

kbujari commented 9 months ago

Hi, I'd like to try taking this one on.

Keavon commented 9 months ago

Last time we tried tackling this, it was blocked by some larger architectural issues. But that might be solved by now. @TrueDoctor do you think this is approachable now, or is it too involved for a beginner?

Keavon commented 9 months ago

@kbujari I'm told by @TrueDoctor that this is actually not blocked anymore. Please proceed!

Zamoca42 commented 1 month ago

Is this completed? I cannot find the implementation of Gaussian Blur in the current repository.

Keavon commented 1 month ago

The original slow/broken version was removed. So this issue involves adding one that's as performant as possible on the CPU. Feel free to work on this!