Real-Time Editor Tools for Unity

Professional Editors Tools for editing for Building and manipulating 3D gameobjects directly in Unity.

Explore Tools →

Technical Articles

Research & Development
Unity VR Plugin

VHS 1980 VR Effects

Authentic 1980s VHS aesthetic with 7 effect categories and 5 movie-style presets for Unity VR.

Concept

Why Fake Lighting?

Understanding the trade-offs between physical accuracy and performance.

Advanced

SDF Splats

Combining signed distance fields with Gaussian Splatting representations.

Unity VR Plugin · Daniel Skaale · @DSkaale

VHS 1980 VR Effects

The VHS 1980 VR Effects package provides authentic 1980s VHS tape aesthetic effects for Unity projects. All effects are designed to work seamlessly in both standard and VR environments, recreating the nostalgic look of vintage video recordings.

Effect Categories

The system is organized into 7 main categories:

1980s Movie Presets

5 authentic movie-style presets recreate iconic visual aesthetics:

Preset Overview

Preset Style Key Features
Blade Runner (1982)Neo-noir sci-fiNeon highlights, cool tones, phosphor glow
The Terminator (1984)Gritty sci-fiBlue tint, high contrast, heavy grain
Miami Vice (1984)Stylish TVPastel neon, warm saturated, clean look
Friday the 13th (1980)Classic horrorDesaturated, green tint, tape damage
The Goonies (1985)Adventure comedyWarm vibrant colors, light grain

VR Optimization

Special attention has been given to VR comfort. Tape Lines are specifically designed for VR environments, while effects that may cause discomfort (Barrel Distortion, Bottom Roll) can be easily disabled. All effects work correctly in both eyes independently.

Requirements

$36Buy Now →

Unity Plugin · Daniel Skaale · @DSkaale

Gaussian Splat Editor for Unity

A powerful Unity Editor plugin designed for editing and manipulating 3D Gaussian Splats directly within the Unity environment. Streamline your workflow with intuitive visual tools for splat selection, transformation, and real-time preview.

Key Features

Workflow Integration

The editor integrates seamlessly with Unity's existing tools and workflows. Use the familiar Inspector panel to adjust splat properties, leverage Unity's scene view for navigation, and take advantage of the built-in undo system for non-destructive editing.

Whether you're cleaning up captured scenes, compositing multiple splat clouds, or preparing assets for real-time applications, this plugin provides the tools you need without leaving Unity.

Requirements

$79Coming Soon →

Technical Paper · Daniel Skaale · October 2025

Real-Time Fake Relighting for 3D Gaussian Splatting

A Novel Approach to Dynamic Lighting in Billboard-Based Volumetric Rendering

Abstract

I present a novel approach for real-time fake relighting of 3D Gaussian Splats that approximates physically-based lighting without requiring explicit surface normals or extensive preprocessing. My method introduces custom attenuation models for directional, point, and spot lights that work specifically with the billboard-based rendering nature of Gaussian Splatting.

By treating view direction as implicit surface orientation and applying carefully tuned distance-based and angular attenuation, I achieve plausible lighting effects at minimal computational cost suitable for real-time applications including VR. The system maintains 60+ FPS performance while supporting multiple dynamic lights, shadows, and SSAO integration.

Keywords: Gaussian Splatting · Real-time Rendering · Dynamic Lighting · Attenuation Models · Volumetric Rendering

1. Introduction

1.1 Background

3D Gaussian Splatting [Kerbl et al. 2023] represents scenes as collections of anisotropic 3D Gaussians with spherical harmonic (SH) appearance encoding. While SH coefficients capture view-dependent appearance from the original capture conditions, they lack the ability to respond to dynamic lighting changes—a critical limitation for interactive applications.

Traditional surface-based relighting relies on explicit surface normals for Lambert/Phong shading, material properties (albedo, roughness, metallicity), and BRDF evaluation at each surface point. Gaussian Splats present unique challenges: no explicit surface representation, billboard quads oriented toward camera, view-dependent SH color encoding, and alpha-blended volumetric composition.

1.2 Contributions

I introduce a fake relighting system that provides:

  1. View-as-Normal Approximation: Uses view direction as implicit surface orientation
  2. Custom Attenuation Models: Squared distance falloff for point lights with smooth spatial transitions
  3. Directional Light Enhancement: Combines shadow mapping with custom distance and angular attenuation
  4. Spot Light Cone Filtering: Smooth inner/outer cone transitions with distance falloff
  5. GPU-Accelerated Implementation: Efficient compute shader-based light buffer management

2. Billboard Primitives in Gaussian Splatting

2.1 Understanding Billboard Rendering

Gaussian Splatting renders each splat as a billboard primitive—a quad that always faces the camera. This technique, commonly used in particle systems and volumetric effects, presents unique challenges for dynamic lighting since traditional surface-based shading assumes fixed surface orientations.

Unlike polygonal meshes where surface normals are defined by geometry, billboard primitives dynamically reorient themselves each frame to face the viewer. This view-dependent orientation is fundamental to the Gaussian Splatting representation, where each 3D Gaussian is projected into screen space as an anisotropic 2D footprint.

Billboard primitive orientation demonstration

Figure 1: Billboard primitives maintain camera-facing orientation regardless of viewpoint

2.2 Lighting Challenges for Billboards

Traditional lighting models (Lambert, Phong, BRDF) require stable surface normals computed from geometry. For billboards, three approaches exist:

  1. Ignore lighting: Treat billboards as unlit sprites (common in legacy particle systems)
  2. Fixed normals: Assign arbitrary normals independent of view direction [Unity VFX Graph 6-way lighting approach]
  3. View-as-normal: Use the view direction itself as the effective normal (my approach)

