2D Neon Grids

About 2D Neon Grids – Unity Editor Tool & Plugin

2D Neon Grids Unity Asset Overview

In my 8+ years of building 2D and 2.5D arcade experiences in Unity, I have built my fair share of procedural background shaders. Achieving that high-vibrancy, synthwave aesthetic often leads developers down a rabbit hole of huge 4K tiled sprites, memory leaks, and tedious parallax setup scripts. The 2D Neon Grids package solves this exact headache by replacing heavy textures with a procedural fragment shader system designed for sprite-based environments.

Instead of relying on static bitmap graphics, the asset renders infinite, scalable grid lines directly inside custom material pipelines. At its core, the package wraps mathematical line functions, perspective distortion hooks, and dynamic pulse calculations into simple sprite components. It hooks natively into Unity's SpriteRenderer workflow, making it remarkably easy to bind grid behavior directly to player speed, audio frequencies, or state machine events without destroying draw-call batching.

Core Technical Features & Highlights

Under the hood, this asset avoids texture-sampling bottlenecks entirely by calculating grid geometry inside the pixel shader using step functions and anti-aliased UV coordinates. Here is a breakdown of what makes it technically solid:

Shader Math & Post-Processing Synergy

The pixel shader handles line thickness, spacing, and distance attenuation dynamically. Because the line calculations return raw float values multiplied by high-intensity HDR colors, the asset integrates effortlessly with post-processing stacks. When fed into a Universal Render Pipeline (URP) Volume containing high-intensity Bloom, the grids produce that iconic, burning-neon glow effect without requiring expensive screen-space blur iterations.

Key Technical Capabilities

Ideal Use Cases & Game Genres

Honestly, if your art direction leans into retrowave, cyberpunk, or vector-style sci-fi, this package eliminates hours of custom shader writing. In my testing, it fits particularly well in these genres:

Quick-Start Unity Setup & Integration Guide

Setting up the asset takes less than five minutes. Here is the standard implementation routine I recommend when setting up a dynamic background layer:

Step 1: Create the Grid Object

Create a 2D GameObject (e.g., 2D Object > Sprite). Assign a square white sprite texture (or default Unity sprite) to the SpriteRenderer. Create a new Material using the provided 2D Neon Grids/ProceduralGrid shader, and drop it onto the renderer.

Step 2: Driving the Grid Programmatically

To avoid instantiating material instances and clogging the garbage collector, always drive shader parameters using a MaterialPropertyBlock. Here is a lightweight dynamic script I wrote that updates scrolling speeds and pulsing HDR glow on the fly:

using UnityEngine;

[RequireComponent(typeof(SpriteRenderer))]
public class NeonGridController : MonoBehaviour
{
    [Header("Movement Settings")]
    [SerializeField] private Vector2 scrollSpeed = new Vector2(0f, -0.75f);
    
    [Header("Glow & Pulse")]
    [ColorUsage(true, true)]
    [SerializeField] private Color baseGlowColor = new Color(0f, 1f, 2.5f, 1f); // HDR cyan
    [SerializeField] private float pulseFrequency = 3.0f;

    private SpriteRenderer _spriteRenderer;
    private MaterialPropertyBlock _propBlock;
    private Vector2 _accumulatedOffset;

    private static readonly int GridOffsetProperty = Shader.PropertyToID("_GridOffset");
    private static readonly int GridColorProperty = Shader.PropertyToID("_GridColor");

    private void Awake()
    {
        _spriteRenderer = GetComponent<SpriteRenderer>();
        _propBlock = new MaterialPropertyBlock();
    }

    private void Update()
    {
        // Accumulate scroll position based on delta time
        _accumulatedOffset += scrollSpeed * Time.deltaTime;

        // Calculate cyclic brightness factor
        float pulseFactor = (Mathf.Sin(Time.time * pulseFrequency) + 1.0f) * 0.5f;
        Color dynamicColor = baseGlowColor * (1.0f + pulseFactor * 0.8f);

        // Apply via MaterialPropertyBlock to prevent runtime material leaks
        _spriteRenderer.GetPropertyBlock(_propBlock);
        _propBlock.SetVector(GridOffsetProperty, _accumulatedOffset);
        _propBlock.SetColor(GridColorProperty, dynamicColor);
        _spriteRenderer.SetPropertyBlock(_propBlock);
    }
}

Pros & Cons Assessment

Pros

Cons

Asset Details & Specifications

CategoryTools / Sprite Management
Latest Versionv1.1.0
File Size13.47 MB
Added to PlatformFebruary 9, 2026
Views1 views
Downloads0 downloads
Favourites0 favourites
Issue with Package?Report Broken Link →

Related Unity Tools Assets