Hello all!
Back in Sepetember, I shared some ideas in a post discussing how environment cubemaps could be used to mimic screen distortion effects. A few iterations later, here we are!
For those interested in the technical details, this post will provide a brief writeup on how this effect operates. A lot has changed in the eights months of working on this technique, so let's take a deep dive!
While sharing a similar concept, this version differs greatly from the initial experiments and early collaboration project with Wolfy. Earlier versions required recording a greyscale 360 image (cubemap) of each environment, then applying a noisemap displacement to warp the background image without needing to touch the screen buffer. This technique was certainly promising, though distorting a single screenshot of an environment doesn't do Beat Saber's lively map lighting events much justice. Paired with poor custom colour support, it was clear that a rework would be needed.
Some early revisions aimed to overlay a seperate image for parts of the environment affected by custom colours. This did a decent job at preserving custom colour support, though lighting was still an issue. After a short break, I decided to look into how Beat Games handle their reflective environment lighting in the Bille environment. Boy, was it impressive! It turns out that the devs encoded two images for the environment. One with all lights enabled, the other completely dark. The red, green and blue components of these images corespond to different light events (main lighting, primary lasers and secondary lasers). These might affect the environment in different ways (e.g look at the image below; the red lasers and ring lights affect the second ring equally, so it appears yellow!)

This was far too awesome to ignore, so I decided to st- I mean repurpose this light encoding technique for the mod's cubemap distortion shader. While it has nowhere near the amount flexiblity and visual fidelity as the mod's high-quality "real" distortion options, this approach comes with extremely little cost to the Quest's GPU. So whether you're a Q1 user looking for a more consistent framerate (or a Q2 weirdo demanding nothing less than 120hz), this update should provide an option for you.
Thanks for your support for the past few months! I've been crazy busy with things outside the BS community, but your continued support is always appreciated. Although these projects can be difficult to keep up with given the ever-changing circumstances of life, it's genuinely fun to work on these projects in my spare time.
Cheers and ka kite anล!
Raemien
2022-11-30 11:58:21 +0000 UTC