Post-Processing FX v5.0
Post-Processing FX » Devlog
Welcome to one of the biggest updates to Post-Processing FX: v5.0! (Stable)
It includes a ton of bug fixes, some new effects and changes.
⚠️ 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:
(While this version is stable, it is not immune to potential bugs, so please report any that you find and they will be fixed)
[ADDED] ASCII effect. [ADDED] Sharpen effect. [ADDED] Glitch effect (experimental). [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] It is now possible to filter effects when using .ProfileLoad(). [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] PPFX_NormalmapRenderer() for both Shockwaves and Displacemaps. [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, DisplaceMaps, 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] .SetTimer() 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. You don't need to touch this. [ADDED] New way to use external/custom effects. Now no additional script is needed, just use "new FX_Name" directly in the profile! [ADDED] "isExternalEffect" parameter to effects constructor. Use this to indicate that your effect is external/custom. [ADDED] The .ProfileLoad() method now avoids loading invalid effects. [ADDED] More interesting debug messages from .ProfileLoad(). [ADDED] .SetHighPrecisionEnable() method to PPFX_ShockwavesRenderer(). [ADDED] ppfx_area_mask_begin() and ppfx_area_mask_end(). It is now easier to draw area masks, and using your own code. [ADDED] .Draw() and .DrawInFullscreen() now returns the output surface too. [ADDED] Bloom's anti-flicker feature is now optional. You can disable it by commenting out "ANTI_FLICKER" in the pre-filter shader. This is useful for performance on Android. [ADDED] .SetDrawEnable() now allows you to enable alpha blending, which means you can now use transparent surfaces as input to PPFX_Renderer()'s .Draw()/.DrawInFullscreen(). [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] The LUT effect now prevents any HDR colors from destroying the look-up, even without tone mapping. [FIXED] Memory leak in PPFX_Renderer(). If you use .SetBakingLUT(), the generated LUT surface is not destroyed if you call .Destroy() method. [FIXED] Dithering effect mode 1 was displaying negative values in HDR. [FIXED] White Balance effect now works correctly with HDR and tone mapping. [FIXED] Mist effect not working correctly with HDR. [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] PPFX_ShockwaveRenderer() now uses it's own texture format, 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] Improved PPFX_ShockwaveRenderer() performance. [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 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] 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] .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] 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] PPFX_Renderer() applied to layers becomes invisible if using the depth buffer. [FIXED] PPFX_Renderer() applied to layers while using depth buffer was not reordering depth correctly. [FIXED] Posterization effect: colorFactor was not working correctly. [FIXED] Hue Shift effect: preserveLuminance was not working correctly. [FIXED] The PPFX_Renderer() now checks whether the input surface has zero size, preventing errors. [FIXED] .SetEffectParameters() from PPFX_Renderer() performance improved. [FIXED] .SetDeltaTime() from PPFX_Renderer() was not returning self. [FIXED] Some Feather docs. [FIXED] Potential chances of Shockwaves effect not working properly on Apple M1/M2 chip. [FIXED] Sharpen effect was visually glitchy on the Apple M1/M2 chip. [FIXED] Radial Blur effect was visually glitchy on the Apple M1/M2 chip. [FIXED] Motion Blur effect was visually glitchy on the Apple M1/M2 chip. [FIXED] Gaussian Blur effect was visually glitchy on the Apple M1/M2 chip. [FIXED] Sunshafts effect was visually glitchy on the Apple M1/M2 chip. [FIXED] Depth of Field effect was visually glitchy on the Apple M1/M2 chip. [FIXED] Depth of Field effect was visually glitchy on the Apple M1/M2 chip. [FIXED] Shake effect could cause issues on the Apple M1/M2 chip. [FIXED] Motion Blur noise texture was not UV mapped correctly, causing the effect to look ugly. [FIXED] Radial Blur noise texture was not UV mapped correctly, causing the effect to look ugly. [FIXED] Long Exposure effect parameters was not being exported correctly (when using the Profile Export option). [FIXED] Cinema Bars effect parameters was not being exported correctly (when using the Profile Export option) - missing "smoothness" parameter. [FIXED] Internal variable named "remap" (from FX_Mist and FX_SpeedLines) could potentially conflict with some global function in your project. Renamed to "remapp", but this does not affect anything in your side. [FIXED] .LayerSetRange() from PPFX_Renderer() could cause an error if you did not call .LayerApply() first. [FIXED] The Zoom effect now takes into account the distortion from the Lens Distortion effect. [FIXED] DisplaceMap effect was having a slight distortion on the screen when activated and with high intensity. [FIXED] Shockwave effect was having a slight distortion on the screen when activated (when shockwaves are spawned) and with high intensity. [FIXED] Shockwave sprites had a slight incorrect distortion on the edges. [FIXED] Shockwaves can now overlap seamlessly, preserving the normal map colors. [FIXED] Shockwaves depth buffer was not working properly due to a small mistake. [FIXED] .LayerApply() from PPFX_Renderer() can now be called more than once, making it possible to reapply to layers when changing rooms or restarting the room. [FIXED] Improved Raindrops example. [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] There has been a major internal change to how PPFX_Renderer() works, meaning that effects are no longer referenced using an enum, but rather macros that start with "FF_". This change improves performance, because of how it works internally, as well as external effects no longer need to be added in the script, you just need to use "new FX_Effect" syntax normally in the profile itself and load it to the renderer and it will already work. [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] 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. [CHANGED] Renamed PP_SUNSHAFTS_RAYS_NOISE_TEX to PP_SUNSHAFTS_RAYS_NOISE_TEXTURE. [CHANGED] Renamed PP_CHROMABER_PRISMA_LUT_TEX to PP_CHROMABER_PRISMA_LUT_TEXTURE. [CHANGED] Renamed PP_MIST_NOISE_TEX to PP_MIST_NOISE_TEXTURE. [CHANGED] Renamed PP_SPEEDLINES_NOISE_TEX to PP_SPEEDLINES_NOISE_TEXTURE. [CHANGED] Renamed PP_NOISEGRAIN_NOISE_TEX to PP_NOISEGRAIN_NOISE_TEXTURE. [CHANGED] FXAA effect is now applied after Sharpen effect, improving a lot the final result. [CHANGED] How area_draw_rect() works, and renamed it to ppfx_area_draw_rect(). [CHANGED] The .Draw()/.DrawInFullscreen() function now returns the final surface. [CHANGED] PPFX_ShockwaveRenderer() and PPFX_DisplacemapRenderer() are now just PPFX_NormalmapRenderer(), since they are basically the same thing. [CHANGED] PPFX now does not force the game to load all of its textures when starting the game (since it accesses them), only when using loaded effects now. [CHANGED] Now the default shockwave object is a child of the normal map object, which makes it easier for you to create your own objects that distort the screen. [REMOVED] FX_EFFECT_EXT enum. Now you can write your own effect name using macros. This eliminates the confusion of referencing internal effects with FX_EFFECT and FX_EFFECT_EXT as external. [REMOVED] PPFX_CFG_SPEED setting, this is now automatically defined. [REMOVED] Blood sprite from Post-Processing FX folder, freeing memory. [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] 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). [REMOVED] __ppf_include_external_effects() and __ppf_include_external_shared_stacks() functions. Effects can now be used in profiles as-is. [REMOVED] All global variables from PPFX, making it cleaner. [REMOVED] make_color_hdr_ppfx() and make_color_rgb_hdr_ppfx(), since there is no other effect that needs this now. [REMOVED] area_* functions. Replaced by ppfx_area_mask_begin() and ppfx_area_mask_end(), which are better, because they allow you to draw whatever you want now.
Thanks for listening! :D
Files
PostProcessingFX_v5.0.yymps 2 MB
4 days ago
PostProcessingFX_v5.0.yyz 37 MB
4 days ago
Get Post-Processing FX
Buy Now$49.00 USD or more
Post-Processing FX
✅High Performance AAA visual effects for GameMaker
More posts
- Post-Processing FX v5.0 BETA 3Mar 27, 2025
- Post-Processing FX v5.0 BETA 2Mar 02, 2025
- Post-Processing FX v5.0 BETAFeb 21, 2025
- Post-Processing FX v4.0.3Sep 26, 2023
- License updateSep 03, 2023
- Post-Processing FX v4.0.2Aug 29, 2023
- Post-Processing FX v4.0.1Aug 23, 2023
- Post-Processing FX v4.0Aug 21, 2023
- Post-Processing FX v4.0 (BETA!)Aug 14, 2023
Leave a comment
Log in with itch.io to leave a comment.