Browse Source

WGSLNodeBuilder: Fix `generateWrapFunction()` cache includes (#29846)

sunag 1 year ago
parent
commit
d35544a5c9
1 changed files with 6 additions and 4 deletions
  1. 6 4
      src/renderers/webgpu/nodes/WGSLNodeBuilder.js

+ 6 - 4
src/renderers/webgpu/nodes/WGSLNodeBuilder.js

@@ -247,25 +247,27 @@ class WGSLNodeBuilder extends NodeBuilder {
 
 
 		if ( nodeCode === undefined ) {
 		if ( nodeCode === undefined ) {
 
 
+			const includes = [];
+
 			let code = `fn ${ functionName }( coord : vec2f ) -> vec2f {\n\n\treturn vec2f(\n`;
 			let code = `fn ${ functionName }( coord : vec2f ) -> vec2f {\n\n\treturn vec2f(\n`;
 
 
 			const addWrapSnippet = ( wrap, axis ) => {
 			const addWrapSnippet = ( wrap, axis ) => {
 
 
 				if ( wrap === RepeatWrapping ) {
 				if ( wrap === RepeatWrapping ) {
 
 
-					this._include( 'repeatWrapping_float' );
+					includes.push( wgslPolyfill.repeatWrapping_float );
 
 
 					code += `\t\ttsl_repeatWrapping_float( coord.${ axis } )`;
 					code += `\t\ttsl_repeatWrapping_float( coord.${ axis } )`;
 
 
 				} else if ( wrap === ClampToEdgeWrapping ) {
 				} else if ( wrap === ClampToEdgeWrapping ) {
 
 
-					this._include( 'clampWrapping_float' );
+					includes.push( wgslPolyfill.clampWrapping_float );
 
 
 					code += `\t\ttsl_clampWrapping_float( coord.${ axis } )`;
 					code += `\t\ttsl_clampWrapping_float( coord.${ axis } )`;
 
 
 				} else if ( wrap === MirroredRepeatWrapping ) {
 				} else if ( wrap === MirroredRepeatWrapping ) {
 
 
-					this._include( 'mirrorWrapping_float' );
+					includes.push( wgslPolyfill.mirrorWrapping_float );
 
 
 					code += `\t\ttsl_mirrorWrapping_float( coord.${ axis } )`;
 					code += `\t\ttsl_mirrorWrapping_float( coord.${ axis } )`;
 
 
@@ -287,7 +289,7 @@ class WGSLNodeBuilder extends NodeBuilder {
 
 
 			code += '\n\t);\n\n}\n';
 			code += '\n\t);\n\n}\n';
 
 
-			wgslCodeCache[ functionName ] = nodeCode = new CodeNode( code );
+			wgslCodeCache[ functionName ] = nodeCode = new CodeNode( code, includes );
 
 
 		}
 		}
 
 

粤ICP备19079148号