Skip to main content

Overview

VRSL’s DMX control system allows you to transmit professional DMX512 lighting data into VRChat through a video stream. This enables synchronized, real-time control of stage lighting across all players in an instance.
The Artnet Grid Node is a separate commercial product available on Gumroad. While VRSL’s shaders and scripts are open source, the Grid Node software is required for DMX functionality.

How It Works

The system encodes DMX data as pixels in a video grid, which is then streamed to VRChat. VRSL’s shaders read these pixels and convert them back to lighting data - all processed on the GPU for maximum performance.

Key Advantages

  • Universal Sync: All players see the same lighting in real-time
  • Hardware Accelerated: 95% shader-based computation
  • Industry Standard: Works with any Artnet-compatible software or hardware
  • Live Performance Ready: Enables real-time lighting control during events

Prerequisites

Required Software

  • Unity 2019.4 or newer
  • VRChat SDK3 for Worlds
  • UdonSharp
  • VRSL package (via VPM)
  • AudioLink v2.7+ (recommended)
  • Streaming software (OBS Studio recommended)

Required Hardware

  • At least one extra monitor (16:9 resolution recommended)
  • Sufficient GPU for encoding video stream
  • Stable internet connection for streaming

Optional

  • VRSL Artnet Grid Node software
  • DMX lighting console or software (QLC+, LightKey, etc.)

Installation Steps

