Volumetric Lights 2

About Volumetric Lights 2 – Unity VFX & Shader Pack

Volumetric Lights 2 Unity Asset Overview

If you have worked on atmospheric 3D environments in Unity, you know that default lighting often feels flat without true volumetric fog or light shafts. Rendering dynamic volumetric lighting—especially in the Universal Render Pipeline (URP)—has historically been a major headache. Built-in solutions either consume huge amounts of GPU bandwidth or suffer from awful bilinear upsampling artifacts around geometry edges.

Volumetric Lights 2 solves this problem by providing a lightweight, customizable raymarching engine built specifically for modern Unity pipelines. Instead of relying on brute-force post-processing fog volumes that process empty screen space, this asset takes a hybrid geometric-raymarched approach. It bounds volumetric shafts within actual geometry meshes (cones, spheres, cubes, or custom light volumes) and executes targeted screen-space raymarching inside those bounds.

In my experience optimizing interior lighting for desktop and console projects, this geometric bounding approach saves massive amounts of GPU fill rate. You get rich mist, dynamic shadows, animated noise, and dust particles without torching your frame budget.

Core Technical Features & Highlights

The asset goes far beyond basic light shafts, offering deep render pipeline controls and shader optimizations that allow high-end visual fidelity on modest hardware setups.

1. Geometry-Bounded Raymarching Shader

The core engine attaches custom mesh instances to lights (Point, Spot, Directional, and Area lights). The fragment shader calculates sample points only where camera rays intersect these volumes. By skipping empty pixel passes entirely, GPU fill-rate demands drop significantly compared to full-screen volume fog solutions.

2. Volumetric Shadows & Occlusion

Real-time occluders are evaluated during the raymarch loop. Volumetric Lights 2 reads shadow maps directly from Unity light sources, allowing objects to cast true volumetric shadows through fog and light cones. You can control shadow jittering, raymarch step counts, and sub-surface scattering values to eliminate banding visual artifacts.

3. Integrated Noise & Dust Particles

To keep fog from looking like static plastic cones, the package incorporates 3D noise textures directly inside the raymarching pass. It also includes an integrated GPU particle pass for atmospheric dust specs that react naturally to light intensity and attenuation parameters.

Key Technical Highlights:

Ideal Use Cases & Game Genres

While any 3D environment benefits from light shafts, Volumetric Lights 2 fits particularly well into specific production pipelines:

Quick-Start Unity Setup & Integration Guide

Getting your first volumetric light running takes under two minutes once the package is imported into your project.

Step 1: Configure Your Render Pipeline

If you are running URP, open your Universal Render Pipeline Asset scriptable object. Add the Volumetric Lights Render Feature to your Forward Renderer Data asset. This allows the rendering engine to inject volumetric passes into the opaque/transparent render queues correctly.

Step 2: Add the Component to a Light

Select any Unity Light component (Spotlight or Point Light work best for testing) and click Add Component -> Volumetric Light. The asset will automatically generate the corresponding proxy mesh bounds and assign the required volumetric material.

Step 3: Programmatic Control via C#

You can adjust volumetric parameters dynamically at runtime to create flashing alarm lights, flickering torches, or fluctuating atmospheric density. Here is a practical C# script showing how to drive volumetric intensity and noise programmatically:

using UnityEngine;
using VolumetricLights;

[RequireComponent(typeof(Light))]
public class DynamicLightPulse : MonoBehaviour
{
    private VolumetricLight volLight;
    private Light baseLight;

    [Header("Pulse Settings")]
    public float pulseSpeed = 3.0f;
    public float minDensity = 0.02f;
    public float maxDensity = 0.15f;

    [Header("Color Shifts")]
    public Color startColor = Color.cyan;
    public Color endColor = Color.magenta;

    void Awake()
    {
        baseLight = GetComponent<Light>();
        volLight = GetComponent<VolumetricLight>();

        if (volLight == null)
        {
            volLight = gameObject.AddComponent<VolumetricLight>();
        }
    }

    void Update()
    {
        // Calculate smooth wave factor
        float wave = Mathf.PingPong(Time.time * pulseSpeed, 1.0f);

        // Interpolate volumetric density and light color
        volLight.density = Mathf.Lerp(minDensity, maxDensity, wave);
        Color currentLightColor = Color.Lerp(startColor, endColor, wave);

        baseLight.color = currentLightColor;
        volLight.mediumAlbedo = currentLightColor;
    }
}

Pros & Cons Assessment

Here is my honest takeaway based on actual project deployments and stress testing across target platforms.

Asset Details & Specifications

CategoryVFX / Shaders
Latest Versionv20.2.1 (2 tracked releases)
File Size51.31 MB
Added to PlatformMay 28, 2026
Views9 views
Downloads2 downloads
Favourites1 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