VHS 1980 VR Effects
Authentic 1980s VHS aesthetic with 7 effect categories and 5 movie-style presets for Unity VR.
Professional Editors Tools for editing for Building and manipulating 3D gameobjects directly in Unity.
Explore Tools →Authentic 1980s VHS tape aesthetic for Unity. 7 effect categories, 5 movie presets (Blade Runner, Terminator, Miami Vice), VR-optimized with chroma bleed, scanlines, and CRT simulation.
View Product →Unity Editor plugin for editing 3D Gaussian Splats. Visual tools for selection, transformation, and real-time preview. Import/Export PLY, batch operations, VR-ready.
Learn More →Authentic 1980s VHS aesthetic with 7 effect categories and 5 movie-style presets for Unity VR.
Visual tools for selection, transformation, and real-time preview of 3D Gaussian Splats.
A novel approach for real-time fake relighting without surface normals.
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.
The system is organized into 7 main categories:
5 authentic movie-style presets recreate iconic visual aesthetics:
Preset Overview
| Preset | Style | Key Features |
|---|---|---|
| Blade Runner (1982) | Neo-noir sci-fi | Neon highlights, cool tones, phosphor glow |
| The Terminator (1984) | Gritty sci-fi | Blue tint, high contrast, heavy grain |
| Miami Vice (1984) | Stylish TV | Pastel neon, warm saturated, clean look |
| Friday the 13th (1980) | Classic horror | Desaturated, green tint, tape damage |
| The Goonies (1985) | Adventure comedy | Warm vibrant colors, light grain |
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.
$36 — Buy Now →
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.
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.
$79 — Coming Soon →
A Novel Approach to Dynamic Lighting in Billboard-Based Volumetric Rendering
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
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.
I introduce a fake relighting system that provides:
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.
Figure 1: Billboard primitives maintain camera-facing orientation regardless of viewpoint
Traditional lighting models (Lambert, Phong, BRDF) require stable surface normals computed from geometry. For billboards, three approaches exist:
My approach treats the view direction as the effective surface normal. This is justified for Gaussian Splats because:
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
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} \)
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:
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} \)
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 \)
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.
The lighting computation follows an additive accumulation strategy with computational complexity O(1 + Npoint + Nspot) per fragment.
Per-fragment instruction count: Base(30) + 12×Npoint + 18×Nspot instructions
Table 1: Per-Fragment Cost Breakdown
| Operation | Instructions | Notes |
|---|---|---|
| View normal calculation | 3 | normalize(camera - worldPos) |
| Ambient SH evaluation | 15-25 | Depends on SH order |
| Directional light | 8 | NdotL + attenuation |
| Per point light | 12 | Vector ops + distance calc |
| Per spot light | 18 | Additional cone calculation |
| SSAO sample | 2 | Texture fetch + lerp |
Table 2: Performance Measurements (RTX 3080, 2560×1440, 2M splats)
| Configuration | FPS | Frame Time | GPU Utilization |
|---|---|---|---|
| No custom lights | 142 | 7.0 ms | 45% |
| + 4 point lights | 138 | 7.2 ms | 47% |
| + 2 spot lights | 135 | 7.4 ms | 48% |
| + Shadows + SSAO | 125 | 8.0 ms | 52% |
Table 3: Light Count Scaling
| Light Count | FPS | Overhead |
|---|---|---|
| 0 lights | 142 | — |
| 10 lights | 128 | 9.8% |
| 20 lights | 118 | 16.9% |
| 50 lights | 95 | 33.1% |
My method produces:
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
[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.