sunag пре 1 година
родитељ
комит
111184b69d

+ 33 - 20
build/three.cjs

@@ -19980,6 +19980,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
 			parameters.numLightProbes > 0 ? '#define USE_LIGHT_PROBES' : '',
 			parameters.numLightProbes > 0 ? '#define USE_LIGHT_PROBES' : '',
 
 
 			parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',
 			parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',
+			parameters.reverseDepthBuffer ? '#define USE_REVERSEDEPTHBUF' : '',
 
 
 			'uniform mat4 modelMatrix;',
 			'uniform mat4 modelMatrix;',
 			'uniform mat4 modelViewMatrix;',
 			'uniform mat4 modelViewMatrix;',
@@ -20145,6 +20146,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
 			parameters.decodeVideoTexture ? '#define DECODE_VIDEO_TEXTURE' : '',
 			parameters.decodeVideoTexture ? '#define DECODE_VIDEO_TEXTURE' : '',
 
 
 			parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',
 			parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',
+			parameters.reverseDepthBuffer ? '#define USE_REVERSEDEPTHBUF' : '',
 
 
 			'uniform mat4 viewMatrix;',
 			'uniform mat4 viewMatrix;',
 			'uniform vec3 cameraPosition;',
 			'uniform vec3 cameraPosition;',
@@ -20537,6 +20539,7 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
 	const programs = [];
 	const programs = [];
 
 
 	const logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;
 	const logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;
+	const reverseDepthBuffer = capabilities.reverseDepthBuffer;
 	const SUPPORTS_VERTEX_TEXTURES = capabilities.vertexTextures;
 	const SUPPORTS_VERTEX_TEXTURES = capabilities.vertexTextures;
 
 
 	let precision = capabilities.precision;
 	let precision = capabilities.precision;
@@ -20828,6 +20831,7 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
 
 
 			sizeAttenuation: material.sizeAttenuation === true,
 			sizeAttenuation: material.sizeAttenuation === true,
 			logarithmicDepthBuffer: logarithmicDepthBuffer,
 			logarithmicDepthBuffer: logarithmicDepthBuffer,
+			reverseDepthBuffer: reverseDepthBuffer,
 
 
 			skinning: object.isSkinnedMesh === true,
 			skinning: object.isSkinnedMesh === true,
 
 
@@ -21047,38 +21051,40 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
 			_programLayers.enable( 2 );
 			_programLayers.enable( 2 );
 		if ( parameters.logarithmicDepthBuffer )
 		if ( parameters.logarithmicDepthBuffer )
 			_programLayers.enable( 3 );
 			_programLayers.enable( 3 );
-		if ( parameters.skinning )
+		if ( parameters.reverseDepthBuffer )
 			_programLayers.enable( 4 );
 			_programLayers.enable( 4 );
-		if ( parameters.morphTargets )
+		if ( parameters.skinning )
 			_programLayers.enable( 5 );
 			_programLayers.enable( 5 );
-		if ( parameters.morphNormals )
+		if ( parameters.morphTargets )
 			_programLayers.enable( 6 );
 			_programLayers.enable( 6 );
-		if ( parameters.morphColors )
+		if ( parameters.morphNormals )
 			_programLayers.enable( 7 );
 			_programLayers.enable( 7 );
-		if ( parameters.premultipliedAlpha )
+		if ( parameters.morphColors )
 			_programLayers.enable( 8 );
 			_programLayers.enable( 8 );
-		if ( parameters.shadowMapEnabled )
+		if ( parameters.premultipliedAlpha )
 			_programLayers.enable( 9 );
 			_programLayers.enable( 9 );
-		if ( parameters.doubleSided )
+		if ( parameters.shadowMapEnabled )
 			_programLayers.enable( 10 );
 			_programLayers.enable( 10 );
-		if ( parameters.flipSided )
+		if ( parameters.doubleSided )
 			_programLayers.enable( 11 );
 			_programLayers.enable( 11 );
