Post-Processing FX v4.0


Post-Processing FX v4.0 Released!

Hey everyone! After some months of hard work, I'm so excited to announce the biggest update of the year! Version 4.0 of Post-Processing FX!

This update includes many internal improvements (mainly with the new stack system, which allows for a lot of useful functionality - Effects can now change rendering order with .SetOrder()), bug fixes, and new effects! It also includes a new Debug interface that can be created in literally any room, making your game development even easier. This update also allows you to add your own effects to the stack!

Please read carefully what has been changed as it will cause some syntax errors if you have already added it to your game and want to use the new version 4.0. The changes were necessary for the improvement of the product. You can replace any code with CTRL + SHIFT + F.


New Debug UI!

For a long time Post-Processing FX used a very improvised debugging interface that couldn't be used anywhere. But this has changed for the better. With the new UI, you can create in literally any room in the game, and at any resolution! The UI also scales if you draw it in the GUI event. Now it's incredibly easy to customize the effects! It is also possible to export the settings to the clipboard, just by pressing a button.

The UI can be moved around, minimized and you can even add new items to the UI if you wish using the .AddItems() method.

To create the debug UI, all you need to do is:

// Create Event
debug_ui = new PPFX_DebugUI(ppfx_id);
// Draw GUI or Post-Draw
debug_ui.Draw();


New effect: Color Curves



Color grading curves provide an advanced method for fine-tuning specific ranges of hue, saturation or luminosity in an image. You can manipulate the curves using graphs to accomplish effects like saturation in certain colors.

It is also possible to use a palette with a few pixels, which the system automatically identifies the colors!


HHSL (Hue vs Hue, Hue vs Saturation, Saturation vs Saturation, Luminosity vs Saturation) curves.

These types of curves allow for some interesting effects, such as applying hue shift and saturation to certain colors.

As seen in the image above, it is possible to separate certain colors! 👀

New Dithering effect

A new dithering effect built from the ground up with 4 different modes and more options!



New LUT effect

This new LUT effect allows loading several LUT types: Strips, Grid and Hald (.cube - Yes, Post-Processing FX now supports loading Cube LUT files!).

 

New Gaussian Blur effect

This one has more performance and better gaussian function!


New effect: Channel Mixer

Allows you to take the red, green, and blue channels and boost or pull back the levels of each one.



New effect: Compare

With this effect, it is possible to compare stacks, to see how the game image behaves, with and without the effects. There's a side-by-side comparison mode too!

https://twitter.com/foxyofjungle/status/1689667666573758464

Side-by-side mode:




Export the Color Grading Stack!

It is now possible to bake the entire color grading stack (with all effects) into one image, which can be used as a LUT, getting better performance on mobile platforms!



LUT Generator

Added a LUT generator class! With it, you can generate neutral LUTs and import .cube files, which can be used with the LUT effect. This same class can also be used in the color grading bake system. Which means you can generate Strip LUTs too, for example.



Reordering effects:

It is now possible to change the rendering order of effects:


Adding external effects (Addons):

It is now possible to add external effects. Which means you can add your own effects to the stack. It will also be possible to add Addons effects that I intend to create new ones. 

All you need to do is write the effect name in an array, in the function below. This also already creates UI options in the editor.



Added blend modes to Texture Overlay

It is now possible to change the texture overlay effect's blending mode, which includes: Normal, Add, Subtract, Multiply, Divide and Color Burn.

Developing this project costs energy, a lot of work and time, the value in the store doesn't quite fit with the time I spend on this project, as I am active on it almost daily and all day. So, if you can, rate the project or make a comment, it helps in the visibility of the library.

And, if you think it's worth it and can support the development of this project and future ones, I kindly request it through my Ko-fi: https://ko-fi.com/foxyofjungle

I am kindly grateful for that. Thank you for your attention, have a great day :)


Alright, so now see the full list of patch notes below:

