2
0
Эх сурвалжийг харах

compile node material per object

sunag 4 жил өмнө
parent
commit
59e8e47d2d

+ 2 - 3
examples/jsm/renderers/webgpu/WebGPUBindings.js

@@ -24,12 +24,11 @@ class WebGPUBindings {
 		if ( data === undefined ) {
 
 			const pipeline = this.pipelines.get( object );
-			const material = object.material;
-
-			const nodeBuilder = this.nodes.get( material );
 
 			// each material defines an array of bindings (ubos, textures, samplers etc.)
 
+			const nodeBuilder = this.nodes.get( object );
+
 			const bindings = nodeBuilder.getBindings();
 
 			// setup (static) binding layout and (dynamic) binding group

+ 2 - 9
examples/jsm/renderers/webgpu/WebGPURenderPipelines.js

@@ -57,7 +57,7 @@ class WebGPURenderPipelines {
 
 			// get shader
 
-			const nodeBuilder = this.nodes.get( material );
+			const nodeBuilder = this.nodes.get( object );
 
 			// shader modules
 
@@ -788,22 +788,15 @@ class WebGPURenderPipelines {
 function onMaterialDispose( event ) {
 
 	const properties = this.properties;
-	const nodes = this.nodes;
-	const shaderModules = this.shaderModules;
 
 	const material = event.target;
 	const materialProperties = properties.get( material );
-	const nodeBuilder = nodes.get( material );
 
 	material.removeEventListener( 'dispose', materialProperties.disposeCallback );
 
 	properties.remove( material );
-	nodes.remove( material );
 
-	shaderModules.vertex.delete( nodeBuilder.vertexShader );
-	shaderModules.fragment.delete( nodeBuilder.fragmentShader );
-
-	// @TODO: still needed remove bindings and pipeline
+	// @TODO: still needed remove nodes, bindings and pipeline
 
 }
 

+ 7 - 7
examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js

@@ -13,15 +13,15 @@ class WebGPUNodes {
 
 	}
 
-	get( material ) {
+	get( object ) {
 
-		let nodeBuilder = this.builders.get( material );
+		let nodeBuilder = this.builders.get( object );
 
 		if ( nodeBuilder === undefined ) {
 
-			nodeBuilder = new WebGPUNodeBuilder( material, this.renderer ).build();
+			nodeBuilder = new WebGPUNodeBuilder( object.material, this.renderer ).build();
 
-			this.builders.set( material, nodeBuilder );
+			this.builders.set( object, nodeBuilder );
 
 		}
 
@@ -29,9 +29,9 @@ class WebGPUNodes {
 
 	}
 
-	remove( material ) {
+	remove( object ) {
 
-		this.builders.delete( material );
+		this.builders.delete( object );
 
 	}
 
@@ -45,7 +45,7 @@ class WebGPUNodes {
 
 		const material = object.material;
 
-		const nodeBuilder = this.get( material );
+		const nodeBuilder = this.get( object );
 		const nodeFrame = this.nodeFrame;
 
 		nodeFrame.material = material;