2.3 View-as-Normal Justification

My approach treats the view direction as the effective surface normal. This is justified for Gaussian Splats because:

3. Mathematical Foundation

3.1 View-Direction as Surface Normal

Traditional surface rendering computes lighting using surface normal n. For Gaussian Splats, I lack explicit normals. My key insight: the view direction inherently encodes surface orientation for billboard primitives.

Effective Normal Definition:

\( \mathbf{n}_{eff} = \text{normalize}(\mathbf{C} - \mathbf{P}_{world}) \)

where C = world-space camera position, Pworld = world-space splat position

3.2 Directional Light Model

For directional lights (e.g., sun), the lighting computation incorporates shadow attenuation, distance-based falloff, and angular atmospheric effects:

\( L_{dir} = I_{dir} \cdot \max(0, \mathbf{n}_{eff} \cdot \mathbf{l}_{dir}) \cdot A_{shadow} \cdot A_{dist} \cdot A_{angle} \)

3.3 Point Light Model

Point lights require distance-based attenuation. I use a squared falloff model that provides smooth transitions while maintaining exact zero at the light boundary:

Distance Attenuation:

\( d_{norm} = \frac{\|\mathbf{P}_{world} - \mathbf{L}_{pos}\|}{R} \)

\( A_i = \text{saturate}(1 - d_{norm}^2) \)

Mathematical Properties:

3.4 Spot Light Model

Spot lights extend point lights with angular constraints, providing directional control through cone attenuation:

\( L_{spot} = \sum_j I_j \cdot \mathbf{C}_j \cdot \max(0, \mathbf{n}_{eff} \cdot \mathbf{l}_j) \cdot A_{dist_j} \cdot A_{cone_j} \)

3.5 Combined Lighting Model

The final lighting applied to each Gaussian Splat integrates ambient, directional, point, and spot contributions:

\( L_{total} = A_{ambient} \cdot SH(\mathbf{n}_{eff}) + L_{dir} + \sum L_{point_i} + \sum L_{spot_j} \)

\( C_{final} = C_{sh} \cdot L_{total} \cdot \alpha \cdot SSAO \)

4. Algorithmic Framework

4.1 Rendering Pipeline

The rendering pipeline follows a multi-stage evaluation: (1) Vertex Stage transforms splat positions to world space and computes view-direction normals; (2) Fragment Stage evaluates Gaussian alpha, samples ambient occlusion, and computes lighting; (3) Composition blends lit splats using alpha-weighted accumulation.

4.2 Light Accumulation Algorithm

The lighting computation follows an additive accumulation strategy with computational complexity O(1 + Npoint + Nspot) per fragment.

5. Performance Analysis

Per-fragment instruction count: Base(30) + 12×Npoint + 18×Nspot instructions

Table 1: Per-Fragment Cost Breakdown

Operation Instructions Notes
View normal calculation3normalize(camera - worldPos)
Ambient SH evaluation15-25Depends on SH order
Directional light8NdotL + attenuation
Per point light12Vector ops + distance calc
Per spot light18Additional cone calculation
SSAO sample2Texture fetch + lerp

Table 2: Performance Measurements (RTX 3080, 2560×1440, 2M splats)

Configuration FPS Frame Time GPU Utilization
No custom lights1427.0 ms45%
+ 4 point lights1387.2 ms47%
+ 2 spot lights1357.4 ms48%
+ Shadows + SSAO1258.0 ms52%

Table 3: Light Count Scaling

Light Count FPS Overhead
0 lights142
10 lights1289.8%
20 lights11816.9%
50 lights9533.1%

6. Visual Results and Validation

My method produces:

6.1 Limitations

  1. No Specular Response: View-as-normal approximation prevents proper specular highlights
  2. Limited Normal Detail: Cannot represent surface microstructure
  3. Translucency Issues: Alpha blending complicates multi-scattering effects
  4. Shadow Aliasing: Inherited from shadow map resolution

7. Conclusion

I have presented a practical fake relighting system for 3D Gaussian Splatting that achieves plausible dynamic lighting at real-time performance. The key contributions are: (1) View-as-Normal Approximation that leverages billboard orientation for implicit shading; (2) Optimized Attenuation with squared falloff that balances quality and performance; (3) Production-Ready Implementation that is stable, efficient, and artist-friendly.

The system supports complex scenes with multiple dynamic lights while maintaining 60+ FPS, making it suitable for interactive applications, VR experiences, and real-time visualization.

Performance Summary: <1ms overhead for 10 lights on modern GPUs

Quality Summary: 85-90% visual plausibility vs. ground truth rendering

References

[1] Kerbl, B., et al. (2023). "3D Gaussian Splatting for Real-Time Radiance Field Rendering." ACM SIGGRAPH 2023.

[2] Phong, B.T. (1975). "Illumination for Computer Generated Pictures." Communications of the ACM, 18(6).

[3] Sloan, P., Kautz, J., Snyder, J. (2002). "Precomputed Radiance Transfer for Real-Time Rendering in Dynamic, Low-Frequency Lighting Environments." ACM SIGGRAPH 2002.

[4] Olsson, O., et al. (2012). "Clustered Deferred and Forward Shading." High-Performance Graphics 2012.

[5] Green, R. (2003). "Spherical Harmonic Lighting: The Gritty Details." GDC 2003.