In light of the recent and unfortunate removal of selfie cameras in the latest update, I thought I'd open up the discussion on ways to bring them back.
Additional cameras in Unity require additional render passes for all objects in the scene which is a costly operation, so it is understandable why they are disabled across clients. However, this cost could be mitigated significantly if drawing were limited to single burst shots as opposed to continuously recording.
One possible approach would be to provide a new script VRC_CameraCapture as part of the sdk. This script could be attached to a camera object and would expose a toggle that - when toggled with an animation - would trigger a single Render call on the camera for all clients. This would allow images to be captured and shown to other players across clients while keeping unwanted performance loss at a minimum.
Notes:
  • Unity docs on Camera.Render method: https://docs.unity3d.com/ScriptReference/Camera.Render.html
  • Cameras still operate normally on the local client, so aspiring photographers would still be able to "line up the shot" before triggering the CameraCapture script and causing the image to appear for other players.
  • The Render call cooldown would have to be aggregated across all cameras on the avatar to prevent players from bypassing the limit by using multiple cameras in sequence.