1
Install VRSL via VPM
2
  • Visit vpm.vrsl.dev and add the VRSL repository to VCC
  • Open your VRChat world project in VCC
  • Add “VR Stage Lighting” package to your project
  • Wait for Unity to import all assets
  • 3
    Add the Control Panel
    4
  • In Unity, navigate to VRSL > Control Panel menu
  • Click “Spawn VRSL-LocalUIControlPanel”
  • Position the control panel in your scene
  • Configure DMX mode:
    • Horizontal Mode (default, recommended for new setups)
    • Vertical Mode (alternative layout)
    • Legacy Mode (for backwards compatibility)
  • 5
    Horizontal mode offers better compression resilience and is recommended for most streaming setups.
    6
    Add a DMX Video Reader
    7
  • In the VRSL Control Panel, navigate to the “Spawns” section
  • Choose a video reader based on your video player:
    • TekOSC Grid Reader (included, uses OSC)
    • USharpVideo DMX Screen (requires USharpVideo package)
    • ProTV DMX Screen (requires ProTV package)
    • VideoTXL DMX Screen (requires VideoTXL package)
  • Click the spawn button for your chosen reader
  • Position the video screen where players can see it (or hide it if using OSC)
  • 8
    Configure the Video Reader
    9
  • Select the spawned video reader object
  • Set the correct DMX mode (must match Control Panel setting)
  • Configure video player settings:
    • Set video URL to your stream
    • Enable looping if testing with recorded video
    • Adjust resolution to match your grid (typically 1920x1080)
  • 10
    Add DMX Fixtures
    11
  • Open VRSL Control Panel
  • In the “Spawns” section, select fixture type:
    • Spotlight - Moving head spot light
    • Washlight - Moving head wash light
    • Blinder - High-intensity strobe/blinder
    • Flasher - Compact strobe light
    • PAR Light - Static PAR can
    • Light Bar - Multi-cell light bar
    • Disco Ball - Mirror ball effect
  • Choose DMX variant (horizontal, vertical, or legacy)
  • Place fixtures in your scene
  • 12
    Configure Fixture DMX Addressing
    13
  • Select a fixture in the hierarchy
  • In the Inspector, find the VRStageLighting_DMX_Static component
  • Configure addressing:
    • DMX Universe: 1-9 (enable Extended Universes in Control Panel for 2-9)
    • DMX Channel: Starting channel (1-512)
    • Fixture ID: Unique identifier for vertical/legacy modes
  • Set movement limits:
    • Max/Min Pan: Horizontal rotation range
    • Max/Min Tilt: Vertical rotation range
  • Configure fixture properties:
    • Global Intensity: Master brightness
    • Light Color Tint: Base color
    • Cone Width/Length: Beam size
  • Setting Up Artnet Grid Node

    This section requires the commercial Artnet Grid Node software. Skip this if you’re testing with pre-recorded DMX video.

    Configure Grid Node Output

    1. Launch Artnet Grid Node application
    2. Select your output resolution (1920x1080 recommended)
    3. Choose grid mode:
      • Horizontal: Matches VRSL Horizontal Mode
      • Vertical: Matches VRSL Vertical Mode
      • Legacy: Matches VRSL Legacy Mode
    4. Configure Artnet input:
      • Set IP address (usually 127.0.0.1 for local)
      • Enable universes you’re using (1-9)
      • Set frame rate (30fps recommended)

    Route Grid Node to Streaming Software

    1. In OBS Studio, add a Window Capture or Display Capture source
    2. Select the Artnet Grid Node window
    3. Scale to fill your stream output (1920x1080)
    4. Add to your streaming scene
    Use a dedicated monitor for the Grid Node output to avoid capture issues. Set it to 1920x1080 resolution for best results.

    Connect Your Lighting Software

    1. In your DMX software (QLC+, LightKey, etc.):
    2. Enable Artnet output
    3. Set IP to 127.0.0.1 (or Grid Node PC IP if networked)
    4. Configure universes to match your fixtures
    5. Patch your fixtures to DMX channels matching Unity setup

    Streaming Configuration

    OBS Settings

    Video Settings:
    • Base Resolution: 1920x1080
    • Output Resolution: 1920x1080
    • FPS: 30 (or 60 for smoother movement)
    Encoder Settings:
    • Encoder: x264 or NVENC
    • Rate Control: CBR
    • Bitrate: 6000 kbps minimum (higher is better)
    • Keyframe Interval: 2
    • Preset: Quality or High Quality
    Critical: Disable any compression or quality loss features:
    • No downscaling filters
    • No sharpening
    • No color correction on the DMX grid source
    • Use “Lanczos” scaling filter if resizing is necessary

    Minimizing Latency

    In OBS:
    • Use Studio Mode to avoid cut transitions
    • Reduce output delay settings
    • Use wired network connection
    In Unity/VRChat:
    • Position video screen close to spawn point
    • Use higher bitrate streams
    • Enable interpolation in CRT materials for smoother movement

    Testing Your Setup

    1
    Test in Unity Editor
    2
  • Enter Play Mode in Unity
  • Check VRSL Control Panel:
    • Verify correct DMX mode is active
    • Confirm Custom Render Textures are updating
  • Open Scene view to see fixture gizmos
  • Send test DMX data from your lighting console
  • 3
    Test Interpolation
    4
  • In VRSL Control Panel > Options > CRT Materials
  • Select Movement Interpolation material
  • Adjust smoothing values:
    • Minimum Smoothness: 0 = most smooth (default)
    • Maximum Smoothness: 1 = no smoothing
  • Test fixture movement at different smoothing levels
  • 5
    Keep smoothing at maximum (0) for best compression artifact compensation. Only reduce smoothing temporarily if you need quick fixture movements.
    6
    Test in VRChat
    7
  • Build and publish your world
  • Enter the world in VRChat
  • Verify video stream is playing correctly
  • Test all DMX channels and fixture responses
  • Check sync across multiple users
  • Common Issues

    Fixtures Not Responding

    Check:
    • DMX mode matches between Control Panel, Video Reader, and Grid Node
    • Video stream is playing (not frozen or buffering)
    • DMX addressing is correct (universe and channel)
    • Fixtures are enabled in Control Panel
    • Custom Render Textures are set to Realtime update mode

    Jittery or Erratic Movement

    Solutions:
    • Increase stream bitrate (minimum 6000 kbps)
    • Enable interpolation in CRT movement material
    • Keep smoothing at maximum (0) for most situations
    • Check for compression artifacts in stream
    • Use wired network connection instead of WiFi

    Delayed Response

    Reduce latency by:
    • Using lower-latency streaming protocol
    • Reducing keyframe interval
    • Minimizing network hops
    • Using local streaming server
    • Enabling hardware encoding (NVENC/Quick Sync)

    Color Incorrect or Washed Out

    Verify:
    • Color space is set to Linear in Unity (Project Settings > Player)
    • No color correction filters on DMX grid in OBS
    • Stream using lossless or high quality preset
    • Video compression is not too aggressive

    Advanced Configuration

    Extended Universes (9 Universe Mode)

    1. In VRSL Control Panel, enable “Extended Universes”
    2. This enables DMX Universes 1-9 (4590 channels total)
    3. All fixtures will automatically update to support 9-universe mode
    4. Configure Grid Node to output multiple universes

    Signal Detection System

    For interpolated CRT shaders:
    1. Select the interpolation CRT material
    2. Enable “Signal Detection System”
    3. This automatically disables DMX when invalid video is detected
    4. Useful for preventing issues during stream disconnects

    Custom Fixture Profiles

    See Creating Custom Fixtures for detailed instructions on creating your own fixture definitions.

    Best Practices

    For Live Performances:
    • Test your full setup at least 24 hours before the event
    • Have backup pre-recorded DMX video ready
    • Use dedicated streaming hardware
    • Monitor stream health throughout the event
    • Have a “lights off” fallback state
    Optimization:
    • Use GPU instancing (automatic with VRSL)
    • Keep fixture count under 50 per universe for best performance
    • Use appropriate volumetric quality settings
    • Disable depth light requirement on Quest builds
    • Use stencil masks to prevent light bleed into other rooms
    Workflow:
    • Organize fixtures into clear hierarchy (Universe 1, Universe 2, etc.)
    • Name fixtures descriptively (“Spot-Truss-Front-L”)
    • Save DMX patch data using VRSL’s patch export feature
    • Document your DMX addressing scheme
    • Use fixture groups in lighting console for easier control

    Next Steps

    Resources

    Build docs developers (and LLMs) love