Răsfoiți Sursa

Merge branch 'dev' into agent

Mr.doob 1 an în urmă
părinte
comite
7acd87b613

Fișier diff suprimat deoarece este prea mare
+ 152 - 152
build/three.cjs


Fișier diff suprimat deoarece este prea mare
+ 152 - 152
build/three.core.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
build/three.core.min.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
build/three.module.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
build/three.module.min.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
build/three.webgpu.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
build/three.webgpu.min.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
build/three.webgpu.nodes.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
build/three.webgpu.nodes.min.js


+ 4 - 3
editor/js/Editor.js

@@ -655,7 +655,8 @@ Editor.prototype = {
 
 		this.setScene( await loader.parseAsync( json.scene ) );
 
-		if ( json.environment === 'ModelViewer' ) {
+		if ( json.environment === 'Room' ||
+			 json.environment === 'ModelViewer' /* DEPRECATED */ ) {
 
 			this.signals.sceneEnvironmentChanged.dispatch( json.environment );
 			this.signals.refreshSidebarEnvironment.dispatch();
@@ -683,13 +684,13 @@ Editor.prototype = {
 
 		}
 
-		// honor modelviewer environment
+		// honor neutral environment
 
 		let environment = null;
 
 		if ( this.scene.environment !== null && this.scene.environment.isRenderTargetTexture === true ) {
 
-			environment = 'ModelViewer';
+			environment = 'Room';
 
 		}
 

+ 20 - 8
editor/js/EditorControls.js

@@ -2,7 +2,7 @@ import * as THREE from 'three';
 
 class EditorControls extends THREE.EventDispatcher {
 
-	constructor( object, domElement ) {
+	constructor( object ) {
 
 		super();
 
@@ -34,6 +34,8 @@ class EditorControls extends THREE.EventDispatcher {
 		var pointers = [];
 		var pointerPositions = {};
 
+		var domElement = null;
+
 		// events
 
 		var changeEvent = { type: 'change' };
@@ -269,7 +271,21 @@ class EditorControls extends THREE.EventDispatcher {
 
 		}
 
-		this.dispose = function () {
+		this.connect = function ( element ) {
+
+			if ( domElement !== null ) this.disconnect();
+
+			domElement = element;
+
+			domElement.addEventListener( 'contextmenu', contextmenu );
+			domElement.addEventListener( 'dblclick', onMouseUp );
+			domElement.addEventListener( 'wheel', onMouseWheel, { passive: false } );
+
+			domElement.addEventListener( 'pointerdown', onPointerDown );
+
+		};
+
+		this.disconnect = function () {
 
 			domElement.removeEventListener( 'contextmenu', contextmenu );
 			domElement.removeEventListener( 'dblclick', onMouseUp );
@@ -277,13 +293,9 @@ class EditorControls extends THREE.EventDispatcher {
 
 			domElement.removeEventListener( 'pointerdown', onPointerDown );
 
-		};
+			domElement = null;
 
-		domElement.addEventListener( 'contextmenu', contextmenu );
-		domElement.addEventListener( 'dblclick', onMouseUp );
-		domElement.addEventListener( 'wheel', onMouseWheel, { passive: false } );
-
-		domElement.addEventListener( 'pointerdown', onPointerDown );
+		};
 
 		// touch
 

+ 2 - 2
editor/js/Sidebar.Scene.js

@@ -233,7 +233,7 @@ function SidebarScene( editor ) {
 		'None': '',
 		'Background': 'Background',
 		'Equirectangular': 'Equirect',
-		'ModelViewer': 'ModelViewer'
+		'Room': 'Room'
 
 	} ).setWidth( '150px' );
 	environmentType.setValue( 'None' );
@@ -435,7 +435,7 @@ function SidebarScene( editor ) {
 
 			} else if ( scene.environment.isRenderTargetTexture === true ) {
 
-				environmentType.setValue( 'ModelViewer' );
+				environmentType.setValue( 'Room' );
 
 			}
 

+ 6 - 3
editor/js/Viewport.js

@@ -74,7 +74,7 @@ function Viewport( editor ) {
 	let objectRotationOnDown = null;
 	let objectScaleOnDown = null;
 
-	const transformControls = new TransformControls( camera, container.dom );
+	const transformControls = new TransformControls( camera );
 	transformControls.addEventListener( 'axis-changed', function () {
 
 		if ( editor.viewportShading !== 'realistic' ) render();
@@ -274,7 +274,7 @@ function Viewport( editor ) {
 	// controls need to be added *after* main logic,
 	// otherwise controls.enabled doesn't work.
 
-	const controls = new EditorControls( camera, container.dom );
+	const controls = new EditorControls( camera );
 	controls.addEventListener( 'change', function () {
 
 		signals.cameraChanged.dispatch( camera );
@@ -345,6 +345,9 @@ function Viewport( editor ) {
 
 		}
 
+		controls.connect( newRenderer.domElement );
+		transformControls.connect( newRenderer.domElement );
+
 		renderer = newRenderer;
 
 		renderer.setAnimationLoop( animate );
@@ -582,7 +585,7 @@ function Viewport( editor ) {
 
 				break;
 
-			case 'ModelViewer':
+			case 'Room':
 
 				scene.environment = pmremGenerator.fromScene( new RoomEnvironment(), 0.04 ).texture;
 

+ 4 - 2
examples/jsm/controls/ArcballControls.js

@@ -441,13 +441,15 @@ class ArcballControls extends Controls {
 
 		if ( domElement !== null ) {
 
-			this.connect();
+			this.connect( domElement );
 
 		}
 
 	}
 
-	connect() {
+	connect( element ) {
+
+		super.connect( element );
 
 		this.domElement.style.touchAction = 'none';
 		this._devPxRatio = window.devicePixelRatio;

+ 4 - 2
examples/jsm/controls/DragControls.js

@@ -122,13 +122,15 @@ class DragControls extends Controls {
 
 		if ( domElement !== null ) {
 
-			this.connect();
+			this.connect( domElement );
 
 		}
 
 	}
 
-	connect() {
+	connect( element ) {
+
+		super.connect( element );
 
 		this.domElement.addEventListener( 'pointermove', this._onPointerMove );
 		this.domElement.addEventListener( 'pointerdown', this._onPointerDown );

+ 4 - 2
examples/jsm/controls/FirstPersonControls.js

@@ -164,7 +164,7 @@ class FirstPersonControls extends Controls {
 
 		if ( domElement !== null ) {
 
-			this.connect();
+			this.connect( domElement );
 
 			this.handleResize();
 
@@ -174,7 +174,9 @@ class FirstPersonControls extends Controls {
 
 	}
 
-	connect() {
+	connect( element ) {
+
+		super.connect( element );
 
 		window.addEventListener( 'keydown', this._onKeyDown );
 		window.addEventListener( 'keyup', this._onKeyUp );

+ 4 - 2
examples/jsm/controls/FlyControls.js

@@ -89,13 +89,15 @@ class FlyControls extends Controls {
 
 		if ( domElement !== null ) {
 
-			this.connect();
+			this.connect( domElement );
 
 		}
 
 	}
 
-	connect() {
+	connect( element ) {
+
+		super.connect( element );
 
 		window.addEventListener( 'keydown', this._onKeyDown );
 		window.addEventListener( 'keyup', this._onKeyUp );

+ 4 - 2
examples/jsm/controls/OrbitControls.js

@@ -453,7 +453,7 @@ class OrbitControls extends Controls {
 
 		if ( this.domElement !== null ) {
 
-			this.connect();
+			this.connect( this.domElement );
 
 		}
 
@@ -461,7 +461,9 @@ class OrbitControls extends Controls {
 
 	}
 
-	connect() {
+	connect( element ) {
+
+		super.connect( element );
 
 		this.domElement.addEventListener( 'pointerdown', this._onPointerDown );
 		this.domElement.addEventListener( 'pointercancel', this._onPointerUp );

+ 4 - 2
examples/jsm/controls/PointerLockControls.js

@@ -109,13 +109,15 @@ class PointerLockControls extends Controls {
 
 		if ( this.domElement !== null ) {
 
-			this.connect();
+			this.connect( this.domElement );
 
 		}
 
 	}
 
-	connect() {
+	connect( element ) {
+
+		super.connect( element );
 
 		this.domElement.ownerDocument.addEventListener( 'mousemove', this._onMouseMove );
 		this.domElement.ownerDocument.addEventListener( 'pointerlockchange', this._onPointerlockChange );

+ 4 - 2
examples/jsm/controls/TrackballControls.js

@@ -257,7 +257,7 @@ class TrackballControls extends Controls {
 
 		if ( domElement !== null ) {
 
-			this.connect();
+			this.connect( domElement );
 
 			this.handleResize();
 
@@ -268,7 +268,9 @@ class TrackballControls extends Controls {
 
 	}
 
-	connect() {
+	connect( element ) {
+
+		super.connect( element );
 
 		window.addEventListener( 'keydown', this._onKeyDown );
 		window.addEventListener( 'keyup', this._onKeyUp );

+ 4 - 2
examples/jsm/controls/TransformControls.js

@@ -358,13 +358,15 @@ class TransformControls extends Controls {
 
 		if ( domElement !== null ) {
 
-			this.connect();
+			this.connect( domElement );
 
 		}
 
 	}
 
-	connect() {
+	connect( element ) {
+
+		super.connect( element );
 
 		this.domElement.addEventListener( 'pointerdown', this._onPointerDown );
 		this.domElement.addEventListener( 'pointermove', this._onPointerHover );

+ 2 - 1
examples/jsm/csm/CSMShader.js

@@ -54,7 +54,8 @@ IncidentLight directLight;
 
 		#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )
 		pointLightShadow = pointLightShadows[ i ];
-		directLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;
+		directLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowIntensity, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;
+
 		#endif
 
 		RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );

+ 16 - 1
src/extras/Controls.js

@@ -77,8 +77,23 @@ class Controls extends EventDispatcher {
 	/**
 	 * Connects the controls to the DOM. This method has so called "side effects" since
 	 * it adds the module's event listeners to the DOM.
+	 *
+	 * @param {HTMLDOMElement} element - The DOM element to connect to.
 	 */
-	connect() {}
+	connect( element ) {
+
+		if ( element === undefined ) {
+
+			console.warn( 'THREE.Controls: connect() now requires an element.' );
+			return;
+
+		}
+
+		if ( this.domElement !== null ) this.disconnect();
+
+		this.domElement = element;
+
+	}
 
 	/**
 	 * Disconnects the controls from the DOM.

+ 9 - 0
src/materials/nodes/ShadowNodeMaterial.js

@@ -45,6 +45,15 @@ class ShadowNodeMaterial extends NodeMaterial {
 		 */
 		this.lights = true;
 
+		/**
+		 * Overwritten since shadow materials are transparent
+		 * by default.
+		 *
+		 * @type {boolean}
+		 * @default true
+		 */
+		this.transparent = true;
+
 		this.setDefaultValues( _defaultValues );
 
 		this.setValues( parameters );

+ 4 - 4
src/nodes/functions/ShadowMaskModel.js

@@ -30,18 +30,18 @@ class ShadowMaskModel extends LightingModel {
 	 *
 	 * @param {Object} input - The input data.
 	 */
-	direct( { shadowMask } ) {
+	direct( { lightNode } ) {
 
-		this.shadowNode.mulAssign( shadowMask );
+		this.shadowNode.mulAssign( lightNode.shadowNode );
 
 	}
 
 	/**
 	 * Uses the shadow mask to produce the final color.
 	 *
-	 * @param {ContextNode} context - The current node context.
+	 * @param {NodeBuilder} builder - The current node builder.
 	 */
-	finish( context ) {
+	finish( { context } ) {
 
 		diffuseColor.a.mulAssign( this.shadowNode.oneMinus() );
 

Unele fișiere nu au fost afișate deoarece prea multe fișiere au fost modificate în acest diff

粤ICP备19079148号