Changelog
The current version available is 1.2.4
Ideas
Investigate supportability for 5.0, 5.1
Test for all platforms.
Make FREE plugin - Tool to take in a bitmask (black and white texture) and output a distance field texture.
Make FREE plugin - Game thread ran compute shader that can take in an array of values to generate a distance field for non-texture use cases.
Investigate an optional pass that will upscale the downsampled JFA and perform a JFA pass at the same time - this looks like it would take some reworking and a few extra passes
Investigate an option for filter on the depth/stencil buffer that will extract internal edges caused by significant differences in depth - edge detection on depth buffer within stencil
Investigate an option to consider depth for bitmask stencils - this will output a partial distance field if object is partially blocked by a non-stencil object
Investigate potential optimisation for simple outlines that extract all outlines in a single pass for bitmask stencils
Investigate adding the ability to add user custom shader (code-based) for the material outline rendering for the AA pass
Investigate a way to add alternative AA methods by the user (post-process AA types like FXAA, MLAA, SMAA etc.)
Investigate a way to use AA to adjust the UV seed to "smooth" the edges for use in the JFA passes
Investigate the merging of the AA edge detection phase with the outline edge detection phase to reduce the number of passes required (for simple outline only situations)
Investigate if possible to add debug views for distance field outline, simple outline, all available process mask levels, outline material and anti-aliased outline
Add the ability to directly render to the post-process passes to reduce the overall number of passes and optionally remove the need to update render-target assets
1.3 Released
Added ability to name resource
Added ability to specify where resources get saved to (all resources, not individually)
Added option to subtract or invert from the stencil/outline based on depth - depth occlusion
Added buttons in the settings to make accessing resources easier
Added button that creates an antialiasing pass material template
Refactor of asset management should fix reported issue #4
Batching multiple simple and distance field outlines together, greatly improving performance for multiple outlines
Some Pixels shaders have been replaced with with Compute where performance was improved
Refactored existing parts to make things easier to maintain
Added a warning in the settings if stencil settings are incorrect
Added 5.6 Support
Added new occlusion output to Distance Field Material Expression node
The occlusion value is stored in the alpha channel of the underlying render target
Added new material node that gets the antialiased outline output
Can still access the outline via render target asset
Added options to inject the antialised output directly into the scene view colour without a post-process material pass
Refactored the settings
Changed available options for distance fields
Unadded FHA as it had too many errors and later improvements in JFA performance with scaling made it redundant
Removed checkerboard and half JFA methods for the same reason as FHA
Will continue to investigate JFA performance improvements
Any missing/deleted resource can be recreated on restarting UE or by globally disabling and re-enabling the plugin in the plugin settings (where you add all the outline settings)
Active stencil check has been removed, the renderer provides this information before rendering so it was redundant
Refactored the associated blueprint library, most options should be static
Better to have multiple outlines for different states and enable/disable the outlines individually
Added start-up dialog on initial start or updates with things like changelog information
Moved refresh button into the main toolbar
Added global scale option that scales all of the stencil based outlines
Individual outlines can be scaled further however it's multiplicative
Added the ability to output the occlusion to a render target to access in materials
Added more material nodes to make material creation easier
Improved example outline material
✴️ ONGOING PROGRESS: Move documentation to GitBooks
1.2.4
Fixed issue with material expression causing a crash
Fixed issue with stencil being blocked by process mask on non-check or non-half JFA modes
No longer runs the DF passes for viewports like editor previews
Improved memory usage of the Active Stencil Check with bit-packing (very minor speed improvement)
Implemented anti-aliasing pass for a material - you use the material to render your outlines - then use the result in your post-process materials - CMAA2 is the AA algorithm used - https://www.intel.com/content/www/us/en/developer/articles/technical/conservative-morphological-anti-aliasing-20.html
Updated PixelDistanceMaterialExpression to allow the choice between constant pixel distance or a relative screen percentage distance
Added material node for easier access to anti-aliased outline material
Added support for UE5.5
1.2.3
Fixed issue with process mask not working properly with checkJFA - I done goofed, I think what I ended up doing was adding a change to the wrong shader function, the check and half JFA methods should've been fine with the process mask...
Fixed issue causing the render target source to fail validation, meaning it wouldn't go through the distance field passes
Added option to DFO custom material expression to have a 1px offset when choosing outside/inside only
Changed shaders to include the entire stencil regardless of process mask
1.2.2
Fixed issue with process mask not working properly with halfJFA
Optimised checkerboard JFA pass
Improved Active Stencil Check reliability
1.2.1
Fixed issue caused by test compute shader when packaging game.
Warning for No Distance Field Resource present will only show once in the log rather than every frame - to avoid spamming.
Forgot to update the text shown in the plugin's settings, updating.
Added better error checking in blueprint function library
1.2
Added automatic toggling of render passes based on the stencil values existing in the frame - Active Stencil Check
Added checkerboard rendering as an optimisation method (works similar to Half JFA but less aggressive) - improves performance at the cost of accuracy
Added process mask to distance field output texture to help improve the performance of post-process materials
Always creates an outline (smallest level of process mask) process mask, this improves performance on all simple outlines and initial outline pass for the JFA
Refactored the process mask creation to improve maintainability
Added option to scale the render target down to 1% of the base resolution - improves performance at the cost of quality
Added option to specify a group of stencils that can be merged for a single distance field outline
Supports UE 5.4
Added option to use a render target instead of a stencil as a source
Can now render every frame, at a targeted frame rate or completely on demand
Improved example materials making them simpler
Last updated