All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog; this project adheres to Semantic Versioning.
Bugfixes and improvements.
- Added support for HDR color pickers (#42).
- Fixed URP depth testing with MSAA enabled when using
OutlineLayerCollection
, thanks @AGM-GR for the help (#39). - Added loop unroll statement to make shaders compatible with some platforms (WebGL 1.0) (#45).
- Removed
BeginSample
/EndSample
profiler calls when rendering outlines to get rid of the editor errors (#44).
Misc improvements.
- Added support for URP sprite outlines (#28).
- Enabled ourlines for renderers with no materials attached (#33).
Misc improvements and bugfixes.
- Added possibility to set custom shader tags for URP outlines.
- Added support for filtering URP outline renderers by rendering layer mask (#22).
- Fixed URP outlines rendering issue when both depth-testing and MSAA are enabled (#23).
- Fixed
OutlineBehaviour
not working in edit mode after disabling and enabling it again.
OutlineEffect
now works in edit-mode.OutlineEffect
now exposesOutlineLayerCollection
instead ofIList
.OutlineEffect
now usesOnPreRender
to update its command buffer.- Moved
MergeLayerObjects
flag toOutlineLayer
fromOutlineLayerCollection
. - Multiple
OutlineEffect
component instances can now be added to a camera.
URP per-layer outlines and misc improvements.
- Added URP-specific shader versions.
- Added URP layer-based outline rendering (#9).
- Added support for Single Pass Instanced XR rendering for built-in and URP (#13).
- Fixed URP outlines rendering issue in Unity 2020.2 (#21).
Alpha test support, bugfixes and misc improvements.
- Added support for alpha-testing (#10).
- Added support for merging outline layer objects (#12).
- Added
RemoveGameObject
helper methof toOutlineEffect
(#15). - Added ability to customize render event in
OutlineBehaviour
. - Added ability to render outlines to the specified camera only for
OutlineBehaviour
. - Added warning for unsupported render pipelines for
OutlineBehaviour
andOutlineEffect
.
- Misc inspector improvements.
- Changed default render event to
AfterSkybox
.
- Fixed incorrect condition for selection of render method, which sometimes caused problems with outline rendering on mobiles (#14).
URP support, core refactoring and bugfixes.
- Added URP support (#5).
- Use procedural geometry (DrawProcedural) on SM3.5+.
- Added support for both forward and deferred renderers (built-in RP).
- Added ignore layer mask settings to
OutlineLayerCollection
(previously the ignore layers were specified when adding game objects to layers). - Added
OutlineBuilder
helper script for managinfOutlineLayerCollection
content from editor (#8).
- Changed
OutlineSettings
to display enum mask instead of checkboxes. - Changed inspector look and feel for
OutlineLayerCollection
assets. - Merged shaders for the 2 outline passes into one multi-pass shader.
OutlineLayerCollection
doe not depend onOutlineRenderer
now.
- Fixed outline rendering on mobiles (#7).
- Fixed outline shader error on low-end devices.
- Fixed post-ptocessing implementation to require depth texture.
- Dropped .NET 3.5 support, minimal Unity version is set to 2018.4.
- Removed
IOutlineSettingsEx
interface.
Depth testing support and performance optimizations.
- Added support for depth testing when rendering outlines. When enabled, outlines are only rendered around the visible object parts (#1).
- Added a few convenience methods to
OutlineEffect
. - Added editor tooltips for outline component fileds.
- Get rid of GC allocatinos during command buffer updates.
- Fixed compiler warning in post-processing compatibility package (0649).
- Fixed
IndexOutOfRangeException
when setting outline width to max value (#4).
- Removed change tracking support in package entities (#2).
Bugfixes and project layout changes.
- Fixed
OutlineBehaviour
to allow changing its state while itsGameObject
is inactive.
MaterialPropertyBlock
-based rendering and Unity Post-processing Stack v2 compatibility.
- Moved to for
MaterialPropertyBlock
-based rendering. This is in-line with Unity post-processing Stack and is more performant approach. - Significant optimizations made to
OutlineRenderer
.
IOutlineSettings
now implementsIEquatable
.- Changed all outline shaders to use HLSL-based macros.
- Modified all shaders to ignore MVP vertex transform to be compatible with the new rendering model.
- Exposed rendering APIs for
OutlineLayer
andOutlineLayerCollection
.
- Fixed
TiledGPUPerformanceWarning
on mobile targets.
- Removed
OutlineMaterialSet
class. It is not used inMaterialPropertyBlock
-based effect rendering.
Quality of life improvements.
- Added
OutlineLayer.Enabled
. - Added
OutlineLayer.Name
. - Added possibility to change render order of layers via
OutlineLayer.Priority
. - Added possibility to edit renderers of an
OutlineLayer
. - Added possibility to alter
CameraEvent
used to renderOutlineEffect
. - Added more info to the
OutlineLayer
preview inspector.
IOutilneSettings
setters now throw if overriden.
- Fixed
OutlineLayer.Add
not filtering renderers by the mask passed.
Editor UI improvements and unit tests.
- Added
OutlineSettings
, that can be shared between dfferentOutlineLayer
andOutlineBehaviour
instances. - Added custom inspectors for
OutlineSettings
,OutlineLayerCollection
. - Added undo/redo support to all custom inspectors.
- Added unit-tests.
- Improved inspectors for
OutlineBehaviour
andOutlineEffect
.
Blurred outlines.
- Added Gauss blurring to outlines.
- Added outline mode parameter (possible values are
Solid
andBlurred
). - Added outline intensity parameter (for blurred outlines only).
- Added
IOutlineSettings
interface to make outline settings the same forOutlineBehaviour
andOutlineLayer
. - Added
OutlineMaterialSet
helper.
- Changed solid outline to use Gauss sampling (to achieve smoother outlines).
- Changed outline implementation to use different passed for horizontal and vertical sampling (to make algorithm complexity linear instead of quadric).
- Fixed an issue with
OutlineBehaviour
not rendering outlines if attached to aGameObject
with no renderers.
- Removed
OutlineResourceCache
class.
- Added support for sharing outline layers between
OutlineEffect
instances. - Added custom editors for
OutlineEffect
andOutlineBehaviour
. - Added possibility to setup outline layers as
ScriptableObject
asset.
- Fixed profiler error 'BeginSample and EndSample count must match'.
- Added
OutlineBehaviour
for rendering per-object outlines. - Added
OutlineResources
to help initialize outline effects in runtime. - Added
OutlineRenderer
as low-level helper for outline rendering.
- Initial release.