-		if ( parameters.useDepthPacking )
+		if ( parameters.flipSided )
 			_programLayers.enable( 12 );
 			_programLayers.enable( 12 );
-		if ( parameters.dithering )
+		if ( parameters.useDepthPacking )
 			_programLayers.enable( 13 );
 			_programLayers.enable( 13 );
-		if ( parameters.transmission )
+		if ( parameters.dithering )
 			_programLayers.enable( 14 );
 			_programLayers.enable( 14 );
-		if ( parameters.sheen )
+		if ( parameters.transmission )
 			_programLayers.enable( 15 );
 			_programLayers.enable( 15 );
-		if ( parameters.opaque )
+		if ( parameters.sheen )
 			_programLayers.enable( 16 );
 			_programLayers.enable( 16 );
-		if ( parameters.pointsUvs )
+		if ( parameters.opaque )
 			_programLayers.enable( 17 );
 			_programLayers.enable( 17 );
-		if ( parameters.decodeVideoTexture )
+		if ( parameters.pointsUvs )
 			_programLayers.enable( 18 );
 			_programLayers.enable( 18 );
-		if ( parameters.alphaToCoverage )
+		if ( parameters.decodeVideoTexture )
 			_programLayers.enable( 19 );
 			_programLayers.enable( 19 );
+		if ( parameters.alphaToCoverage )
+			_programLayers.enable( 20 );
 
 
 		array.push( _programLayers.mask );
 		array.push( _programLayers.mask );
 
 
@@ -37701,12 +37707,19 @@ class CylinderGeometry extends BufferGeometry {
 
 
 					// faces
 					// faces
 
 
-					indices.push( a, b, d );
-					indices.push( b, c, d );
+					if ( radiusTop > 0 ) {
 
 
-					// update group counter
+						indices.push( a, b, d );
+						groupCount += 3;
 
 
-					groupCount += 6;
+					}
+
+					if ( radiusBottom > 0 ) {
+
+						indices.push( b, c, d );
+						groupCount += 3;
+
+					}
 
 
 				}
 				}
 
 

+ 33 - 20
build/three.module.js

@@ -19978,6 +19978,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
 			parameters.numLightProbes > 0 ? '#define USE_LIGHT_PROBES' : '',
 			parameters.numLightProbes > 0 ? '#define USE_LIGHT_PROBES' : '',
 
 
 			parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',
 			parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',
+			parameters.reverseDepthBuffer ? '#define USE_REVERSEDEPTHBUF' : '',
 
 
 			'uniform mat4 modelMatrix;',
 			'uniform mat4 modelMatrix;',
 			'uniform mat4 modelViewMatrix;',
 			'uniform mat4 modelViewMatrix;',
@@ -20143,6 +20144,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
 			parameters.decodeVideoTexture ? '#define DECODE_VIDEO_TEXTURE' : '',
 			parameters.decodeVideoTexture ? '#define DECODE_VIDEO_TEXTURE' : '',
 
 
 			parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',
 			parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',
+			parameters.reverseDepthBuffer ? '#define USE_REVERSEDEPTHBUF' : '',
 
 
 			'uniform mat4 viewMatrix;',
 			'uniform mat4 viewMatrix;',
 			'uniform vec3 cameraPosition;',
 			'uniform vec3 cameraPosition;',
@@ -20535,6 +20537,7 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
 	const programs = [];
 	const programs = [];
 
 
 	const logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;
 	const logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;
+	const reverseDepthBuffer = capabilities.reverseDepthBuffer;
 	const SUPPORTS_VERTEX_TEXTURES = capabilities.vertexTextures;
 	const SUPPORTS_VERTEX_TEXTURES = capabilities.vertexTextures;
 
 
 	let precision = capabilities.precision;
 	let precision = capabilities.precision;
@@ -20826,6 +20829,7 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
 
 
 			sizeAttenuation: material.sizeAttenuation === true,
 			sizeAttenuation: material.sizeAttenuation === true,
 			logarithmicDepthBuffer: logarithmicDepthBuffer,
 			logarithmicDepthBuffer: logarithmicDepthBuffer,
