|
@@ -0,0 +1,58 @@
|
|
|
+/**
|
|
|
+ * @author alteredq / http://alteredqualia.com/
|
|
|
+ * @authod mrdoob / http://mrdoob.com/
|
|
|
+ * @authod arodic / http://aleksandarrodic.com/
|
|
|
+ * @authod fonserbc / http://fonserbc.github.io/
|
|
|
+*/
|
|
|
+
|
|
|
+import {
|
|
|
+ StereoCamera,
|
|
|
+ Vector2
|
|
|
+} from "../../../build/three.module.js";
|
|
|
+
|
|
|
+var StereoEffect = function ( renderer ) {
|
|
|
+
|
|
|
+ var _stereo = new StereoCamera();
|
|
|
+ _stereo.aspect = 0.5;
|
|
|
+ var size = new Vector2();
|
|
|
+
|
|
|
+ this.setEyeSeparation = function ( eyeSep ) {
|
|
|
+
|
|
|
+ _stereo.eyeSep = eyeSep;
|
|
|
+
|
|
|
+ };
|
|
|
+
|
|
|
+ this.setSize = function ( width, height ) {
|
|
|
+
|
|
|
+ renderer.setSize( width, height );
|
|
|
+
|
|
|
+ };
|
|
|
+
|
|
|
+ this.render = function ( scene, camera ) {
|
|
|
+
|
|
|
+ scene.updateMatrixWorld();
|
|
|
+
|
|
|
+ if ( camera.parent === null ) camera.updateMatrixWorld();
|
|
|
+
|
|
|
+ _stereo.update( camera );
|
|
|
+
|
|
|
+ renderer.getSize( size );
|
|
|
+
|
|
|
+ if ( renderer.autoClear ) renderer.clear();
|
|
|
+ renderer.setScissorTest( true );
|
|
|
+
|
|
|
+ renderer.setScissor( 0, 0, size.width / 2, size.height );
|
|
|
+ renderer.setViewport( 0, 0, size.width / 2, size.height );
|
|
|
+ renderer.render( scene, _stereo.cameraL );
|
|
|
+
|
|
|
+ renderer.setScissor( size.width / 2, 0, size.width / 2, size.height );
|
|
|
+ renderer.setViewport( size.width / 2, 0, size.width / 2, size.height );
|
|
|
+ renderer.render( scene, _stereo.cameraR );
|
|
|
+
|
|
|
+ renderer.setScissorTest( false );
|
|
|
+
|
|
|
+ };
|
|
|
+
|
|
|
+};
|
|
|
+
|
|
|
+export { StereoEffect };
|