Skip to main content

Overview

The VRSL_LocalUIControlPanel class provides a comprehensive local UI control system for managing all aspects of VRSL lighting. It handles quality mode switching, intensity controls, DMX grid management, AudioLink settings, and material property updates across all fixture types. This is the central control hub for VRSL in your scene, allowing users to adjust performance and appearance settings to match their system capabilities. Namespace: VRSL
Inherits from: UdonSharpBehaviour (in VRChat) or MonoBehaviour (in Unity)

Quality Modes

volumetricQuality
VolumetricQualityModes
default:"High"
Controls the rendering quality for volumetric lighting effects. Options: High, Medium, Low
lockVolumetricQualityMode
bool
default:"false"
When enabled, prevents users from changing the volumetric quality mode via UI.
blinderProjectionQuality
DefaultQualityModes
default:"High"
Quality setting for blinder projection effects. Options: High, Low
lockBlinderProjectionQualityMode
bool
default:"false"
When enabled, locks the blinder projection quality setting.
parProjectionQuality
DefaultQualityModes
default:"High"
Quality setting for PAR projection effects. Options: High, Low
lockParProjectionQualityMode
bool
default:"false"
When enabled, locks the PAR projection quality setting.
otherProjectionQuality
DefaultQualityModes
default:"High"
Quality setting for other projection effects (non-PAR, non-Blinder). Options: High, Low
lockOtherProjectionQualityMode
bool
default:"false"
When enabled, locks the other projection quality setting.
discoballQuality
DefaultQualityModes
default:"High"
Quality setting for disco ball effects. Options: High, Low
lockDiscoballQualityMode
bool
default:"false"
When enabled, locks the disco ball quality setting.
lensFlareQuality
DefaultQualityModes
default:"High"
Quality setting for lens flare effects. Options: High, Low
lockLensFlareQualityMode
bool
default:"false"
When enabled, locks the lens flare quality setting.

Video Sampling

videoSampleTargetTexture
Texture
default:"null"
The target texture to sample for video-driven lighting effects.

Materials

fixtureMaterials
Material[]
required
Array of all fixture materials in the scene.
volumetricMaterials
Material[]
required
Array of all volumetric materials in the scene.
projectionMaterials
Material[]
required
Array of all projection materials in the scene.
discoBallMaterials
Material[]
required
Array of all disco ball materials in the scene.
laserMaterials
Material[]
required
Array of all laser materials in the scene.

Post Processing

bloomAnimator
Animator
default:"null"
Animator controlling bloom post-processing effects.

UI Sliders

masterSlider
UnityEngine.UI.Slider
Master intensity slider controlling all fixture types.
fixtureSlider
UnityEngine.UI.Slider
Intensity slider for fixture meshes.
volumetricSlider
UnityEngine.UI.Slider
Intensity slider for volumetric effects.
projectionSlider
UnityEngine.UI.Slider
Intensity slider for projection effects.
discoBallSlider
UnityEngine.UI.Slider
Intensity slider for disco ball effects.
laserSlider
UnityEngine.UI.Slider
Intensity slider for laser effects.
bloomSlider
UnityEngine.UI.Slider
Intensity slider for bloom post-processing.

Intensity Maximums

fixtureIntensityMax
float
default:"1.0"
Maximum intensity value for fixtures.
volumetricIntensityMax
float
default:"1.0"
Maximum intensity value for volumetric effects.
projectionIntensityMax
float
default:"1.0"
Maximum intensity value for projections.
discoballIntensityMax
float
default:"1.0"
Maximum intensity value for disco balls.
laserIntensityMax
float
default:"1.0"
Maximum intensity value for lasers.

DMX Configuration

isUsingDMX
bool
default:"true"
Enable/disable DMX functionality in the scene.
Enable/disable AudioLink functionality in the scene.
DMXMode
int
default:"0"
DMX grid mode: 0 = Horizontal, 1 = Vertical, 2 = Legacy
delayStrobeForGI
bool
default:"true"
Delay strobe effects for global illumination baking.
useExtendedUniverses
bool
default:"false"
Enable support for extended DMX universes (9-universe mode).
sperateInGameInterpolationSpeed
bool
default:"true"
Use separate interpolation speed for in-game DMX.
inGameInterpolationModifier
float
default:"1.55"
Modifier for in-game interpolation speed.
outputDebugLogs
bool
default:"false"
Enable debug logging for troubleshooting.