+			reverseDepthBuffer: reverseDepthBuffer,
 
 
 			skinning: object.isSkinnedMesh === true,
 			skinning: object.isSkinnedMesh === true,
 
 
@@ -21045,38 +21049,40 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
 			_programLayers.enable( 2 );
 			_programLayers.enable( 2 );
 		if ( parameters.logarithmicDepthBuffer )
 		if ( parameters.logarithmicDepthBuffer )
 			_programLayers.enable( 3 );
 			_programLayers.enable( 3 );
-		if ( parameters.skinning )
+		if ( parameters.reverseDepthBuffer )
 			_programLayers.enable( 4 );
 			_programLayers.enable( 4 );
-		if ( parameters.morphTargets )
+		if ( parameters.skinning )
 			_programLayers.enable( 5 );
 			_programLayers.enable( 5 );
-		if ( parameters.morphNormals )
+		if ( parameters.morphTargets )
 			_programLayers.enable( 6 );
 			_programLayers.enable( 6 );
-		if ( parameters.morphColors )
+		if ( parameters.morphNormals )
 			_programLayers.enable( 7 );
 			_programLayers.enable( 7 );
-		if ( parameters.premultipliedAlpha )
+		if ( parameters.morphColors )
 			_programLayers.enable( 8 );
 			_programLayers.enable( 8 );
-		if ( parameters.shadowMapEnabled )
+		if ( parameters.premultipliedAlpha )
 			_programLayers.enable( 9 );
 			_programLayers.enable( 9 );
-		if ( parameters.doubleSided )
+		if ( parameters.shadowMapEnabled )
 			_programLayers.enable( 10 );
 			_programLayers.enable( 10 );
-		if ( parameters.flipSided )
+		if ( parameters.doubleSided )
 			_programLayers.enable( 11 );
 			_programLayers.enable( 11 );
-		if ( parameters.useDepthPacking )
+		if ( parameters.flipSided )
 			_programLayers.enable( 12 );
 			_programLayers.enable( 12 );
-		if ( parameters.dithering )
+		if ( parameters.useDepthPacking )
 			_programLayers.enable( 13 );
 			_programLayers.enable( 13 );
-		if ( parameters.transmission )
+		if ( parameters.dithering )
 			_programLayers.enable( 14 );
 			_programLayers.enable( 14 );
-		if ( parameters.sheen )
+		if ( parameters.transmission )
 			_programLayers.enable( 15 );
 			_programLayers.enable( 15 );
-		if ( parameters.opaque )
+		if ( parameters.sheen )
 			_programLayers.enable( 16 );
 			_programLayers.enable( 16 );
-		if ( parameters.pointsUvs )
+		if ( parameters.opaque )
 			_programLayers.enable( 17 );
 			_programLayers.enable( 17 );
-		if ( parameters.decodeVideoTexture )
+		if ( parameters.pointsUvs )
 			_programLayers.enable( 18 );
 			_programLayers.enable( 18 );
-		if ( parameters.alphaToCoverage )
+		if ( parameters.decodeVideoTexture )
 			_programLayers.enable( 19 );
 			_programLayers.enable( 19 );
+		if ( parameters.alphaToCoverage )
+			_programLayers.enable( 20 );
 
 
 		array.push( _programLayers.mask );
 		array.push( _programLayers.mask );
 
 
@@ -37699,12 +37705,19 @@ class CylinderGeometry extends BufferGeometry {
 
 
 					// faces
 					// faces
 
 
-					indices.push( a, b, d );
-					indices.push( b, c, d );
+					if ( radiusTop > 0 ) {
 
 
-					// update group counter
+						indices.push( a, b, d );
+						groupCount += 3;
 
 
-					groupCount += 6;
+					}
+
+					if ( radiusBottom > 0 ) {
+
+						indices.push( b, c, d );
+						groupCount += 3;
+
+					}
 
 
 				}
 				}
 
 

Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
build/three.module.min.js


