Changelog
The current version available is 1.3.2
✴️ ONGOING PROGRESS: Move documentation to GitBooks
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
Investigate if it's possible to generate outlines that change with world depth
Continue research that was done
1.6.0 - Ideas
Additional image filter - Sobel - Applies the Sobel kernel
Can optionally add the following:
Blurring pass
Non-maximum Suppression
INVESTIGATE: efficient Edge Tracking for Canny Edge detection
Transparency on scene view - need to find a way to access translucency outside of post-process materials
Applies to Stencil, None
1.4.0 - Ideas
Add settings editor window which will allow users easily adjust their outlines settings and get immediate feedback on what happens
Add ability to set up settings for example content
Include example level from the demo or at least include content such as the painting example
Provide some information on the current batching setup as it's not clear if the batching is actually occurring as specific settings need to be the same for outlines to be batched
INVESTIGATE: Using custom asset type for outline creation with an in world actor to dictate global outline activity similar to post-process volumes
This will include better editor functionality
Will include the option to convert existing ini settings to assets for several update versions
1.3.3 - In Progress
This update is delayed due to course work. This content has been pushed back to allow earlier deployment of fixes
TODO: Add new source - Scene
This is for use with edge detection applied to the full screen
Detection based on a combination scene view, scene depth and world normal
TODO: Image Filters - Apply image filters onto the scene to extract outline data
Simple - Basic edge detection
Uses an adjustable combination of:
Scene colour
Applies to Render target, Stencil, Scene
Scene depth
Applies to Stencil, Scene
World normal
Applies to Stencil, Scene
Specular
Applies to Stencil, Scene
TODO: Add blueprint node to make it easier to get an outline name without having to go into settings
TODO: Add parameter version of the outline output nodes
TODO: FIX: #8 Improve Error Messages
TODO: Investigate making the distance field "smaller" or "larger" depending on depth
This could allow for smaller outlines at a distance
TODO: Add depth mask for scene based outline generation
Limits the distance outlines get created
TODO: Depth modulation for simple scene based outline generation
TODO: Thickness option for simple outlines
Will look fine for small values but for larger values should use distance fields
FIXED: Issue with render target sourced distance fields/simple outlines
1.3.2
Removed deprecated content
Added quality of life button to change depth stencil settings in the plugin's settings if they're not correct
Added option for multiple distance metrics as a potential performance improvement or stylistic choice
Manhattan
Chebyshev
Euclidean Fast (without square root - default)
Octagonal
Octagonal alt
Changed the render target method to use the colour based outline edge detection method instead of the current single value method
FIXED: Issue with batching more than one stencil distance field that was introduced in 1.3.1
FIXED: Issue using the anti-aliasing output material node causing crash
FIXED: Issue using the occlusion output material node causing crash
FIXED: issue when enabling output of occlusion to render target for the first time & check if other asset related issues have the same issue
FIXED: Issue with example content not being accessible in all supported versions of UE5
1.3
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
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