Thorinair / LumaDriver

An unofficial VRChat world-side plugin designed to drive the Furality avatar shaders. NOTE: This project is a derivative work and is not part of Furality Online Xperience or created by Furality, Inc.
MIT License
31 stars 3 forks source link

If you are looking for the ChilloutVR version, click here.

LumaDriver

An unofficial VRChat world-side plugin designed to drive the various Furality shaders. Built up from scratch and inspired by workings of AudioLink. Capable of powering the following:

NOTE: This project is a derivative work and is not part of Furality Online Xperience or created by Furality, Inc.

A live demo is available in the Luminescent Ledge VRChat world!

Features

Requires: AudioLink v0.2.6+ for the integration to properly function.

Optional: VR Stage Lighting v1.10+ for DMX functionality. (NOTE: Currently doesn't support horizontal layout.)

Usage

  1. Import the Unity package.
  2. Drag the LumaDriver prefab into the scene.
  3. Make sure it is far away from the scene. It should be on Y=1000000 by default.
  4. If you wish to use AudioLink, you will have to enable it. Check the AudioLink section below to see how to do that.
  5. If you wish to use VRSL DMX, you will have to enable it. Check the DMX Control section below to see how to do that and read through the VRSL Fixture Definition section to familiarize yourself with how the fixtures are defined.
  6. You are done! Enjoy the beautiful glow once more! Check below for customization options for the driver...

Customization

If you want to play around with the parameters, open the CustomRenderTexture in the following location: LumaDriver/CustomRenderTexture/LumaDriver_CRT, expand the shader parameters to be able to modify them to your liking. The parameters are split up on four separate pages for easier navigation.

Main Options

alt text

This page allows for customization of global features of the driver.

Idle Animations

alt text

This page allows for adjusting the behavior of idle animations. These are the slowly scrolling and fading animations usually present when there is no music playing.

AudioLink

alt text

This page allows for adjusting the way how AudioLink interfaces with the driver. All Color Control options can use either AudioLink's Theme Colors or ColorChord feature in order to have interesting and dynamic colors when music is playing. In order to enable AudioLink integration, follow the steps:

  1. Import AudioLink package and set it up in the world following official instructions.
  2. Check the Enabled checkbox on AudioLink page in LumaDriver's configuration.

Below are explanations for different configuration options:

Color Overrides

alt text

This page allows for overriding the colors in all of the zones and bands. This can be useful for pushing custom colors to the driver using Udon, or for debugging purposes.

DMX Control

alt text

This page allows for adjusting the way how VRSL interfaces with the driver. VRSL is a powerful way of delivering DMX data through a video feed in order to control LumaDriver in sync to a DJ set in a club environment. The integration can adjust intensities of all 4 zones and 3 gradients, change the colors and trigger strobe effects. In order to enable VRSL DMX integration, follow the steps:

  1. Import VRSL package and set it up in the world following official instructions.
  2. Check the Enable DMX checkbox on DMX Control page in LumaDriver's configuration.
  3. Make sure that the correct texture is assigned to the DMX Render Texture slot. It should be set automatically, but if not, it should reference the render texture that comes with the VRSL package and is located in the following path: Assets\VRStageLighting\VR-Stage-Lighting\Textures\DMXRTViewer-RAWValues
  4. Choose which fixture you wish to use using Fixture ID. Note that LumaDriver takes up two sector slots, meaning that if you set for instance the ID to be 5, it will use sectors 5 and 6.

Below are explanations for different configuration options:

VRSL Fixture Definition

alt text

Above is the definition for VRSL DMX fixture(s) which represent LumaDriver.

Making Your Own Shader

Want to make your own LumaDriver compatible shader? The texture is accessible under the name _Stored and has a resolution of 512x288 pixels You can access the texture generated by the driver by getting it with the following in your shader:

uniform sampler2D _Stored;

alt text

Below is a table which lists locations of individual pixels and gradients, along with their functionality:

Data Location Channels Description
Luma ON 0.629, 0.511 Red Controls whether old Luma Glow Shader and Aqua Shader are running. Always 255 red.
Zone 1 (Heros 1) 0.856, 0.522 RGB Applies color for the Luma Glow Zone 1. Also counts as Heros 1.
Zone 2 (Villains 1) 0.856, 0.507 RGB Applies color for the Luma Glow Zone 2. Also counts as Villains 1.
Zone 3 (Heros 2) 0.864, 0.522 RGB Applies color for the Luma Glow Zone 3. Also counts as Heros 2.
Zone 4 (Villains 2) 0.864, 0.507 RGB Applies color for the Luma Glow Zone 4. Also counts as Villains 2.
Gradient 1 0.570 - 0.677, 0.493 RGB Applies the Gradient 1 data for Legendary Shader. Has a range along X axis.
Gradient 2 0.680 - 0.788, 0.493 RGB Applies the Gradient 2 data for Legendary Shader. Has a range along X axis.
Gradient 3 0.791 - 0.898, 0.493 RGB Applies the Gradient 3 data for Legendary Shader. Has a range along X axis.
Audio Reactive Lows 0.578, 0.515 Red Sends the Audio Reactive Lows data for Legendary Shader.
Audio Reactive Highs 0.578, 0.515 Green Sends the Audio Reactive Highs data for Legendary Shader.