aa156ddf0b
- Converted shaders and video players to all run on native linear input. This removes many issues and inconsistencies with smoothing and general movement. - Updated GPU readback to fire events on value change when past a certain threshold for float and int paramater ranges. Added ability to name data points in GPU Readback function script. - Added component sliders to the VRSL DMX and VRSL AudioLink scripts. These sliders replace the final intensity sliders with sliders that control the intensities of the indivdual components of a light (The volumetric, projection, and fixture mesh). - Added "Genereate Unique VRSL Materials" menu button to the VRSL drop down menu under "Utilties". This button will search the scene for any VRSL Materials, make a copy of them, save them in your selected folder, and apply them to your VRSL meshes in your scene as well as to the Local UI Control Panel. This will allow users to seperate their VRSL materials from the prefab materials and applying it to the scene, allowing for users to make changes to their VRSL materials without updates resetting their settings. (The AudioLink component sliders are at the bottom of the script.) - Added the "VRSL GI" toggle prefab toggle to Control Panel. This will allow one to spawn the VRSL GI variants of the standard VRSL prefabs. (VRSL GI 1.2+ Only). - Added global DMX strobe toggle on Local Control Panel asset. Toggling this will disable the strobe channel for the player locally. Useful for those that want to enjoy the light show but can't handle the strobing. - Adjusted the volumetrics 3D noise to scale properly with the mesh. Scaling a spotlight or strobe up should no longer result in wonky noise tiling. - Fixed build errors with the DMX patch exporter scripts (again). - Created Fixture Definition Files and added Fixture Type properties to DMX fixtures. Fixture Definition files are used to create arbitrary data to describe DMX fixture channels. They are mostly cosmetic and used for the DMX patch data exporter. - Added the ability to save and load DMX Patch Data per scene. This is useful for restoring DMX patch settings to scenes due to corruption. - Added the ability to export the patch data as a JSON, MVR (My Virtual Rig), or PDF Patch List. - Added VRSL Manager Window Settings file. This file will start to hold per project data about the VRSL Control Panel. Right now, it holds references to alternate meshes for spotlight and washlight volumetrics. -Added the ability to switch the volumetric meshes in a scene to lower poly versions on the fly. -Improved the spin timer shader to have more consistent and smooth DMX gobo spinning. - Fixed inspector related bugs and improved inspector stability on all VRSL component scripts. - Added prefab load toggles for VRSL GI prefabs into Control Panel (VRSL GI 1.2.0+) - Increased AudioLink Delay range from 30 to 127 - Removed the USharp Video and uDesktopDuplication DMX screen prefabs and placed them in their own packages along with new VideoTXL and ProTV DMX screen prefabs. - Added ability to add and remove DMX Screen prefab packages. TekOSC is the only DMX reader prefab that now comes pre-installed with VRSL, removing USharp Video as a requirement for VRSL. - Reduced the precision of majority of the DMX Render Textures to 16-Bit SFLOAT instead of 32-Bit SFLOAT to reduce VRAM usage. - Auto set all DMX Render Textures to have a period of 0.0 to reduce editor related issues. - Removed the bloom post processing volume prefab from the VRSL-LocalUIControlPanel prefab. - VRSL-LocalUIControlPanel will now hide the bloom slider if it cannot find the bloom post processing volume prefab or it's "Bloom Animator" variable is null. - Fixed bug where you could not edit multiple VRSL scripts at once. - Re-Added Texture Sampling features for the AudioLink Discoball. - Added the "Singal Detection System" for interpolation CRT shaders. This system will allow users to disable VRSL DMX if pixels that are not related to the VRSL DMX Grid node are detected (in cases of the video player freezing or disconnecting or an invalid video format was inputted.) This system is disabled by default but can be enabled in the inspector of any of the interpolation CRTs. - Added per fixture toggle to disable black-to-white conversion when texture sampling mode is enabled on audiolink fixtures. - Added Global Intensity Blend property to all shaders. - Removed all `.Blend`and `.Blend1` files |
||
---|---|---|
.. | ||
Editor | ||
Runtime | ||
CHANGELOG.md | ||
CHANGELOG.md.meta | ||
Editor.meta | ||
LICENSE | ||
LICENSE.meta | ||
package.json | ||
package.json.meta | ||
README.md | ||
README.md.meta | ||
Runtime.meta |
VR Stage Lighting is a collection of shaders, scripts, and models designed to emulate professional stage lighting into VRChat in as many ways as possible.
VR Stage Lighting is a year-long project that started out as a means to research and develop a performant/reliable way to send lighting data (including DMX512) to VRChat. It has evolved into creating a package of assets that can bring quality lighting effects in all manner of ways performantly.
This performance is provided through a standardized set of custom shaders that avoid things such as real-time unity lights and using cost saving measures such as GPU-instancing and batching.
SEE ALL THESE SYSTEMS LIVE IN VRCHAT @ CLUB ORION
IMPORTANT
- These systems are designed for world building on VRChat for PC. While some of the shaders in theory could be used on avatars, they are primarily designed to be placed in a PC world.
- This system is still a work in progress and is planned for long-term support as more VRChat features are released. Planned features include OSC support and Quest-Ready alternatives.
- For proper documentation, please refer to the github wiki.
Setup
Requirements
- Unity 2019.4
- VRChat SDK3 for Worlds
- UdonSharp
- USharp Video Player
- PostProcessing Stack V2 (Unity Package Manager)
- AudioLink v2.7+ (Full)
- Recommended: Open Broadcast Software (or streaming software of your choice)
- Recommended: VRSL Grid Node (For DMX control)
- Recommended: At least one extra screen that can support 16:9 resolutions.
Installation
See the Project Setup page on the wiki.
About VRSL
DMX Via Video Artnet Gridnode
What powers VRSL is the ability to transmit DMX data contained within a video stream. It is done this way as it is the best way to achieve the following goals:
- Having all players within their own instances of a world be synced.
- Allowing a given world to display data that any given user wishes.
- Allowing for live performances.
This is the main system this project was based on. Once in unity, VRSL can convert data it reads from a VRChat Player video into DMX data that the lighting system can read.
This system is powered 95% by shaders, including the actual method of reading the pixels from the screen. The other 5% is to enable GPU instancing for the shaders and certain properties. There is also basic "RAW" Udon support for when DMX Support is disabled for these shaders.
The appeal of this system is that it allows any software or hardware that supports Artnet to control VRSL lights in real time with entirely hardware-accelerated computation with nearly unrivaled performance for the end user.
This repository comes with an example recorded video in an example scene of the lights in action as well as the grid system they're reacting to. The video is placed in an example scene where the same lights are set-up to re-react to the video in real time, mimicing the actions of the lights shown in the example video.
Get the Artnet Gridnode
While VRSL's lights and shaders are open source, Artnet Grid Node is not.
Purchasing a copy of the VR Stage Lighting Grid Node will help in the development of both the node grid and the VRSL framework!
OSC and MIDI output is also included with this grid system for when VRChat officially supports it via Udon.
You can purchase a copy here, and your support will be greatly appreciated! <3
It is not required for use with AudioLink.
Local UI Panel
A UI panel that can control the intensity of the different lighting shaders is also included. Plop this panel in your world to allow users to locally control the brightness of each aspect of the lights, or all lights at once. It also includes a slider for bloom intensity and a pre-made post processing volume for it.
Audio Reaction via AudioLink
A varation of these shaders support AudioLink by llealloo.
These shaders will have their intensity's react to the audio at different frequencies. They use the shader implementation of AudioLink for minimal overhead. There is also basic "RAW" Udon support that is enabled alongside AudioLink which inclues GPU Instanced properties and mover target following.
An example scene is included that show the different light types reacting to the different frequency bands of audio.
You can get Audiolink as well as learn more about it here!
Limitations
- This system requires using a livestream, meaning there will be some unavoidable latency for realtime setups.
- Compression artifacting can cause movement data to be scrambled a bit. VRSL works to compensate for the scrambling somewhat, but does make the movement much slower.
- Light fixtures have the ability to set to control the smoothing intensity, but it is recommended to keep the smoothing at maximum (which is 0) for most situations.
- If quicker movement is needed, it is recommended to do it in small bursts, quickly returning the smoothing back to maximum when you can.
Wiki
More information about VRSL and many helpful tutorials can be found on this repo's wiki.
Support
If you'd like to support the project, you can do so via patreon, where you can also get some VRSL exclusives!~
You can also join the official VRSL discord!