1
0
mirror of https://github.com/AcChosen/VR-Stage-Lighting.git synced 2024-11-13 18:50:48 +01:00

Merge pull request #15 from AcChosen/acchosen-dev

VRSL Quest and VPM Update
This commit is contained in:
AcChosen 2022-11-30 09:31:28 -05:00 committed by GitHub
commit b31e5f6d54
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1492 changed files with 1343 additions and 251 deletions

2
.gitattributes vendored
View File

@ -1,2 +0,0 @@
# Auto detect text files and perform LF normalization
* text=auto

67
.github/workflows/build-listing.yml vendored Normal file
View File

@ -0,0 +1,67 @@
name: Build Repo Listing
on:
workflow_dispatch:
workflow_run:
workflows: [Build Release]
types:
- completed
release:
types: [published, created, edited, unpublished, deleted, released]
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
# Allow one concurrent deployment
concurrency:
group: "pages"
cancel-in-progress: true
env:
listPublishDirectory: Website
pathToCi: ci
jobs:
build-listing:
name: build-listing
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3 # check out this repo
- uses: actions/checkout@v3 # check out automation repo
with:
repository: vrchat-community/package-list-action
path: ${{env.pathToCi}}
clean: false # otherwise the local repo will no longer be checked out
- name: Restore Cache
uses: actions/cache@v2
with:
path: |
${{env.pathToCi}}/.nuke/temp
~/.nuget/packages
key: ${{ runner.os }}-${{ hashFiles('**/global.json', '**/*.csproj') }}
- name: Build Package Version Listing
run: ${{env.pathToCi}}/build.cmd BuildRepoListing --root ${{env.pathToCi}} --list-publish-directory $GITHUB_WORKSPACE/${{env.listPublishDirectory}}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Setup Pages
uses: actions/configure-pages@v2
- name: Upload artifact
uses: actions/upload-pages-artifact@v1
with:
path: ${{env.listPublishDirectory}}
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v1

57
.github/workflows/release.yml vendored Normal file
View File

@ -0,0 +1,57 @@
name: Build Release
on:
workflow_dispatch:
push:
branches: main
paths: Packages/com.acchosen.vr-stage-lighting/**
env:
packageName: "com.acchosen.vr-stage-lighting"
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: get version
id: version
uses: notiz-dev/github-action-json-property@7c8cf5cc36eb85d8d287a8086a39dac59628eb31
with:
path: "Packages/${{env.packageName}}/package.json"
prop_path: "version"
- run: echo ${{steps.version.outputs.prop}}
- name: Set Environment Variables
run: |
echo "zipFile=${{ env.packageName }}-${{ steps.version.outputs.prop }}".zip >> $GITHUB_ENV
echo "unityPackage=${{ env.packageName }}-${{ steps.version.outputs.prop }}.unitypackage" >> $GITHUB_ENV
- name: Create Zip
uses: thedoctor0/zip-release@09336613be18a8208dfa66bd57efafd9e2685657
with:
type: "zip"
directory: "Packages/${{env.packageName}}/"
filename: "../../${{env.zipFile}}" # make the zip file two directories up, since we start two directories in above
- run: find "Packages/${{env.packageName}}/" -name \*.meta >> metaList
- name: Create UnityPackage
uses: pCYSl5EDgo/create-unitypackage@e28c7a4616b2754c564b0a959a03b3c89b756fdb
with:
package-path: ${{ env.unityPackage }}
include-files: metaList
- name: Make Release
uses: softprops/action-gh-release@1e07f4398721186383de40550babbdf2b84acfc5
with:
tag_name: ${{ steps.version.outputs.prop }}
files: |
${{ env.zipFile }}
${{ env.unityPackage }}
Packages/${{ env.packageName }}/package.json

26
.gitignore vendored
View File

@ -1,6 +1,6 @@
# This .gitignore file should be placed at the root of your Unity project directory
#
# Get latest from https://github.com/github/gitignore/blob/main/Unity.gitignore
# Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore
#
/[Ll]ibrary/
/[Tt]emp/
@ -8,20 +8,18 @@
/[Bb]uild/
/[Bb]uilds/
/[Ll]ogs/
/[Uu]ser[Ss]ettings/
# MemoryCaptures can get excessive in size.
# They also could contain extremely sensitive data
/[Mm]emoryCaptures/
/[Aa]ssets/
/[Pp]rojectSettings/
# Recordings can get excessive in size
/[Rr]ecordings/
# Asset meta data should only be ignored when the corresponding asset is also ignored
!/[Aa]ssets/**/*.meta
# Uncomment this line if you wish to ignore the asset store tools plugin
# /[Aa]ssets/AssetStoreTools*
# Autogenerated Jetbrains Rider plugin
/[Aa]ssets/Plugins/Editor/JetBrains*
[Aa]ssets/Plugins/Editor/JetBrains*
# Visual Studio cache directory
.vs/
@ -57,16 +55,12 @@ sysinfo.txt
# Builds
*.apk
*.aab
*.unitypackage
*.app
# Crashlytics generated file
crashlytics-build.properties
# Packed Addressables
/[Aa]ssets/[Aa]ddressable[Aa]ssets[Dd]ata/*/*.bin*
# Temporary auto-generated Android Assets
/[Aa]ssets/[Ss]treamingAssets/aa.meta
/[Aa]ssets/[Ss]treamingAssets/aa/*
.idea/.idea.vpm-package-maker/.idea
Assets/PackageMakerWindowData.asset*
.idea
.vscode

7
Packages/.gitignore vendored Normal file
View File

@ -0,0 +1,7 @@
/*/
!com.vrchat.core.*
com.vrchat.core.vpm-resolver
# Change this to match your new package name
!com.acchosen.vr-stage-lighting

