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

IMPORTANT

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

1.1
  • Added optimisations, Max Process Distance & Half JFA

  • Added more BP functions to change the settings from the game thread

1.0
  • Initial release-ready product

Last updated