I'm working on a scene for the Oculus Go (basically android / mobile specs) and am texturing an interior. I thought I'd try a texture array to save draw calls. I have 3 separate arrays (albedo, normals, MRA) containing 8 textures each. I made a shader that uses a channel mask to separate the materials. It all works fine in the editor (looks as expected, draw call savings as expected), but performance drops from 60 fps to about 30 fps and the GPU is crying on the Oculus Go. I'm guessing the shader used to mask / lerp everything together is too expensive? I checked this against a traditional atlas which works fine, but I'm hoping to save myself from chopping geo / UVs to support tiling. Am I being dumb and missing something in how the array should be used to be more perf friendly?
Replies
There is also little to no point in using the PBR workflow as linear-color-space is not supported on mobile vr platforms.
So bake everything and use techniques like matcaps,World-position-based gradients and Fresnel .
Mobile vr is literally like ps2 era shading-tech with more geo and far more pixels
https://forums.oculusvr.com/developer/discussion/comment/513403#Comment_513403
Unity 2018.3.0b7 release notes:
- XR: Linear color space now works on Oculus Go and Quest. For Gear VR, driver issues may prevent linear from working with S7 Adreno phones on Android 7.0.