VRStageLighting_DMX_Static component is the primary script for controlling DMX-enabled stage lighting fixtures in VRChat worlds. It provides industry-standard DMX channel control, fixture movement, intensity management, and visual properties.
Overview
This component enables fixtures to receive DMX data from external lighting control software through the VRSL Grid system. It supports both modern DMX channel addressing and legacy sector-based addressing.Inspector Properties
DMX Settings
bool
default:"true"
Enables DMX mode for this fixture. When enabled, the fixture will respond to DMX data from the grid.
int
default:"0"
Optional ID number for organizational purposes. Useful for identifying fixtures in Udon scripts and matching IDs from DMX software.
int
default:"1"
The industry standard DMX channel this fixture begins on. Standard VRSL fixtures use 13 channels.
int
default:"1"
The Artnet universe to read DMX data from. Each universe contains 512 channels.
bool
default:"false"
Enables 9-Universe mode for this fixture. The grid will be split by RGB channels with each section and color representing a universe. Only available on Vertical and Horizontal Grid nodes.
bool
default:"false"
Enables the legacy ‘Sector’ based method of assigning DMX Channels. Keep unchecked to use industry standard DMX channels.
bool
default:"false"
Enables single channel DMX mode for fixtures that only require one channel (e.g., Flasher fixtures).
int
default:"0"
(Legacy Mode) Chooses the DMX address sector. A sector is every 13 channels (Sector 0 = channels 1-13, Sector 1 = channels 14-26, etc.).
int
default:"0"
(Single Channel Mode) Specifies which of the 13 channels of the current sector to sample from.
bool
default:"false"
Uses legacy GOBO range values for compatibility with older setups.
General Settings
float
default:"1"
Sets the overall intensity of the shader. Good for animating or scripting effects. Maximum value is controlled by
finalIntensity.float
default:"1"
Sets the maximum brightness value of Global Intensity. Useful for user-controlled brightness settings via UI.
bool
default:"false"
Choose between setting Final Intensity for all meshes together, or individual mesh types separately.
float
default:"1"
Sets maximum brightness for volumetric meshes only (when Component Mode is enabled).
float
default:"1"
Sets maximum brightness for projection meshes only (when Component Mode is enabled).
float
default:"1"
Sets maximum brightness for fixture meshes only (when Component Mode is enabled).
Color
default:"Color.white * 2.0f"
The main color tint of the light. Leave at default white for pure DMX color control.
Movement Settings
bool
default:"false"
Inverts the pan values (Left/Right movement) for moving head fixtures.
bool
default:"false"
Inverts the tilt values (Up/Down movement) for moving head fixtures.
bool
default:"false"
Enable this if the moving head fixture is mounted upside down.
Fixture Settings
bool
default:"true"
Enables projection spinning (Udon Override Only).
bool
default:"true"
Enables strobe effects via DMX control.
float
default:"90"
Tilt (Up/Down) offset/movement. Directly controls tilt in Udon Mode; acts as an offset in DMX mode.
float
default:"0"
Pan (Left/Right) offset/movement. Directly controls pan in Udon Mode; acts as an offset in DMX mode.
int
default:"1"
Selects which projection pattern is displayed. This is overridden in DMX mode.
Mesh Settings
MeshRenderer[]
required
Array of mesh renderers that make up the light fixture. At least one mesh is required.
float
default:"2.5"
Controls the radius of the mover/spot light cone.
float
default:"8.5"
Controls the length of the cone of a mover/spot light.
float
default:"1"
Controls the mesh length of the cone of a mover/spot light.
float
default:"180"
Maximum pan angle range for the fixture.
float
default:"-180"
Maximum tilt angle range for the fixture.
Configuration Steps
Basic DMX Setup
- Add the
VRStageLighting_DMX_Staticcomponent to your fixture GameObject - Assign the fixture’s mesh renderers to the
objRenderersarray - Set the
dmxChannelto the starting channel for this fixture - Set the
dmxUniverseto match your DMX grid configuration - Ensure
enableDMXChannelsis checked
Legacy Sector Mode
If you’re using older VRSL setups:- Enable
useLegacySectorMode - Set the
sectorvalue instead ofdmxChannel - Each sector represents 13 channels (Sector 0 = Ch 1-13, Sector 1 = Ch 14-26, etc.)
Movement Configuration
For moving head fixtures:- Adjust
panOffsetBlueGreenandtiltOffsetBlueto correct the default position - Use
invertPanandinvertTiltif movement directions are reversed - Enable
isUpsideDownif the fixture is mounted inverted - Adjust
maxMinPanandmaxMinTiltto limit movement ranges
Example Setup
Standard Moving Head
Single Channel Flasher
Integration with Other Components
VRSL Grid
The DMX Static component reads data from the VRSL Grid system:- Grid nodes must be configured with matching universe settings
- Use Horizontal or Vertical grid modes for multi-universe setups
- Enable
nineUniverseModeon both grid and fixtures for RGB universe splitting
Local UI Control Panel
The component integrates withVRSL_LocalUIControlPanel for:
- Global intensity control
- Quality settings for volumetric and projection meshes
- DMX mode switching (Horizontal/Vertical/Legacy)
- Per-mesh-type intensity control when using Component Mode
Audio Link Integration
While this is the DMX component, you can switch fixtures between DMX and AudioLink modes using:- The Control Panel to enable/disable DMX rendering
- Udon scripts to toggle
enableDMXChannelsat runtime
Public Methods
_UpdateInstancedProperties()
Forces an update of all material properties. Call this after changing properties via Udon script._SetProps()
Initializes the MaterialPropertyBlock. Called automatically on Start.Udon Script Properties
Access these properties from Udon scripts:LightColorTint- Get/Set the light colorGlobalIntensity- Get/Set global intensity (0-1)FinalIntensity- Get/Set maximum intensity (0-1)ConeWidth- Get/Set cone radiusConeLength- Get/Set cone lengthSelectGOBO- Get/Set selected projection (1-8)Pan- Get/Set pan angle (0-360)Tilt- Get/Set tilt angle (0-360)IsDMX- Get/Set DMX enabled stateInvertPan- Get/Set pan inversionInvertTilt- Get/Set tilt inversion
Performance Notes
- Supports up to 5 mesh renderers per fixture for optimal performance
- Uses MaterialPropertyBlock for GPU instancing
- Component Mode allows separate intensity control for volumetric, projection, and fixture meshes
- Strobe effects can be disabled globally via Control Panel for performance
See Also
- AudioLink Static Component - AudioLink-controlled fixtures
- Grid Reader - OSC communication for DMX data
- Local UI Control Panel - User controls and settings