Highlight Plus 2 - All in One Outline & Selection Effects

About Highlight Plus 2 - All in One Outline & Selection Effects – Unity VFX & Shader Pack

Highlight Plus 2 - All in One Outline & Selection Effects Unity Asset Overview

Highlight Plus 2 delivers a highly optimized, feature-rich selection and outline system engineered specifically for Unity. Built on optimized hand-written custom HLSL shaders rather than heavy Shader Graph containers, the asset operates with minimal runtime CPU/GPU overhead across the Universal Render Pipeline (URP), High Definition Render Pipeline (HDRP), and the legacy Built-in Render Pipeline.

The architecture relies on a hybrid execution model. Depending on the target hardware and effect configurations, it utilizes object-space mesh expansion, stencil-buffer masking, or dedicated depth/screen-space post-processing passes. In URP and HDRP, it integrates cleanly via dedicated Scriptable Render Features (or ScriptableRendererPass injections), eliminating the need to alter standard camera stack behaviors or break existing geometry rendering passes.

Core Visual Effect Modules

Render Performance, Depth Buffer & Mobile Optimization

Outline effects can quickly saturate fill-rate limits and increase draw calls if implemented incorrectly. Highlight Plus 2 minimizes performance overhead through strict depth-buffer checks and render-texture downsampling options.

On mobile architectures utilizing Tile-Based Deferred Rendering (TBDR) GPUs (e.g., Apple Silicon, ARM Mali, Adreno), full-screen blits and frame-buffer fetch operations incur severe bandwidth penalties. Highlight Plus 2 mitigates overdraw by providing downscaled glow buffers (Quarter-Resolution and Half-Resolution rendering modes) and allowing developers to force pure stencil-based object extrusions on low-spec hardware profiles.

Performance Characteristics & Optimization Rules

Inspector Properties & Scripting Guide

The central point of interaction for developers is the HighlightEffect component. This component can be attached dynamically to individual GameObjects, managed globally via HighlightManager, or controlled programmatically via C# scripts. Rather than creating unique material instances that disrupt draw call batching, Highlight Plus 2 utilizes per-draw dynamic shader properties and internal MaterialPropertyBlock buffers where applicable.

Programmatic Implementation Example

The following C# script demonstrates how to dynamically attach, configure, and toggle highlight effects on interactive objects at runtime:

using UnityEngine;
using HighlightPlus;

[RequireComponent(typeof(Collider))]
public class InteractiveObjectHandler : MonoBehaviour
{
    [Header("Highlight Style Configurations")]
    [SerializeField] private Color hoverOutlineColor = Color.yellow;
    [SerializeField] private Color selectionOutlineColor = Color.cyan;
    [SerializeField] private float defaultOutlineWidth = 0.35f;

    private HighlightEffect highlightComponent;
    private bool isSelected = false;

    private void Awake()
    {
        // Get existing HighlightEffect or attach a new instance dynamically
        highlightComponent = GetComponent<HighlightEffect>();
        if (highlightComponent == null)
        {
            highlightComponent = gameObject.AddComponent<HighlightEffect>();
        }

        // Initialize component parameters via script
        highlightComponent.outlineColor = hoverOutlineColor;
        highlightComponent.outlineWidth = defaultOutlineWidth;
        highlightComponent.glow = 0.5f;
        highlightComponent.seeThrough = SeeThroughMode.WhenOccluded;
        highlightComponent.seeThroughIntensity = 0.75f;
        
        // Ensure effect starts in a disabled state
        highlightComponent.highlighted = false;
    }

    private void OnMouseEnter()
    {
        if (isSelected) return;

        highlightComponent.outlineColor = hoverOutlineColor;
        highlightComponent.highlighted = true;
    }

    private void OnMouseExit()
    {
        if (isSelected) return;

        highlightComponent.highlighted = false;
    }

    public void SetSelectionState(bool selected)
    {
        isSelected = selected;

        if (isSelected)
        {
            highlightComponent.outlineColor = selectionOutlineColor;
            highlightComponent.highlighted = true;
            
            // Trigger a temporary pulse effect on selection
            highlightComponent.HitFX(Color.white, 0.4f);
        }
        else
        {
            highlightComponent.highlighted = false;
        }
    }
}

Asset Details & Specifications

CategoryVFX / Shaders
Latest Versionv34.4.1 (7 tracked releases)
File Size30.64 MB
Added to PlatformFebruary 5, 2026
Views16 views
Downloads7 downloads
Favourites2 favourites
Official StoreBuy Original License on Unity Asset Store →
Issue with Package?Report Broken Link →

Developers Who Downloaded This Also Downloaded

Related Unity VFX Assets