Browse Source

JSM: Added module and TS file for StereoEffect.

Mugen87 6 years ago
parent
commit
4c05cdb006

+ 1 - 0
docs/manual/en/introduction/Import-via-modules.html

@@ -107,6 +107,7 @@
 					<ul>
 						<li>AnaglyphEffect</li>
 						<li>AsciiEffect</li>
+						<li>StereoEffect</li>
 					</ul>
 				</li>
 				<li>exporters

+ 13 - 0
examples/jsm/effects/StereoEffect.d.ts

@@ -0,0 +1,13 @@
+import {
+  Camera,
+  Scene,
+  WebGLRenderer
+} from '../../../src/Three';
+
+export class StereoEffect {
+  constructor(renderer: WebGLRenderer);
+
+  setEyeSeparation(eyeSep: number): void;
+  render(scene: Scene, camera: Camera): void;
+  setSize(width: number, height: number): void;
+}

+ 58 - 0
examples/jsm/effects/StereoEffect.js

@@ -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 };

+ 1 - 0
utils/modularize.js

@@ -30,6 +30,7 @@ var files = [
 
 	{ path: 'effects/AnaglyphEffect.js', dependencies: [], ignoreList: [] },
 	{ path: 'effects/AsciiEffect.js', dependencies: [], ignoreList: [] },
+	{ path: 'effects/StereoEffect.js', dependencies: [], ignoreList: [] },
 
 	{ path: 'exporters/GLTFExporter.js', dependencies: [], ignoreList: [ 'AnimationClip', 'Camera', 'Geometry', 'Material', 'Mesh', 'Object3D', 'RGBFormat', 'Scenes', 'ShaderMaterial', 'VertexColors' ] },
 	{ path: 'exporters/MMDExporter.js', dependencies: [], ignoreList: [] },