Browse Source

JSM: Added module and TS file for CubeTexturePass.

Mugen87 6 năm trước cách đây
mục cha
commit
c2096aa987

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

@@ -161,6 +161,7 @@
 						<li>AfterimagePass</li>
 						<li>BloomPass</li>
 						<li>ClearPass</li>
+						<li>CubeTexturePass</li>
 						<li>DotScreenPass</li>
 						<li>EffectComposer</li>
 						<li>FilmPass</li>

+ 1 - 1
examples/js/postprocessing/CubeTexturePass.js

@@ -36,7 +36,7 @@ THREE.CubeTexturePass.prototype = Object.assign( Object.create( THREE.Pass.proto
 
 	constructor: THREE.CubeTexturePass,
 
-	render: function ( renderer, writeBuffer, readBuffer, deltaTime, maskActive ) {
+	render: function ( renderer, writeBuffer, readBuffer/*, deltaTime, maskActive*/ ) {
 
 		var oldAutoClear = renderer.autoClear;
 		renderer.autoClear = false;

+ 19 - 0
examples/jsm/postprocessing/CubeTexturePass.d.ts

@@ -0,0 +1,19 @@
+import {
+  PerspectiveCamera,
+  CubeTexture,
+  Mesh,
+  Scene
+} from '../../../src/Three';
+
+import { Pass } from './Pass';
+
+export class CubeTexturePass extends Pass {
+  constructor(camera: PerspectiveCamera, envMap?: CubeTexture, opacity?: number);
+  camera: PerspectiveCamera;
+  cubeShader: object;
+  cubeMesh: Mesh;
+  envMap: CubeTexture;
+  opacity: number;
+  cubeScene: Scene;
+  cubeCamera: PerspectiveCamera;
+}

+ 72 - 0
examples/jsm/postprocessing/CubeTexturePass.js

@@ -0,0 +1,72 @@
+/**
+ * @author bhouston / http://clara.io/
+ */
+
+import {
+	BackSide,
+	BoxBufferGeometry,
+	Mesh,
+	PerspectiveCamera,
+	Scene,
+	ShaderLib,
+	ShaderMaterial
+} from "../../../build/three.module.js";
+import { Pass } from "../postprocessing/Pass.js";
+
+var CubeTexturePass = function ( camera, envMap, opacity ) {
+
+	Pass.call( this );
+
+	this.camera = camera;
+
+	this.needsSwap = false;
+
+	this.cubeShader = ShaderLib[ 'cube' ];
+	this.cubeMesh = new Mesh(
+		new BoxBufferGeometry( 10, 10, 10 ),
+		new ShaderMaterial( {
+			uniforms: this.cubeShader.uniforms,
+			vertexShader: this.cubeShader.vertexShader,
+			fragmentShader: this.cubeShader.fragmentShader,
+			depthTest: false,
+			depthWrite: false,
+			side: BackSide
+		} )
+	);
+
+	this.envMap = envMap;
+	this.opacity = ( opacity !== undefined ) ? opacity : 1.0;
+
+	this.cubeScene = new Scene();
+	this.cubeCamera = new PerspectiveCamera();
+	this.cubeScene.add( this.cubeMesh );
+
+};
+
+CubeTexturePass.prototype = Object.assign( Object.create( Pass.prototype ), {
+
+	constructor: CubeTexturePass,
+
+	render: function ( renderer, writeBuffer, readBuffer/*, deltaTime, maskActive*/ ) {
+
+		var oldAutoClear = renderer.autoClear;
+		renderer.autoClear = false;
+
+		this.cubeCamera.projectionMatrix.copy( this.camera.projectionMatrix );
+		this.cubeCamera.quaternion.setFromRotationMatrix( this.camera.matrixWorld );
+
+		this.cubeMesh.material.uniforms[ "tCube" ].value = this.envMap;
+		this.cubeMesh.material.uniforms[ "opacity" ].value = this.opacity;
+		this.cubeMesh.material.transparent = ( this.opacity < 1.0 );
+
+		renderer.setRenderTarget( this.renderToScreen ? null : readBuffer );
+		if ( this.clear ) renderer.clear();
+		renderer.render( this.cubeScene, this.cubeCamera );
+
+		renderer.autoClear = oldAutoClear;
+
+	}
+
+} );
+
+export { CubeTexturePass };

+ 1 - 0
utils/modularize.js

@@ -70,6 +70,7 @@ var files = [
 	{ path: 'postprocessing/AfterimagePass.js', dependencies: [ { name: 'Pass', path: 'postprocessing/Pass.js' }, { name: 'AfterimageShader', path: 'shaders/AfterimageShader.js' } ], ignoreList: [] },
 	{ path: 'postprocessing/BloomPass.js', dependencies: [ { name: 'Pass', path: 'postprocessing/Pass.js' }, { name: 'CopyShader', path: 'shaders/CopyShader.js' }, { name: 'ConvolutionShader', path: 'shaders/ConvolutionShader.js' } ], ignoreList: [] },
 	{ path: 'postprocessing/ClearPass.js', dependencies: [ { name: 'Pass', path: 'postprocessing/Pass.js' } ], ignoreList: [] },
+	{ path: 'postprocessing/CubeTexturePass.js', dependencies: [ { name: 'Pass', path: 'postprocessing/Pass.js' } ], ignoreList: [] },
 	{ path: 'postprocessing/DotScreenPass.js', dependencies: [ { name: 'Pass', path: 'postprocessing/Pass.js' }, { name: 'DotScreenShader', path: 'shaders/DotScreenShader.js' } ], ignoreList: [] },
 	{ path: 'postprocessing/EffectComposer.js', dependencies: [ { name: 'CopyShader', path: 'shaders/CopyShader.js' }, { name: 'ShaderPass', path: 'postprocessing/ShaderPass.js' }, { name: 'MaskPass', path: 'postprocessing/MaskPass.js' }, { name: 'ClearMaskPass', path: 'postprocessing/MaskPass.js' } ], ignoreList: [] },
 	{ path: 'postprocessing/FilmPass.js', dependencies: [ { name: 'Pass', path: 'postprocessing/Pass.js' }, { name: 'FilmShader', path: 'shaders/FilmShader.js' } ], ignoreList: [] },