View File

@ -0,0 +1,18 @@
# VR Stage Lighting - Changelog
## v2.2.0 - November 30th, 2022
### New Features
- Created this changelog!
- VR Stage Lighting is now a VPM package to be used with the VRChat creator companion. This is now the officially supported way of installing VR Stage Lighting.
- Added scene based depth light dependency toggle in control panel. Allows VR Stage Lighting shaders to become "Quest Compatible" by removing the reliance on the depth texture to function. This feature is also functional with PC.
- Added scene based 3D noise toggle in control panel. Allows ability to toggle the 3D and 2D noise features of volumetric shaders to reduce overhead on the fragment shaders. Useful for improving performance on Quest.
- Added support for AudioLink Theme Colors on all audiolink compatible lights.
- Added color chord support for audiolink disco ball.
- Added VRSL Stencil Masks. These 3D meshs will block or "mask" any and all VRSL projection and volumetric shaders. This is useful for preventing VRSL lights from leaking into adjacent rooms and hallways.
### Changes and Bugfixes
- This version of VRSL now requires AudioLink 0.3.0 or newer.
- Fixed the audiolink washlight volumetric from clipping into the fixture.
- Added a proper spawn button for the "VRSL Edition" of the AudioLink Prefab.

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: cc1642cf3db5aa44cb2c65c8526e1600
guid: f8bbdcad4b336f54c9a7f317e47257e5
TextScriptImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 435bc749c8f099b409956fa004727890
guid: 17ef41af917225b4897b9656861a172f
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 121833ff7c66a194ab23aada7ca18cf0
guid: dfadc66da278dd248bd3c1e164c8147e
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 52 KiB

View File

Before

Width:  |  Height:  |  Size: 175 KiB

After

Width:  |  Height:  |  Size: 175 KiB

View File

Before

Width:  |  Height:  |  Size: 9.8 KiB

After

Width:  |  Height:  |  Size: 9.8 KiB

View File

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

View File

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View File

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

Before

Width:  |  Height:  |  Size: 7.7 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

View File

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2022 AcChosen
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 3b2fd93ed42c5ec40aad0da285510990
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,7 @@
Copyright 2021 AcChosen
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 9fdb6eb9923e3144a864328cb6dd3390
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,103 @@
![vrsl-compact](https://user-images.githubusercontent.com/107726700/194073524-eb74f90e-2d40-440c-adea-38a5e0d4ec19.png)
<h2 align="center"> 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.</h2>
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](https://vrchat.com/home/launch?worldId=wrld_b2d9f284-3a77-4a8a-a58e-f8427f87ba79)
## 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](https://github.com/AcChosen/VR-Stage-Lighting/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](https://github.com/AcChosen/VR-Stage-Lighting/wiki/Getting-Started:-Project-Setup) page on the wiki.
## About VRSL
<p align="center">
<img src="https://user-images.githubusercontent.com/107726700/194073714-4685c990-a23b-474d-b2a5-beff83d9e8c8.gif">
</p>
### DMX Via Video Artnet Gridnode
![artnet-gridnode](https://user-images.githubusercontent.com/107726700/193886336-c6df8417-d0b3-464d-b5e3-c5d0df023c6c.png)
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](https://gumroad.com/l/xYaPu) 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](https://gumroad.com/l/xYaPu), 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](https://github.com/llealloo/vrc-udon-audio-link).
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](https://github.com/llealloo/vrc-udon-audio-link)!
### 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.
<p align="center">
<img src="https://user-images.githubusercontent.com/107726700/194075483-c4eb51fb-40da-4974-9820-bfb1ede75ab4.gif">
</p>
## Wiki
More information about VRSL and many helpful tutorials can be found on this [repo's wiki](https://github.com/AcChosen/VR-Stage-Lighting/wiki).
## Support
If you'd like to support the project, you can do so via [patreon](https://www.patreon.com/ac_chosen), where you can also get some VRSL exclusives!~
You can also join the official [VRSL discord](https://discord.gg/zPktZAe48r)!

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: b5e9530498ab6ef44ae1187db9dca1c1
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 3d76ea92d99ca8643a5f02e0281bf46a
guid: 74d91f2ac4feb524387cb2e9c1d410e8
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 908b30de1a231454fa48863dab7f5c5a
guid: edb1600d479003f49879d0297e42f9af
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: cd431206143b4f4428230b993468377e
guid: bddfeed727850fb4184d7828c5145fff
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: ea75930d455a084409f653b988aff949
guid: 324452ab40576364aafed2aee869003d
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 4a0df2ec7cccdfa46acac998c7073f21
guid: 189935225a0628d4eb3b84d99dc78388
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: b5c29e988a8cb2f40bdb9e7fa6adbea3
guid: ef0880ab42002e74f8e496c62de3566a
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 5f2f1f2f0ede2884cb417bc07079fbd1
guid: 873bf6b1bfc1217498260c86d71789e0
folderAsset: yes
DefaultImporter:
externalObjects: {}

Some files were not shown because too many files have changed in this diff Show More