Render Textures

DMX_CRTS_Horizontal
CustomRenderTexture[]
required
Custom render textures for horizontal DMX grid mode.
DMX_CRTS_Vertical
CustomRenderTexture[]
required
Custom render textures for vertical DMX grid mode.
DMX_CRTS_Legacy
CustomRenderTexture[]
required
Custom render textures for legacy DMX grid mode.
Custom render textures for AudioLink.

Volumetric Noise Settings

VolumetricNoise
bool
default:"true"
Enable/disable volumetric noise effects. Automatically disabled on Android/iOS.
RequireDepthLight
bool
default:"true"
Require depth light for volumetric effects. Automatically disabled on Android/iOS.

Strobe Settings

GlobalDisableStrobe
bool
default:"false"
Globally disable all strobe effects across all fixtures.

Public Methods

Quality Control Methods

_SetVolumetricHigh()

Sets volumetric quality to High mode.
public void _SetVolumetricHigh()

_SetVolumetricMed()

Sets volumetric quality to Medium mode.
public void _SetVolumetricMed()

_SetVolumetricLow()

Sets volumetric quality to Low mode.
public void _SetVolumetricLow()

_UpdateAllQualityModes()

Updates all quality modes and applies settings.
public void _UpdateAllQualityModes()

Intensity Control Methods

_SetFinalIntensity()

Sets master intensity for all fixture types.
public void _SetFinalIntensity()

_SetFixtureIntensity()

Sets intensity specifically for fixture meshes.
public void _SetFixtureIntensity()

_SetVolumetricIntensity()

Sets intensity specifically for volumetric effects.
public void _SetVolumetricIntensity()

_SetProjectionIntensity()

Sets intensity specifically for projection effects.
public void _SetProjectionIntensity()

_SetDiscoBallIntensity()

Sets intensity specifically for disco ball effects.
public void _SetDiscoBallIntensity()

_SetLaserIntensity()

Sets intensity specifically for laser effects.
public void _SetLaserIntensity()

_SetBloomIntensity()

Sets bloom post-processing intensity.
public void _SetBloomIntensity()

DMX Control Methods

_CheckDMX()

Checks and updates DMX configuration based on current settings.
public void _CheckDMX()

_SetDMXHorizontal()

Switches to horizontal DMX grid mode.
public void _SetDMXHorizontal()

_SetDMXVertical()

Switches to vertical DMX grid mode.
public void _SetDMXVertical()

_SetDMXLegacy()

Switches to legacy DMX grid mode.
public void _SetDMXLegacy()
Checks and updates AudioLink configuration.
public void _CheckAudioLink()

Video Sampling Methods

_ForceUpdateVideoSampleTexture()

Forces an update of the video sample texture across all materials.
public void _ForceUpdateVideoSampleTexture()

Strobe Control

_ToggleGlobalStrobe()

Toggles the global strobe disable state.
public void _ToggleGlobalStrobe()

Usage Example

// Example: Configuring the control panel
VRSL_LocalUIControlPanel panel = GetComponent<VRSL_LocalUIControlPanel>();

// Set quality modes
panel.volumetricQuality = VolumetricQualityModes.Medium;
panel.parProjectionQuality = DefaultQualityModes.Low;

// Update all quality settings
panel._UpdateAllQualityModes();

// Adjust intensities via code
panel.fixtureIntensityMax = 0.8f;
panel._SetFixtureIntensity();

// Switch to vertical DMX mode
panel.DMXMode = 1; // 1 = Vertical
panel._CheckDMX();

// Disable strobe effects globally
panel.GlobalDisableStrobe = true;

Quality Mode Comparison

Quality LevelRender ModeAlpha TestPerformanceVisual Quality
HighTransparentDisabledHeavyBest
MediumTransparentDisabledModerateGood
LowOpaqueEnabledLightBasic

Performance Tips

  1. Lock quality modes in production to prevent users from selecting performance-heavy settings
  2. Use separate intensity controls to allow users to disable expensive effects (volumetrics, projections)
  3. Enable interpolation reduction for in-game use to improve DMX responsiveness
  4. Disable debug logs in production builds

Build docs developers (and LLMs) love