Include Shaders into the Performance Rank System
Furriest
Shower thought: What good is an excellent ranked PC avatar if it has a grab-pass/screen-grab on it?
For each material slot you have, you have its respective shader, however, since shaders are not included into performance rankings, and only for fallbacks. They are not accounted for, otherwise.
Shaders take GPU time, so if a shader from a material slot took an extra 1 ms to render at 90fps, it would decrease the framerate to 82fps. A shader fallback system in the case a shader is too expensive to run in a material would assist in having a more effective performance rank medium.
Shader GPU time could be calculated in the SDK by simply having a hidden camera render each shader/material on a sphere in a different/hidden scene. This method would also prove performant as materials could be evaluated for their frame time. GPU time limits (e.g. 0.02 ms or 0.2 ms) could be implemented on a per-shader or per-avatar basis to help better calculate how optimized an avatar is or how optimized its material slots/shaders are.
A more functional system would to test for certain shader features such as tessellation, grab-pass (screen-space reflections/refractions) and raymarching, and put those in their respective performance ranks for shaders specifically.
Log In
olskor
There's a big issue with that. Actually vrchat recalculate perf stat everytime you load an avatar in game, having such a shader test for each material will induce tons of lag on avatar loading...
and i think they won't remove this avatar perf test on every load because it avoid abuse of the script on unity because yes, you theoriticaly can change the script in unity to change the state calculation and it will still upload the whole avatar