Transparency support for mobile shaders
ChromaCore
Currently the Quest standard lite shader lacks the ability to support transparency. Could we get access to this? Shouldn't be too much of a performance drop.
Log In
Flame Soulis
At the very least, include cut off support.
Silent
Flame Soulis: Alpha blend transparency on Quest is expensive, which is why the transparent shaders allowed on Quest are so limited. But... on Quest, cutout is so expensive Oculus says you should use transparency instead!
Regarding transparency/alpha blending:
- Keep alpha blended transparency to a minimum.
Regarding cutout/alpha testing:
- discarding a fragment in the middle of a fragment shader (via discard, alpha test or clip()) causes the GPU to re-render the entire tile, and should be avoided in all shaders.
- Alpha-testing incurs a high performance overhead. Replace with alpha-blended if possible.
Flame Soulis
Silent: Weird. I mean, I've learned to work around it at this point, but that's odd that cut-off is more costly on the GPU than alpha blending.
Wonder if a firmware update for the GPU could resolve something like that or offer something to work with for other developers.
BeanMChocolate
Silent: This doesn't make a lot of sense, since Cluster, a platform on Quest, PC, iOS, and Android allows vrm format models to be used as avatars, and they display the same across all platforms. They do get their polygons cut down if the performance is low, but they also don't have a hide based on distance feature, so cutting polygons down is the only way they fix the performance issue. I've met people on Cluster that claim there's no major performance difference between VRChat and Cluster, even with VRoid avatars being used. Also, for cutout vs transparency, that seems a bit backwards. Cutout reads pixels as on or off, rendered, or not rendered. Transparent reads as a float that dictates how visible each pixel should be, so it would make sense for transparency to cost more on performance than cutout. This isn't a problem with the Quest, as Cluster does this just fine, with no performance hiccups, or lag. I have a phone that is significantly weaker than the Quest, and it runs at a consistent 50-60 FPS, sometimes more depending on the world. What might be the reason why VRChat chose to remove Cutout is the people who used cutout shaders for the wrong purpose, to crash people on Quest. This CAN be limited to only being able to use it for a single material slot, and also making it so that if you upload with a cutout shader on the avatar, the avatar's textures will be auto-compressed to 1024 resolution to save on performance. This I believe would be the smartest way of handling the performance problem, that and making it so that if you have materials with cutout on them, only the unlit toon shader provided by VRChat can be used as a cutout shader, since it is the most light weight, not including any light or shadow data, and simply only having the texture render. Another option is to make it so that if someone is using a cutout shader on their avatar, it auto-hides the avatar by putting it in very poor. This is already done, and would just make things a bit easier. My final suggestion is to make it so that avatars with cutout shader on Quest are hidden if there is more than 4 of them in a given area, or if they are beyond a specific distance. Not having the ability to use cutout shaders holds a lot of avatar creators back from uploading to Quest. Not even models from PlayStation 1 games can be used on Quest, as a lot of them use cutout shaders. For instance, I have an avatar that is from Battle Arena Toshinden, and the only reason why it isn't being uploaded to Quest is because the hair is using a cutout shader, and would prevent me from uploading. This isn't a "non issue" it is a very real issue that makes uploading to Quest very difficult, and unintuitive. If I were to manually cut out every pixel of the hair, it would take a model from being able to run on the PS1, to not even being able to run on high end machines. As long as there is no support for cutout on Quest, I cannot upload a cross platform avatar that isn't from another game.
ᴘʀᴏᴏxʏ
BeanMChocolate sir, why my phone can run Virtual Droid 2 with 4gb of RAM and vrchat no? since is almost the same game ?