+ 73 - 10
build/three.webgpu.js

@@ -19599,12 +19599,19 @@ class CylinderGeometry extends BufferGeometry {
 
 
 					// faces
 					// faces
 
 
-					indices.push( a, b, d );
-					indices.push( b, c, d );
+					if ( radiusTop > 0 ) {
 
 
-					// update group counter
+						indices.push( a, b, d );
+						groupCount += 3;
 
 
-					groupCount += 6;
+					}
+
+					if ( radiusBottom > 0 ) {
+
+						indices.push( b, c, d );
+						groupCount += 3;
+
+					}
 
 
 				}
 				}
 
 
@@ -36390,6 +36397,7 @@ class NodeMaterialObserver {
 
 
 		this.renderObjects = new WeakMap();
 		this.renderObjects = new WeakMap();
 		this.hasNode = this.containsNode( builder );
 		this.hasNode = this.containsNode( builder );
+		this.hasAnimation = builder.object.isSkinnedMesh === true;
 		this.refreshUniforms = refreshUniforms;
 		this.refreshUniforms = refreshUniforms;
 		this.renderId = 0;
 		this.renderId = 0;
 
 
@@ -36422,6 +36430,12 @@ class NodeMaterialObserver {
 				worldMatrix: renderObject.object.matrixWorld.clone()
 				worldMatrix: renderObject.object.matrixWorld.clone()
 			};
 			};
 
 
