private static FoveCameraPair GetNextLayerPair(EFVR_Eye whichEye, FoveEyeCamera cam) { if (whichEye != EFVR_Eye.Left && whichEye != EFVR_Eye.Right) { return(null); } foreach (var pair in _layerCameraPairs) { if (pair.CanUseCamera(whichEye, cam)) { return(pair); } } var p = new FoveCameraPair(cam._compositor, cam.foveInterfaceBase); _layerCameraPairs.Add(p); return(p); }
void Start() { _headset = FoveInterfaceBase.GetFVRHeadset(); _lastScale = resolutionScale; _lastAA = antiAliasing; FoveCameraPair myPair = GetNextLayerPair(whichEye, this); myPair.SetCamera(whichEye, this); SFVR_CompositorLayer layer = myPair.layer; SFVR_Vec2i res = layer.idealResolutionPerEye; var rt = new RenderTexture((int)(res.x * resolutionScale), (int)(res.y * resolutionScale), 24); rt.antiAliasing = antiAliasing; _cam = gameObject.GetComponent <Camera>(); _cam.targetTexture = rt; _cam.enabled = false; switch (whichEye) { case EFVR_Eye.Left: SetSubmitBounds(ref _layerSubmitInfo.left); _layerSubmitInfo.left.texInfo.colorSpace = EFVR_ColorSpace.Linear; break; case EFVR_Eye.Right: SetSubmitBounds(ref _layerSubmitInfo.right); _layerSubmitInfo.left.texInfo.colorSpace = EFVR_ColorSpace.Linear; break; } _layerSubmitInfo.layerId = myPair.layer.layerId; }