Переглянути джерело

Merge pull request #6041 from TrevorDev/useScaleFactorForVRDeviceCameraWithMultiview

use scale factor for multiview vrdeviceorientationcamera
David Catuhe 6 роки тому
батько
коміт
9c67c22ff1
2 змінених файлів з 6 додано та 3 видалено
  1. 2 2
      src/Cameras/RigModes/vrRigMode.ts
  2. 4 1
      src/scene.ts

+ 2 - 2
src/Cameras/RigModes/vrRigMode.ts

@@ -5,7 +5,7 @@ import { VRCameraMetrics } from "../VR/vrCameraMetrics";
 import { Logger } from '../../Misc/logger';
 
 Camera._setVRRigMode = function(camera: Camera, rigParams: any) {
-    var metrics = rigParams.vrCameraMetrics || VRCameraMetrics.GetDefault();
+    var metrics = <VRCameraMetrics>rigParams.vrCameraMetrics || VRCameraMetrics.GetDefault();
 
     camera._rigCameras[0]._cameraRigParams.vrMetrics = metrics;
     camera._rigCameras[0].viewport = new Viewport(0, 0, 0.5, 1.0);
@@ -30,7 +30,7 @@ Camera._setVRRigMode = function(camera: Camera, rigParams: any) {
             metrics.multiviewEnabled = false;
         }else {
             camera._useMultiviewToSingleView = true;
-            camera._rigPostProcess = new VRMultiviewToSingleview("VRMultiviewToSingleview", camera, 1.0);
+            camera._rigPostProcess = new VRMultiviewToSingleview("VRMultiviewToSingleview", camera, metrics.postProcessScaleFactor);
         }
     }
 

+ 4 - 1
src/scene.ts

@@ -4174,7 +4174,10 @@ export class Scene extends AbstractScene implements IAnimatable {
             // copying the result into the sub cameras instead of rendering them and proceeding as normal from there
 
             // Render to a multiview texture
-            camera._resizeOrCreateMultiviewTexture(this.getEngine().getRenderWidth(true) / 2, this.getEngine().getRenderHeight(true));
+            camera._resizeOrCreateMultiviewTexture(
+                (camera._rigPostProcess && camera._rigPostProcess && camera._rigPostProcess.width > 0) ? camera._rigPostProcess.width / 2 : this.getEngine().getRenderWidth(true) / 2,
+                (camera._rigPostProcess && camera._rigPostProcess && camera._rigPostProcess.height > 0) ? camera._rigPostProcess.height : this.getEngine().getRenderHeight(true)
+            );
             if (!this._multiviewSceneUbo) {
                 this._createMultiviewUbo();
             }