Overview
The disco ball fixture simulates a traditional mirror ball effect:- Rotating projection pattern
- Cubemap-based rendering
- Single-channel DMX control (intensity only)
- Distance-scaled projection
- Depth-buffer integration for realistic placement
- DMX Horizontal:
VRSL-DMX-Static-DiscoBall-H-1CH.prefab - DMX Vertical:
VRSL-DMX-Static-DiscoBall-V-1CH.prefab - DMX Legacy:
VRSL-DMX-Static-DiscoBall-L-1CH.prefab - AudioLink:
VRSL-AudioLink-DiscoBall.prefab
DMX Channel Layout
The disco ball uses only 1 DMX channel:| Channel | Function | Range | Description |
|---|---|---|---|
| 1 | Intensity | 0-255 | Master brightness (0=off, 255=full) |
Below DMX value ~13 (0.05 normalized), the disco ball is completely disabled to save rendering resources.
Features
Rotation
The disco ball projection rotates automatically:- Rotation Speed: Configurable via
_RotationSpeedshader property - Direction: Controlled by positive (clockwise) or negative (counterclockwise) values
- Range: -180 to +180 degrees per second
- Default: 8.2 degrees/second
Projection System
The effect uses a sophisticated projection system:- Cubemap Texture: 6-sided texture mapped to world geometry
- Depth Integration: Respects scene geometry via depth buffer
- Distance Scaling: Projection scales based on distance from disco ball
- World Space: Projection stays consistent regardless of camera position
Intensity Control
Intensity affects the entire effect:- DMX Control: Channel 1 (0-255)
- Global Intensity: Additional master control (0-1)
- Final Intensity: Maximum brightness limit (0-1)
- Universal Intensity: Additional multiplier
Inspector Properties
DMX Settings
Disco Ball Settings
Intensity Settings
Rendering Settings
Configuration Examples
Basic Setup
- Place disco ball prefab in scene
- Position at desired height (typically ceiling)
- Configure DMX:
- DMX Channel: 1
- DMX Universe: 1
- Enable DMX Channels: ✓
- Adjust appearance:
- Rotation Speed: 8.2 (default)
- Multiplier: 1.0
- Emission: White
Slow Rotation Effect
For gentle, ambient disco ball:Fast Rotation Effect
For energetic party atmosphere:Reverse Rotation
For counterclockwise spin:Color Tinted Disco Ball
For colored effects:Shader Properties
The disco ball uses theVRSL-Discoball.shader:
Location: Runtime/Shaders/Discoball/
Key Shader Features
Depth-Based Rendering:- Samples scene depth buffer
- Projects only on existing geometry
- Respects occlusion automatically
- Mirror-corrected depth calculation
- Stencil Ref: 142
- Comp: NotEqual
- Prevents rendering on certain surfaces
Cubemap Texture
The disco ball projection uses a cubemap texture:Default Texture
- Pre-made disco ball pattern cubemap
- Simulates mirror ball reflections
- Optimized for performance
Custom Textures
To use custom cubemap:- Create/import cubemap texture
- Set texture type to “Cubemap” in import settings
- Assign to
_Cubeproperty in material - Adjust
_Multiplierfor brightness
- Use 512×512 or 1024×1024 resolution per face
- Enable mipmaps for better performance
- Consider lighting and contrast
- Test rotation to ensure seamless wrapping
Use Cases
Dance Floors
- Classic disco atmosphere
- Rotating light patterns on floor and walls
- Combined with colored uplighting
- Synchronized with music (via AudioLink)
Club Environments
- Ambient background effect
- Ceiling-mounted for wide coverage
- Multiple balls for layered effects
- Colored tints for different moods
Event Spaces
- Wedding receptions
- Party venues
- Retro-themed environments
- Photobooth backdrops
Stage Effects
- Concert backgrounds
- Theater productions
- DJ booth accents
- Performance atmospherics
Performance Optimization
Disable When Not Needed
The disco ball auto-disables below threshold:Limit Coverage Area
Position strategically:- Higher placement = wider coverage (more pixels)
- Lower placement = tighter coverage (fewer pixels)
- Adjust brightness instead of size for performance
Reduce Brightness Multiplier
Troubleshooting
Disco Ball Not Visible
- Check DMX channel value is above 13 (~0.05)
- Verify
_EnableDMXis enabled (or set to 0 for manual control) - Ensure
_GlobalIntensityand_FinalIntensity> 0 - Check disco ball is positioned where it can project onto geometry
- Verify cubemap texture is assigned
Projection Looks Wrong
- Check
_UseWorldNormsetting (try toggling) - Verify cubemap texture is properly formatted
- Ensure scene has geometry to project onto
- Check depth texture is being generated (camera settings)
Not Rotating
- Verify
_RotationSpeedis not zero - Check that time is advancing (not paused)
- Try higher rotation speed to make movement visible
Too Bright/Too Dim
- Adjust
_Multiplierfor overall brightness - Modify DMX channel value (if in DMX mode)
- Change
_GlobalIntensityfor master control - Boost
_Emissioncolor for HDR intensity
Flickering or Artifacts
- Check depth buffer is enabled on camera
- Verify
_ClippingThresholdis appropriate (try 0.5) - Adjust
_RenderMode(try AlphaToCoverage) - Check for z-fighting with other transparent objects
Projection Appears on Wrong Surfaces
- Adjust stencil settings if needed
- Check that surfaces have proper render queue
- Verify depth buffer is correctly configured
- Consider adjusting
_BlendDstmode
AudioLink Integration
AudioLink disco ball variant supports:- Intensity Modulation - Brightness reacts to audio
- Band Selection - Choose frequency range
- Color Chord - Auto-color from music
- Theme Colors - Match AudioLink theme
AudioLink Setup Example
- Enable AudioLink
- Select bass band for thumping effect
- Adjust band multiplier for intensity range
- Consider color chord for dynamic colors
Advanced Techniques
Multiple Disco Balls
Layer multiple balls for complex effects:Synchronized Rotation
Match rotation to music tempo:Dynamic Control
Use Udon to modify properties at runtime:Custom Projections
Create themed effects with custom cubemaps:- Star Field - Space theme
- Geometric Patterns - Modern/abstract
- Nature Scenes - Organic projections
- Logo/Brand - Corporate events