stereoscopicRigMode.js 1.5 KB

1234567891011121314151617181920212223
  1. import { Camera } from "../camera.js";
  2. import { Viewport } from "../../Maths/math.viewport.js";
  3. import { PassPostProcess } from "../../PostProcesses/passPostProcess.js";
  4. import { StereoscopicInterlacePostProcessI } from "../../PostProcesses/stereoscopicInterlacePostProcess.js";
  5. /**
  6. * @internal
  7. */
  8. export function setStereoscopicRigMode(camera) {
  9. const isStereoscopicHoriz = camera.cameraRigMode === Camera.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL || camera.cameraRigMode === Camera.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED;
  10. const isCrossEye = camera.cameraRigMode === Camera.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED;
  11. const isInterlaced = camera.cameraRigMode === Camera.RIG_MODE_STEREOSCOPIC_INTERLACED;
  12. // Use post-processors for interlacing
  13. if (isInterlaced) {
  14. camera._rigCameras[0]._rigPostProcess = new PassPostProcess(camera.name + "_passthru", 1.0, camera._rigCameras[0]);
  15. camera._rigCameras[1]._rigPostProcess = new StereoscopicInterlacePostProcessI(camera.name + "_stereoInterlace", camera._rigCameras, false, true);
  16. }
  17. // Otherwise, create appropriate viewports
  18. else {
  19. camera._rigCameras[isCrossEye ? 1 : 0].viewport = new Viewport(0, 0, isStereoscopicHoriz ? 0.5 : 1.0, isStereoscopicHoriz ? 1.0 : 0.5);
  20. camera._rigCameras[isCrossEye ? 0 : 1].viewport = new Viewport(isStereoscopicHoriz ? 0.5 : 0, isStereoscopicHoriz ? 0 : 0.5, isStereoscopicHoriz ? 0.5 : 1.0, isStereoscopicHoriz ? 1.0 : 0.5);
  21. }
  22. }
  23. //# sourceMappingURL=stereoscopicRigMode.js.map