Post-Processing FX v5.0 BETA


Welcome to one of the biggest updates to Post-Processing FX: v5.0! (BETA)

It includes a ton of bug fixes, some new effects and changes. While this version is beta, it is safe to use.


⚠️ This version includes breaking changes, intended to improve the quality of PPFX. So I don't recommend using it in existing projects, unless you are willing to implement the changes. Read the release notes to find out what's new and different:

[ADDED] ASCII effect.
[ADDED] Sharpen effect.
[ADDED] Glitch effect (preview).
[ADDED] New Slow Motion effect. Much better than the previous one. Now it is possible to have an ultra strong slow motion! Also fixed issues with the screen going black when activating the effect and others.
[ADDED] New Sunshafts effect, this time more cool and with better performance.
[ADDED] New Channel Mixer effect. This way, you have better control of HDR values.
[ADDED] New "Shadows, Midtones, Highlights" effect. This way, you have better control of HDR values.
[ADDED] Post-processing can now be applied to layers while using cameras created using matrix functions.
[ADDED] Debug UI: You can now preview the Color Grading LUT before exporting!
[ADDED] Debug UI: Added buttons to create neutral LUTs for export without having to write code.
[ADDED] PP_DOF_FOCUS_NEAR and PP_DOF_FOCUS_FAR parameters to Depth of Field effect.
[ADDED] PP_BLOOM_DIRT_TILED parameter to Bloom effect.
[ADDED] PP_SWIRL_ROUNDED parameter to Swirl effect.
[ADDED] PP_SHADOW_RANGE_MIN, PP_SHADOW_RANGE_MAX, PP_HIGHLIGHT_RANGE_MIN, PP_HIGHLIGHT_RANGE_MAX to "Shadows, Midtones, Highlights" effect.
[ADDED] PP_CINEMA_BARS_SMOOTHNESS to Cinema Bars effect.
[ADDED] PP_LONG_EXPOSURE_RESOLUTION to Slow Motion effect.
[ADDED] PPFX_PaletteGenerator() class for loading color palettes (.pal support - can be loaded from Aseprite, for example)!
[ADDED] "Knee" parameter to Bloom effect (after "threshold"). It controls the softness of the transition between the bloomed and non-bloomed areas of the image, similar to Blender.
[ADDED] .Clean() method to PPFX_ShockwaveRenderer(), useful for cleaning surfaces when changing rooms.
[ADDED] .SetObject() method to PPFX_ShockwaveRenderer(). Use this to set the shockwaves object parent now.
[ADDED] "clearMemory" parameter to .SetRenderEnable() from PPFX_Renderer().
[ADDED] Post-Processing FX now features Gamma correction, allowing for better, more accurate visuals.
[ADDED] "Separate Texture Page" option is not required anymore for anything. Which means reduced texture swaps, which means higher performance.
LUT, Chromatic Aberration, Sunshafts, Shockwaves, Texture Overlay, Bloom's Dirt Lens, Dithering, Noise Grain, Speedlines, Palette Swap and Mist effects now supports textures that are on shared texture pages.
[ADDED] Delta Time support to PPFX_Renderer().
[ADDED] .SetDeltaTime() method to PPFX_Renderer().
[ADDED] Depth buffer support to FX_DepthOfField().
[ADDED] Depth buffer support to FX_Shockwaves().
[ADDED] Depth buffer support to FX_DisplaceMap().
[ADDED] FX_Compare() now supports both horizontal and vertical orientations.
[ADDED] Slow Motion effect is now auto-cleared from memory when intensity is zero.
[ADDED] Bloom effect is now auto-cleared from memory when intensity is zero.
[ADDED] Depth Of Field effect is now auto-cleared from memory when intensity is zero.
[ADDED] PPFX_CFG_EPSILON.
[FIXED] The LUT effect now preserves all the colors (both Strip and Grid). Previously, colors were limited to the number of colors in the sprite. Note that quantization is still possible in the LUT itself.
[FIXED] Chromatic Aberration effect is now resolution-independent.
[FIXED] Motion Blur effect is now resolution-independent.
[FIXED] Gaussian Blur effect is now resolution-independent.
[FIXED] Improved Noise Grain effect appearance.
[FIXED] FX_Shockwaves effect now distorts equally with respect to amount, regardless of PPFX_Renderer resolution.
[FIXED] .DrawInFullscreen() now works correctly in GX.Games.
[FIXED] In HTML5, the compatibility check returns that it does not support shaders even if it does. This is a GM issue, but a workaround has been implemented.
[FIXED] When using PPFX_ShockwaveRenderer(), loading a new profile, even if it contains the FX_Shockwaves effect, causes the system to not render the shockwaves.
[FIXED] The LUT effect now prevents any HDR colors from destroying the look-up, even without tone mapping.
[FIXED] White Balance effect now works correctly with HDR and tone mapping.
[FIXED] The Hue Shift effect now no longer pops if you enable the "Preserve Luminance" option and use the contrast effect at high levels.
[FIXED] Mist effect not working correctly with HDR.
[FIXED] Mist effect movement direction now follows the angle correctly.
[FIXED] Flickering when changing Gaussian blur resolution.
[FIXED] Bloom effect optimized (GPU and CPU usage).
[FIXED] HQ4X effect optimized (GPU-side).
[FIXED] Gaussian Blur effect optimized (GPU-side).
[FIXED] Palette Swap effect optimized (GPU-side).
[FIXED] Chromatic Aberration effect optimized (GPU-side).
[FIXED] Sunshafts effect optimized (GPU-side).
[FIXED] Border effect optimized (GPU-side).
[FIXED] Vignette effect optimized (GPU-side).
[FIXED] Motion Blur effect highly optimized (GPU and CPU).
[FIXED] Optimized Base Stack.
[FIXED] Optimized Final Stack.
[FIXED] Optimized sampling shaders.
[FIXED] Dithering effect mode 1 was displaying negative values in HDR.
[FIXED] Slow Motion effect optimized (CPU and GPU).
[FIXED] Slow Motion back buffer bug.
[FIXED] Slow Motion "sourceOffset" parameter was not working correctly.
[FIXED] HQ4x: smoothness parameter not working correctly.
[FIXED] FX_TextureOverlay() effect can now scale correctly even if it is on a shared texture page.
[FIXED] PPFX_ShockwaveRenderer() now uses a RGBA 8-bit texture, instead of the same format as the PPFX renderer, improving memory usage.
[FIXED] Both PPFX_ShockwaveRenderer() and PPFX_DisplaceMapRenderer() now detect PPFX renderer surface resolution changes, as well as use the renderer surface instead of application_surface directly.
[FIXED] .SetRenderResolution() from PPFX_Renderer() optimized, preventing PPFX from recreating all surfaces twice.
[FIXED] Shake effect is now automatically disabled if speed is 0, preventing weird offsets.
[FIXED] The progress time of a shockwave instance now follows PPFX_CFG_SPEED, instead of a hardcoded value.
[FIXED] Memory leak in PPFX_Renderer(). If you use .SetBakingLUT(), the generated LUT surface is not destroyed if you call .Destroy() method.
[FIXED] Improved "Area Masks" performance and the uniforms global was removed.
[FIXED] FX_MotionBlur: "radius" parameter now comes before "angle", for consistency with other effects.
[FIXED] Some missing variables of some effects when using PPFX_Profile() export option.
[FIXED] FX_Pixelize() now doesn't stop working if pixelMaxSize is 0.
[FIXED] Optimized memory usage of all effects.
[FIXED] Small minimal internal things.
[CHANGED] All effect parameters are no longer in a struct called "settings". This allows for greater CPU performance by avoiding too many dot access, and also reduces RAM usage.
[CHANGED] PPFX_Renderer()'s HDR is now disabled by default, because this is implicit in the renderer itself now. So you must use .SetHDREnable(true) for each renderer you want HDR for. This helps optimize memory usage for renderers that you don't need HDR.
[CHANGED] Tone Mapping is now applied in the right way. That being said, you will notice that the Bloom and Sunshafts effect will be blown out until you apply tone mapping.
If you want to use the old way, you just need to comment out the "IS_ADDITIVE" line of the Bloom and Sunshafts shaders.
The tone mapping effect allows you to map HDR pixels just once, while using additive lighting, obtaining more interesting visuals.
[CHANGED] The entire Color Grading stack has been reworked from scratch. Tone Mapping is now applied first, allowing better control of the final look.
Basically any previous visual glitch, caused by poor tone mapping application, has been fixed.
[CHANGED] Renamed all variables to camelCase and PascalCase, which is the modern naming convention. This style of writing also saves more memory, as it does not contain the "_" character, especially in shaders.
[CHANGED] Improved the way the Channel Mixer effect works.
[CHANGED] The Shockwaves effect now automatically destroys any surfaces when there are no shockwaves rendering, optimizing memory. It is quickly recreated as soon as there is a shockwave instance.
[CHANGED] The Sunshafts effect has changed, so you need to change some parameter names where you are using the effect.
[CHANGED] The intensity range of the Chromatic Aberration effect has been reduced from base 100 to base 1, going from 0 to 1. This change was necessary due to dynamic resolution improvement.
[CHANGED] Moved "PPFX_STACK" order enum to the Settings script, for better organization and management.
[CHANGED] Slow Motion effect parameters.
[CHANGED] Renamed PPFX_System() to PPFX_Renderer(), which is what makes more sense. "System" was a too generic name decision.
[CHANGED] Renamed FX_Glitch() effect to FX_Interference(), because there is a new and better FX_Glitch().
[CHANGED] Changed the way PPFX_ShockwaveRenderer() works. Now it just needs one parent object for all the shockwaves.
[CHANGED] All effects parameters named "downscale" have been renamed to "resolution", and this includes the effects macros.
[CHANGED] Slow Motion effect, the blur was removed when only the lights are isolated, as it caused a somewhat undesirable look.
[CHANGED] White Balance effect is now part of the Color Grading stack, and can now be included in the LUT bake as well.
[CHANGED] NES Fade effect is now disabled if amount is 0.
[CHANGED****] Palette Swap effect is now part of the Color Grading stack, and can now be included in the LUT bake as well << MAYBE NOT ???
[CHANGED] The shockwave object now uses built-in variables, which in addition to optimizing memory, makes it easier to use.
[CHANGED] surfaceWidth and surfaceHeight was removed from .Draw() and .DrawInFullscreen() from PPFX_Renderer() to make it simpler. Having this functionality is redundant, since it is possible to change the resolution with .SetRenderResolution().
[CHANGED] PPFX_Renderer() now does not display message errors, but only in the console, improving the investigation of errors in your game.
[CHANGED] Some PPFX_Renderer() methods now return self, allowing you to use chained methods.
[CHANGED] Palette Swap: "row" now starts with 1, and "height" now refers to the actual height of the sprite, making it more clear.
[CHANGED] PP_COMPARE_OFFSET parameter renamed to PP_COMPARE_OFFSET, because you can do both now.
[CHANGED] PP_PIXELIZE_SQUARES_MAX parameter renamed to PP_PIXELIZE_PIXEL_MAX_SIZE. The Pixelate effect now uses a real pixel size.
[CHANGED] Renamed FX_SlowMotion() to FX_LongExposure(), because that's what this effect really is and not to be confused with motion blur.
[REMOVED] Blood sprite from Post-Processing FX folder, freeing memory.
[REMOVED] PPFX_CFG_SPEED setting, this is now automatically defined.
[REMOVED] .Clean() method from PPFX_Renderer(). This is now handled internally when using .Destroy().
[REMOVED] .AddObject() from PPFX_ShockwaveRenderer(). Use .SetObject() instead.
[REMOVED] Old Glitch effect. The new Glitch effect has the same features, but much better.
[REMOVED] "Global Intensity" feature, from PPFX_Renderer(). With the "Blend Areas" feature (work in progress), you can achieve similar effect. Additionally, the removal allowed for widespread optimization.
An important note is that with the change in how tone mapping works, keeping this feature would cause more problems than benefits.
[REMOVED] ppfx_shockwave_renderer_exists(). This is to simplify PPFX. You don't need to check if it exists if you only use it when needed, which is the way to go.
[REMOVED] ppfx_displacemap_renderer_exists(). This is to simplify PPFX. You don't need to check if it exists if you only use it when needed, which is the way to go.
[REMOVED] ppfx_system_exists(). This is to simplify PPFX. You don't need to check if it exists if you only use it when needed, which is the way to go.
[REMOVED] PPFX_ShockwavesRenderer: "camera" parameter from .Render(). The camera is now automatically taken from the current view, making the process easier.
[REMOVED] PP_MOTION_BLUR_TEXTURE. Use FX_TextureOverlay() instead.
[REMOVED] "shaped" parameter from Depth of Field effect. The DOF is now shaped by default, for optimization (you can still control the blades amount).

Thanks for listening! have a great day. :)

Files

PostProcessingFX_v5.0_BETA.yymps 2.1 MB
1 day ago
PostProcessingFX_v5.0_BETA_Example.yyz 37 MB
1 day ago

Get Post-Processing FX

Buy Now$49.00 USD or more

Leave a comment

Log in with itch.io to leave a comment.