+			if ( renderObject.object.morphTargetInfluences ) {
+
+				data.morphTargetInfluences = renderObject.object.morphTargetInfluences.slice();
+
+			}
+
 			if ( renderObject.bundle !== null ) {
 			if ( renderObject.bundle !== null ) {
 
 
 				data.version = renderObject.bundle.version;
 				data.version = renderObject.bundle.version;
@@ -36491,13 +36505,15 @@ class NodeMaterialObserver {
 
 
 	equals( renderObject ) {
 	equals( renderObject ) {
 
 
+		const { object, material } = renderObject;
+
 		const renderObjectData = this.getRenderObjectData( renderObject );
 		const renderObjectData = this.getRenderObjectData( renderObject );
 
 
 		// world matrix
 		// world matrix
 
 
-		if ( renderObjectData.worldMatrix.equals( renderObject.object.matrixWorld ) !== true ) {
+		if ( renderObjectData.worldMatrix.equals( object.matrixWorld ) !== true ) {
 
 
-			renderObjectData.worldMatrix.copy( renderObject.object.matrixWorld );
+			renderObjectData.worldMatrix.copy( object.matrixWorld );
 
 
 			return false;
 			return false;
 
 
@@ -36506,7 +36522,6 @@ class NodeMaterialObserver {
 		// material
 		// material
 
 
 		const materialData = renderObjectData.material;
 		const materialData = renderObjectData.material;
-		const material = renderObject.material;
 
 
 		for ( const property in materialData ) {
 		for ( const property in materialData ) {
 
 
@@ -36544,6 +36559,26 @@ class NodeMaterialObserver {
 
 
 		}
 		}
 
 
+		// morph targets
+
+		if ( renderObjectData.morphTargetInfluences ) {
+
+			let morphChanged = false;
+
+			for ( let i = 0; i < renderObjectData.morphTargetInfluences.length; i ++ ) {
+
+				if ( renderObjectData.morphTargetInfluences[ i ] !== object.morphTargetInfluences[ i ] ) {
+
+					morphChanged = true;
+
+				}
+
+			}
+
+			if ( morphChanged ) return true;
+
+		}
+
 		// bundle
 		// bundle
 
 
 		if ( renderObject.bundle !== null ) {
 		if ( renderObject.bundle !== null ) {
@@ -36558,7 +36593,7 @@ class NodeMaterialObserver {
 
 
 	needsRefresh( renderObject, nodeFrame ) {
 	needsRefresh( renderObject, nodeFrame ) {
 
 
-		if ( this.hasNode || this.firstInitialization( renderObject ) )
+		if ( this.hasNode || this.hasAnimation || this.firstInitialization( renderObject ) )
 			return true;
 			return true;
 
 
 		const { renderId } = nodeFrame;
 		const { renderId } = nodeFrame;
@@ -50118,6 +50153,35 @@ class RenderObject {
 
 
 	}
 	}
 
 
+	getGeometryCacheKey() {
+
+		const { geometry } = this;
+
+		let cacheKey = '';
+
+		for ( const name of Object.keys( geometry.attributes ).sort() ) {
+
+			const attribute = geometry.attributes[ name ];
+
+			cacheKey += name + ',';
+
+			if ( attribute.data ) cacheKey += attribute.data.stride + ',';
+			if ( attribute.offset ) cacheKey += attribute.offset + ',';
+			if ( attribute.itemSize ) cacheKey += attribute.itemSize + ',';
+			if ( attribute.normalized ) cacheKey += 'n,';
+
+		}
+
+		if ( geometry.index ) {
+
+			cacheKey += 'index,';
+
+		}
+
+		return cacheKey;
+
+	}
+
 	getMaterialCacheKey() {
 	getMaterialCacheKey() {
 
 
 		const { object, material } = this;
 		const { object, material } = this;
@@ -50174,7 +50238,7 @@ class RenderObject {
 
 
 		if ( object.geometry ) {
 		if ( object.geometry ) {
 
 
-			cacheKey += object.geometry.id + ',';
+			cacheKey += this.getGeometryCacheKey();
 
 
 		}
 		}
 
 
@@ -78483,7 +78547,6 @@ class WebGPUBackend extends Backend {
 
 
 	}
 	}
 
 
-
 	// textures
 	// textures
 
 
 	createSampler( texture ) {
 	createSampler( texture ) {

Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
build/three.webgpu.min.js


+ 73 - 10
build/three.webgpu.nodes.js

@@ -19599,12 +19599,19 @@ class CylinderGeometry extends BufferGeometry {
 
 
 					// faces
 					// faces
 
 
-					indices.push( a, b, d );
-					indices.push( b, c, d );
+					if ( radiusTop > 0 ) {
 
 
-					// update group counter
+						indices.push( a, b, d );
+						groupCount += 3;
 
 
-					groupCount += 6;
+					}
+
+					if ( radiusBottom > 0 ) {
+
+						indices.push( b, c, d );
+						groupCount += 3;
+
+					}
 
 
 				}
 				}
 
 
@@ -36390,6 +36397,7 @@ class NodeMaterialObserver {
 
 
 		this.renderObjects = new WeakMap();
 		this.renderObjects = new WeakMap();
 		this.hasNode = this.containsNode( builder );
 		this.hasNode = this.containsNode( builder );
+		this.hasAnimation = builder.object.isSkinnedMesh === true;
 		this.refreshUniforms = refreshUniforms;
 		this.refreshUniforms = refreshUniforms;
 		this.renderId = 0;
 		this.renderId = 0;
 
 
@@ -36422,6 +36430,12 @@ class NodeMaterialObserver {
 				worldMatrix: renderObject.object.matrixWorld.clone()
 				worldMatrix: renderObject.object.matrixWorld.clone()
 			};
 			};
 
 
+			if ( renderObject.object.morphTargetInfluences ) {
+
+				data.morphTargetInfluences = renderObject.object.morphTargetInfluences.slice();
+
+			}
+
 			if ( renderObject.bundle !== null ) {
 			if ( renderObject.bundle !== null ) {
 
 
 				data.version = renderObject.bundle.version;
 				data.version = renderObject.bundle.version;
@@ -36491,13 +36505,15 @@ class NodeMaterialObserver {
 
 
 	equals( renderObject ) {
 	equals( renderObject ) {
 
 
+		const { object, material } = renderObject;
+
 		const renderObjectData = this.getRenderObjectData( renderObject );
 		const renderObjectData = this.getRenderObjectData( renderObject );
 
 
 		// world matrix
 		// world matrix
 
 
-		if ( renderObjectData.worldMatrix.equals( renderObject.object.matrixWorld ) !== true ) {
+		if ( renderObjectData.worldMatrix.equals( object.matrixWorld ) !== true ) {
 
 
-			renderObjectData.worldMatrix.copy( renderObject.object.matrixWorld );
+			renderObjectData.worldMatrix.copy( object.matrixWorld );
 
 
 			return false;
 			return false;
 
 
@@ -36506,7 +36522,6 @@ class NodeMaterialObserver {
 		// material
 		// material
 
 
 		const materialData = renderObjectData.material;
 		const materialData = renderObjectData.material;
-		const material = renderObject.material;
 
 
 		for ( const property in materialData ) {
 		for ( const property in materialData ) {
 
 
@@ -36544,6 +36559,26 @@ class NodeMaterialObserver {
 
 
 		}
 		}
 
 
+		// morph targets
+
+		if ( renderObjectData.morphTargetInfluences ) {
+
+			let morphChanged = false;
+
+			for ( let i = 0; i < renderObjectData.morphTargetInfluences.length; i ++ ) {
+
+				if ( renderObjectData.morphTargetInfluences[ i ] !== object.morphTargetInfluences[ i ] ) {
+
+					morphChanged = true;
+
+				}
+
+			}
+
+			if ( morphChanged ) return true;
+
+		}
+
 		// bundle
 		// bundle
 
 
 		if ( renderObject.bundle !== null ) {
 		if ( renderObject.bundle !== null ) {
@@ -36558,7 +36593,7 @@ class NodeMaterialObserver {
 
 
 	needsRefresh( renderObject, nodeFrame ) {
 	needsRefresh( renderObject, nodeFrame ) {
 
 
-		if ( this.hasNode || this.firstInitialization( renderObject ) )
+		if ( this.hasNode || this.hasAnimation || this.firstInitialization( renderObject ) )
 			return true;
 			return true;
 
 
 		const { renderId } = nodeFrame;
 		const { renderId } = nodeFrame;
@@ -50118,6 +50153,35 @@ class RenderObject {
 
 
 	}
 	}
 
 
+	getGeometryCacheKey() {
+
+		const { geometry } = this;
+
+		let cacheKey = '';
+
+		for ( const name of Object.keys( geometry.attributes ).sort() ) {
+
+			const attribute = geometry.attributes[ name ];
+
+			cacheKey += name + ',';
+
+			if ( attribute.data ) cacheKey += attribute.data.stride + ',';
+			if ( attribute.offset ) cacheKey += attribute.offset + ',';
+			if ( attribute.itemSize ) cacheKey += attribute.itemSize + ',';
+			if ( attribute.normalized ) cacheKey += 'n,';
+
+		}
+
+		if ( geometry.index ) {
+
+			cacheKey += 'index,';
+
+		}
+
+		return cacheKey;
+
+	}
+
 	getMaterialCacheKey() {
 	getMaterialCacheKey() {
 
 
 		const { object, material } = this;
 		const { object, material } = this;
@@ -50174,7 +50238,7 @@ class RenderObject {
 
 
 		if ( object.geometry ) {
 		if ( object.geometry ) {
 
 
-			cacheKey += object.geometry.id + ',';
+			cacheKey += this.getGeometryCacheKey();
 
 
 		}
 		}
 
 
@@ -78483,7 +78547,6 @@ class WebGPUBackend extends Backend {
 
 
 	}
 	}
 
 
-
 	// textures
 	// textures
 
 
 	createSampler( texture ) {
 	createSampler( texture ) {

Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
build/three.webgpu.nodes.min.js


Неке датотеке нису приказане због велике количине промена

粤ICP备19079148号