Posts

What's left?

The project had three deliverables An Inner Glow layer style implemented as a native GEGL operation. A Bevel layer style implemented as a GEGL operation. Porting legacy sharpen filter to a GEGL operation. Where Things Stand The sharpen port is complete and has already been merged, the filter is self-contained that brings the filter fully into the modern GEGL pipeline and removes its old 8-bit limitation. See  https://gitlab.gnome.org/GNOME/gegl/-/merge_requests/269 . The Inner Glow operation is actively underway. It's turned into a much deeper effort than originally expected, because matching Photoshop's actual rendering behavior required extensive empirical testing. Sliders like Spread, Range, and the Contour curve interact in ways that aren't obvious from the UI alone, and pinning down that behavior meant running controlled side-by-side comparisons across multiple pieces of software. See WIP at  https://gitlab.gnome.org/GNOME/gegl/-/merge_requests/275   Bevel and Em...

Curve widget layout support

Some of Gegl's image-processing filters rely on curves, those draggable graphs you can bend to fine-tune how an effect behaves. Up until now, only a couple of built-in tools (in GIMP) had a proper way to show and edit those curves. If a filter needed one, there simply wasn't a ready-made widget for it. A merge request currently in progress https://gitlab.gnome.org/GNOME/gimp/-/merge_requests/2901 aims to fix that gap by adding generic curve editing support to GIMP's filter dialogs. In practice, this means any filter that uses a geglcurv type property will automatically get an interactive graph, complete with draggable points and precise numeric input. Work on this has moved in stages: first making sure curve settings could be properly saved and duplicated, then wiring up an actual visual widget, and now refining it to use GIMP's own richer internal curve format so nothing gets lost along the way. A few tricky bugs have popped up, like curve edits not immediately ta...

PSD compatible Inner Glow layer style

Photoshop's layer effects, like Inner Glow, are notoriously fiddly to reproduce because they combine several interacting sliders, curves, and blending behaviors that were never publicly documented. Getting a close enough match means deriving the effect almost entirely from observation.  What Inner Glow Actually Does? In Photoshop-style layer effects, Inner Glow adds a soft (or hard) halo of color that radiates inward from the edges of a shape's alpha mask, or outward from its center, depending on settings. The feature exposes a handful of user-facing controls: Size : how far the glow extends Color : the glow's color Choke (called as Spread in this Gegl operation): how much of the glow area is rendered at full opacity versus faded Source : whether the glow radiates from the shape's edge or its center Opacity : overall strength of the effect Technique:  Precise (crisp distance-based falloff) or Softer (blur-based falloff) Range : how much of a Contour curve affe...

gegl:sharpen

 My work involved porting a legacy, foundational 3x3 Sharpen matrix over to GIMP's modern core engine, GEGL (Generic Graphics Library). Gimp's older sharpen filter was removed from GIMP 3.0 due to it not being maintained and only working on 8 bit images and it often operated in a restrictive environment. It took an image, looked at a tiny grid of pixels, applied  some fast math, and spitted out the result. While this worked fine years ago, it has a massive drawback for modern creators which is that it destroys data. Legacy filters usually force images into 8-bit precision (only 256 levels of color per channel) and bake the changes permanently into your pixels. If you sharpen an image and change your mind later, you're out of luck. By rebuilding this Sharpen filter as a native GEGL operation, we are giving a classic tool a massive performance and fidelity upgrade. The new implementation focuses on two main pillars which are High Bit-Depth (Instead of sq...