- Implemented a fullscreen quad vertex shader for post-processing effects.
- Added a noise fragment shader to apply noise effects to textures.
- Created a vignette fragment shader for darkening corners of the screen.
- Developed a canvas widget to manage child widgets with anchor points and flexible sizing.
- Introduced an effect chain widget to apply multiple post-processing effects in sequence.
- Added overlay widget to position child widgets with alignment and padding options.
- Implemented a post effect widget to apply effects like blur, vignette, and color adjustments to child widgets.
- Provided convenience functions for easily applying common effects to widgets.
- Replaced string concatenation with Jinja2 templates for improved maintainability and readability.
- Added new template files for struct definitions, buffer helpers, and buffer manager.
- Introduced a template loader to manage Jinja2 rendering and custom filters.
- Updated the README and documentation to reflect the new template system.
- Added comprehensive tests to ensure output consistency with the previous implementation.
- Maintained full API compatibility with existing functions.