Hey y’all!
As you may have seen in the latest Developer Update(s), we’re currently working on integrating some overhauls into Standard Lite you may be interested in. I’m reaching out here to get some opinions on these upcoming features, especially one in particular.
As you may be aware, Standard Lite effectively disables specular highlights in 99% of cases currently - since it uses #pragma surface ... noforwardadd
, it doesn’t do any real processing of specular highlights, except in the quite rare case that you have a single, realtime directional light in your world on Mobile. This renders it pretty underpowered for most use cases, in fact I did some quick digging in worlds and found that it was equivalent to Lightmapped in a huge number of cases. You do (now) get specular reflections if you have reflection probes, but it still leaves a pretty big gap in the reactiveness of the environment.
One thing we’re implementing to mitigate that is MonoSH, an extremely efficient way to pack a single direction and spread into what would ordinarily just be directional lightmaps, giving you a method to bake in full lightmap specularity (with some caveats).
I’ve spent the better part of the last two weeks crunching down the Standard Lite shader to allow this to be introduced without incurring too much performance debt and I’m happy to report the worst case is only about 9% worse: ~6600usec to ~7225usec! The average case is also quite a bit nicer, 20-30% faster.
The thing I stumbled upon while experimenting with this was essentially:
- We can take encoded sphere harmonics from lightmaps and turn them into specular highlights, though not as detailed
- Lightprobes are encoded sphere harmonics
- what uh, what if I did both?
The result is a pretty effective approximation of emulating specularity from realtime lights, although to my understanding Unity’s lighting model is supposed to consider lightprobes strictly diffuse light (hence why I’m calling it a hack). The light looks fairly close to realtime specular highlights, though it only ever emulates one light source, so it has the same caveats as MonoSH and friends - you only get a max of one highlight.
The feedback I’m looking for from world creators here is, how intrusive would you expect this to be? The proposed rollout right now would have this replace the (effectively currently no-op) Specular Highlights flag in Standard Lite. The failure cases for it generally concern ultra-bright lightprobes (intensity of 5+ or something, blows out the lighting) and unbaked lighting, which I intend to resolve dynamically once I can identify some specific cases. I don’t want a million avatars to show up in your world suddenly brighter than expected, but I also don’t want users who uploaded avatars with the expectation of specular highlights to have to go back and re-upload them again.
Here’s my avatar (filamented standard, the above hacked in, on PC) in a sunbeam, showing the ‘too bright’ case:
Here’s some quick pictures of my avatar on Midnight Rooftop, using the above:
(tried to do a video but it appears our ask forums aren’t up to it :C)