[ADDED] New powerful and versatile stacking system made from scratch. It consumes less memory, is more compact and efficient. With it, you can now reorder effects and easily add your OWN effects to the Stack!
This new system also avoids creating any additional surfaces if not in use
[ADDED] New powerful and responsive debug UI inspector! It is now possible to easily edit the effects in any room, in real time. There are also some other cool features
[ADDED] New powerful LUT generator module. Easily generate neutral LUTs! Strip, Grid, Hald Grid and Curve
[ADDED] Strip LUTs support
[ADDED] Hald Grid LUTs support
[ADDED] .cube file support. Now you can import .cube LUT files from famous softwares, like Photoshop and DaVinci Resolve (experimental!)
[ADDED] A "Modules" folder has been created, which contains optional features that can be deleted if you don't use them
[ADDED] New Gaussian Blur effect. This one has more performance and better gaussian function
[ADDED] New Dithering effect with 4 different modes and more options!
[ADDED] New effect: Color Curves, with support for YRGB and HHSL. Useful for precise color grading. Palettes are also supported and some more awesome stuff
[ADDED] New effect: Channel Mixer (allows you to take the red, green, and blue channels and boost or pull back the levels of each one)
[ADDED] PPFX_Curve() class. Through it, it is possible to generate YRGB and HHSL curves, which will serve for the Color Curves effect (for color grading)
[ADDED] Warning debug messages if you try to set a parameter of an unloaded effect. This also applies to other methods related to effects
[ADDED] .SetOrder() method. You can now set an effect's rendering order when creating it. Example: new FX_Bloom(true).SetOrder(7),
[ADDED] .SetEffectOrder() and .GetEffectOrder() to PPFX_System() class
[ADDED] YRGB animation curve to Assets folder
[ADDED] HHSL animation curve to Assets folder
[ADDED] PP_BLOOM_DIRT_CAN_DISTORT parameter to Bloom effect. Which means the dirt lens can now distort with the Lens Distortion effect if desired
[ADDED] PP_TEXTURE_OVERLAY_BLENDMODE parameter to Texture Overlay! Blendmodes are now supported (Normal, Add, Subtract and Color Burn)
[ADDED] PP_NOISEGRAIN_NOISE_SIZE parameter to Noise Grain effect
[ADDED] PP_PALETTE_SWAP_SMOOTHNESS parameter to Palette Swap effect. Lets you set the level of smoothness applied to the threshold. Changed parameter order, revise your code!
[ADDED] PP_CINEMA_BARS_INTENSITY parameter to Cinema Bars effect. It is now possible to set the opacity. Changed parameter order, revise your code!
[ADDED] PP_SCANLINES_SHARPNESS parameter to ScanLines effect. It is now possible to set the sharpness. Changed parameter order, revise your code!
[ADDED] PP_SLOW_MOTION_SOURCE_OFFSET parameter to Slow Motion effect. This option lets you define an source stack (to emit light from)
[ADDED] PP_SUNSHAFTS_SOURCE_OFFSET parameter to Sunshafts effect. This option lets you define an source stack (to emit light from)
[ADDED] When loading a profile, it now shows how many effects were loaded (if enabled)
[ADDED] Black and White spectral LUT
[ADDED] Feather: additional documentation
[FIXED] Post-processing now detects input surface resolution changes automatically, cleaning the system
[FIXED] Optimized PPFX_System() rendering stack (CPU-side)
[FIXED] Slow Motion effect had the wrong resolution when using threshold 0 and smaller drawing size
[FIXED] Dithering and Noise grain effects were shifting their positions when using .Draw() of PPFX_System() and changing the x and y coordinates
[FIXED] PPFX_ShockwaveRenderer() class optimized
[FIXED] PPFX_DisplaceMapRenderer() class optimized
[FIXED] Kawase Blur not working correctly with alpha (when using the LayerRenderer)
[FIXED] Improved Depth of Field effect. Blurring is now displayed correctly when using depth buffer
[FIXED] Depth of Field effect now scales correctly when downscaling via the downscale parameter
[FIXED] Improved .Stringify() from PPFX_Profile. Now the colors use the standard color codes, and among others
[FIXED] Chromatic Aberration shader now correctly calculates colors when using blur and custom spectral/prism LUTs
[FIXED] Chromatic Aberration shader optimized (especially when using blur mode)
[FIXED] Chromatic Aberration's Prisma/spectral LUT not working on HTML5
[FIXED] VHS shader was creating lots of random black dots when activating Chromatic Aberration effect
[FIXED] Slow Motion effect now behaves better while with threshold 0
[FIXED] White Balance shader now works correctly while using the LUT effect (no burst colors)
[FIXED] Depth of Field effect optimized (CPU-side), reduced the use of 1 surface and 1 pass
[FIXED] Vignette effect optimized (GPU-side)
[FIXED] Invert Colors effect optimized (GPU-side)
[FIXED] Lift Gamma Gain effect optimized (GPU-side)
[FIXED] Fade effect optimized (GPU-side)
[FIXED] Hue Shift effect optimized (GPU-side)
[FIXED] Posterization effect optimized (GPU-side)
[FIXED] Lens Distortion effect optimized (GPU-side)
[FIXED] Pixelize effect optimized (GPU-side)
[FIXED] Swirl effect optimized (GPU-side)
[FIXED] SineWave effect optimized (GPU-side)
[FIXED] Glitch effect optimized (GPU-side)
[FIXED] Dithering effect optimized (GPU-side)
[FIXED] Noise Grain effect optimized (GPU-side)
[FIXED] Mist effect optimized (GPU-side)
[FIXED] .GetStackSurface() method from PPFX_System() optimized
[FIXED] LUT shader has been changed and now correctly supports most LUT types for color grading
[FIXED] LUT had a margin of error in correcting the red and green color, now it has been fixed
[FIXED] .ProfileLoad() from PPFX_System() now clears effects from memory automatically, before loading a new profile, optimizing the game
[FIXED] .ProfileUnload() from PPFX_System() now cleans effects before removing them, preventing memory leak
[FIXED] Improved .Destroy() method from PPFX_System()
[FIXED] (Mac) Gaussian Blur was not working on some Mac devices (M2 mini and M1)
[FIXED] (Example) When exiting the 3D world, mipmapping was still active, causing the LUT effect to become corrupted
[FIXED] (HTML5) Fixed a bug where changing the render resolution quickly caused severe visual glitches
[FIXED] .DrawInFullscreen() from PPFX_System() was not throwing an error if trying to draw on an inappropriate event
[FIXED] Improved error exception message
[FIXED] In Speedlines effect, speed was affecting rot speed
[FIXED] Speedlines shader, rotating was not rotating correctly based on center
[FIXED] Improved Contrast shader (now uses standard ACES)
[FIXED] Micro optimization in Kawase Blur effect
[FIXED] Profile Stringify: Scanlines effect with duplicated "contrast" parameter
[FIXED] Profile Stringify: Missing parameters of Slow Motion effect
[FIXED] Layer Renderer now correctly applies camera matrix (a user was reporting upside-down bug)
[FIXED] White Balance effect now prevents too high values from blowing out colors
[FIXED] White Balance shader optimized
[FIXED] Palette Swap shader optimized (removed branching)
[FIXED] Palette Swap shader now correctly gets palette row
[FIXED] Palette Swap shader now uses a more efficient method of getting palette luminance
[FIXED] ScanLines effect intensity no longer bursts colors
[FIXED] .DisableAllEffects() was not working in HTML5
[FIXED] Small fixes in internal code
[CHANGED] Profiles are now faster and consume less memory than before
[CHANGED] .Stringify() from PPFX_Profile can now export effects from the system
[CHANGED] Depth of Field effect now shows a red color for the focus area in debug mode
[CHANGED] Texture Overlay effect now has it's own stack, which means it's now possible to use several on the same post-processing stack, useful for adding pre-existing surfaces for rendering
[CHANGED] .SetEffectEnable() from PPFX_System() now automatically clears the effect if it is being disabled
[CHANGED] ppfx_debug_draw(). This function is now inside the PPFX_DebugUI()
[CHANGED] Temperature range from Color Balance is now from -1 to 1, instead of -1.67 and 1.67, for better standard
[CHANGED] If you use .SetEffectEnable() from PPFX_System() and the effect does not exist in PPFX_System() instance, a console message is displayed instead of a error exception
[CHANGED] The way how FX_LUT() works: Now it is possible to choose the type: 2D, 3D and Hald. The order of parameters changed a little. Revise your code!!
[CHANGED] PP_BLUR_KAWASE_DOWNSCALE now goes from 0 to 1, like other downscaled effects. This change was for internal performance purposes. Revise your code.
[CHANGED] PP_DITHERING_STRENGTH is now PP_DITHERING_INTENSITY
[CHANGED] PP_DISPLACEMAP_ZOOM is now PP_DISPLACEMAP_SCALE, for better comprehension
[CHANGED] PP_CINEMA_BARS_IS_FIXED is now PP_CINEMA_BARS_CAN_DISTORT, for better comprehension. Note that true becomes false and vice versa
[CHANGED] PP_TEXTURE_OVERLAY_IS_FIXED is now PP_TEXTURE_OVERLAY_CAN_DISTORT, for better comprehension. Note that true becomes false and vice versa
[CHANGED] Systems in general now do not depend on global variables while running each step, which makes it more efficient
[CHANGED] Renamed default sprite asset "__spr_ppf_lut3d_default" to "__spr_ppf_lut_grid_default"
[CHANGED] Vignette Shader in linear mode now works similarly to non-linear mode, as it should be
[CHANGED] Border effect now only exists on the final stack, which prevents some color blending issues
[CHANGED] Lift Gamma Gain effect is now after Shadow Midtones Hightlights, for better color adjustments
[CHANGED] screen_width and screen_height parameters from PPFX_System().Draw are new surface_width and surface_height, for better coherence
[CHANGED] All Spectral/Prism LUTs (for Chromatic Aberration) are now 3x1 sized, making them easier to use and create
[REMOVED] Legacy JSDocs information about profiles in the .ProfileLoad() function of PPFX_System() class
[REMOVED] .SkipStacks() from PPFX_System(). The new stack system allows automatic optimization when stacks are not in use, avoiding creating additional surfaces
[REMOVED] Some unused files from the asset folder


Hope you have fun! Thanks for listening :D

Files

PostProcessingFX_v4.0.yyz 41 MB
Aug 21, 2023
PostProcessingFX_v4.0.yymps 2.4 MB
Aug 21, 2023

Get Post-Processing FX

Buy Now$49.00 USD or more

Comments

Log in with itch.io to leave a comment.

(+1)

Thank you for your work we really appreciate that!

(+1)

Thanks a lot for the kindness and using PPFX! :D

I suppose the version for the gamemaker marketplace is no longer updated? I bought it there.

(+1)

The Marketplace is in a questionable situation... I can't upload there and the site doesn't even open

(+1)

Marketplace works for me, lol.

Apparently there are times when it works and others it doesn't, just now I went to open it again and it's offline

However, I would like to get access to the new version as I have already purchased this extension.

Can you give me access to this extension on Itch or at least a discount?

Deleted 1 year ago
(+1)

Wow. Thanks for this. So will I be able to adjust effects using the UI within my own project with this update? 

Exactly! ;)

Have fun 😀

Just got it going. Good work, man. 

Cool! Thank you for the kindness 😁