@@ -1103,7 +1103,7 @@ index 190fe8c5..d873bb24 100644
1103
1103
1104
1104
this.name = name;
1105
1105
diff --git a/src-testing/src/nodes/core/NodeBuilder.ts b/src-testing/src/nodes/core/NodeBuilder.ts
1106
- index 3003d168..b8f0f8ee 100644
1106
+ index 3003d168..11c07746 100644
1107
1107
--- a/src-testing/src/nodes/core/NodeBuilder.ts
1108
1108
+++ b/src-testing/src/nodes/core/NodeBuilder.ts
1109
1109
@@ -7,7 +7,7 @@ import NodeCache from './NodeCache.js';
@@ -1515,8 +1515,8 @@ index 3003d168..b8f0f8ee 100644
1515
1515
+ texture: Texture,
1516
1516
+ textureProperty: string,
1517
1517
+ uvSnippet: string | null,
1518
- + levelSnippet: string | null,
1519
1518
+ depthSnippet: string | null,
1519
+ + levelSnippet: string | null,
1520
1520
+ ): string;
1521
1521
+
1522
1522
+ abstract generateTextureGrad(
@@ -7492,7 +7492,7 @@ index 3b16e861..99874f36 100644
7492
7492
const monitor = renderObject.getMonitor();
7493
7493
7494
7494
diff --git a/src-testing/src/renderers/webgl-fallback/WebGLBackend.ts b/src-testing/src/renderers/webgl-fallback/WebGLBackend.ts
7495
- index 7db9864a..bb852529 100644
7495
+ index 07bcda18..6ebfd686 100644
7496
7496
--- a/src-testing/src/renderers/webgl-fallback/WebGLBackend.ts
7497
7497
+++ b/src-testing/src/renderers/webgl-fallback/WebGLBackend.ts
7498
7498
@@ -13,6 +13,7 @@ import { WebGLBufferRenderer } from './WebGLBufferRenderer.js';
@@ -7503,7 +7503,7 @@ index 7db9864a..bb852529 100644
7503
7503
7504
7504
//
7505
7505
7506
- @@ -687 ,7 +688 ,7 @@ class WebGLBackend extends Backend {
7506
+ @@ -692 ,7 +693 ,7 @@ class WebGLBackend extends Backend {
7507
7507
this.textureUtils.destroyTexture(texture);
7508
7508
}
7509
7509
@@ -7924,7 +7924,7 @@ index 2cb79b70..6b5b60e0 100644
7924
7924
}
7925
7925
7926
7926
diff --git a/src-testing/src/renderers/webgpu/nodes/WGSLNodeBuilder.ts b/src-testing/src/renderers/webgpu/nodes/WGSLNodeBuilder.ts
7927
- index 088d0565..02da8cea 100644
7927
+ index ed81924a..57d481ec 100644
7928
7928
--- a/src-testing/src/renderers/webgpu/nodes/WGSLNodeBuilder.ts
7929
7929
+++ b/src-testing/src/renderers/webgpu/nodes/WGSLNodeBuilder.ts
7930
7930
@@ -10,7 +10,7 @@ import {
@@ -7936,16 +7936,16 @@ index 088d0565..02da8cea 100644
7936
7936
7937
7937
import { getFormat } from '../utils/WebGPUTextureUtils.js';
7938
7938
7939
- @@ -24,6 +24,8 @@ import {
7940
- ClampToEdgeWrapping,
7939
+ @@ -28,6 +28,8 @@ import {
7941
7940
MirroredRepeatWrapping,
7941
+ NearestFilter,
7942
7942
} from '../../../constants.js';
7943
7943
+ import { Texture } from '../../../textures/Texture.js';
7944
7944
+ import UniformNode from '../../../nodes/core/UniformNode.js';
7945
7945
7946
7946
// GPUShaderStage is not defined in browsers not supporting WebGPU
7947
7947
const GPUShaderStage = self.GPUShaderStage;
7948
- @@ -203 ,7 +205 ,13 @@ class WGSLNodeBuilder extends NodeBuilder {
7948
+ @@ -198 ,7 +200 ,13 @@ class WGSLNodeBuilder extends NodeBuilder {
7949
7949
return texture.isVideoTexture === true && texture.colorSpace !== NoColorSpace;
7950
7950
}
7951
7951
@@ -7960,22 +7960,23 @@ index 088d0565..02da8cea 100644
7960
7960
if (shaderStage === 'fragment') {
7961
7961
if (depthSnippet) {
7962
7962
return `textureSample( ${textureProperty}, ${textureProperty}_sampler, ${uvSnippet}, ${depthSnippet} )`;
7963
- @@ -317 ,7 +325,12 @@ class WGSLNodeBuilder extends NodeBuilder {
7964
- return `tsl_biquadraticTexture( ${textureProperty}, ${wrapFunction}( ${uvSnippet} ), ${textureDimension}, i32 ( ${levelSnippet} ) )`;
7963
+ @@ -318 ,7 +326,13 @@ class WGSLNodeBuilder extends NodeBuilder {
7964
+ return `tsl_biquadraticTexture( ${textureProperty}, ${wrapFunction}( ${uvSnippet} ), ${textureDimension}, u32 ( ${levelSnippet} ) )`;
7965
7965
}
7966
7966
7967
- - generateTextureLod(texture, textureProperty, uvSnippet, levelSnippet = '0 ') {
7967
+ - generateTextureLod(texture, textureProperty, uvSnippet, depthSnippet, levelSnippet = '0u ') {
7968
7968
+ generateTextureLod(
7969
7969
+ texture: Texture,
7970
7970
+ textureProperty: string,
7971
7971
+ uvSnippet: string | null,
7972
- + levelSnippet: string | null = '0',
7972
+ + depthSnippet: string | null,
7973
+ + levelSnippet: string | null = '0u',
7973
7974
+ ) {
7974
- this._include('repeatWrapping');
7975
+ const wrapFunction = this.generateWrapFunction(texture);
7976
+ const textureDimension = this.generateTextureDimension(texture, textureProperty, levelSnippet);
7975
7977
7976
- const dimension =
7977
- @@ -328,7 +341,13 @@ class WGSLNodeBuilder extends NodeBuilder {
7978
- return `textureLoad( ${textureProperty}, tsl_repeatWrapping( ${uvSnippet}, ${dimension} ), i32( ${levelSnippet} ) )`;
7978
+ @@ -327,7 +341,13 @@ class WGSLNodeBuilder extends NodeBuilder {
7979
+ return this.generateTextureLoad(texture, textureProperty, coordSnippet, depthSnippet, levelSnippet);
7979
7980
}
7980
7981
7981
7982
- generateTextureLoad(texture, textureProperty, uvIndexSnippet, depthSnippet, levelSnippet = '0u') {
@@ -7987,9 +7988,9 @@ index 088d0565..02da8cea 100644
7987
7988
+ levelSnippet = '0u',
7988
7989
+ ) {
7989
7990
if (depthSnippet) {
7990
- return `textureLoad( ${textureProperty}, ${uvIndexSnippet}, ${depthSnippet}, ${levelSnippet} )`;
7991
+ return `textureLoad( ${textureProperty}, ${uvIndexSnippet}, ${depthSnippet}, u32( ${levelSnippet} ) )`;
7991
7992
} else {
7992
- @@ -363 ,11 +382 ,11 @@ class WGSLNodeBuilder extends NodeBuilder {
7993
+ @@ -369 ,11 +389 ,11 @@ class WGSLNodeBuilder extends NodeBuilder {
7993
7994
}
7994
7995
7995
7996
generateTextureGrad(
@@ -8006,7 +8007,7 @@ index 088d0565..02da8cea 100644
8006
8007
shaderStage = this.shaderStage,
8007
8008
) {
8008
8009
if (shaderStage === 'fragment') {
8009
- @@ -379 ,11 +398 ,11 @@ class WGSLNodeBuilder extends NodeBuilder {
8010
+ @@ -385 ,11 +405 ,11 @@ class WGSLNodeBuilder extends NodeBuilder {
8010
8011
}
8011
8012
8012
8013
generateTextureCompare(
@@ -8023,7 +8024,7 @@ index 088d0565..02da8cea 100644
8023
8024
shaderStage = this.shaderStage,
8024
8025
) {
8025
8026
if (shaderStage === 'fragment') {
8026
- @@ -396 ,11 +415 ,11 @@ class WGSLNodeBuilder extends NodeBuilder {
8027
+ @@ -402 ,11 +422 ,11 @@ class WGSLNodeBuilder extends NodeBuilder {
8027
8028
}
8028
8029
8029
8030
generateTextureLevel(
@@ -8040,7 +8041,7 @@ index 088d0565..02da8cea 100644
8040
8041
shaderStage = this.shaderStage,
8041
8042
) {
8042
8043
let snippet = null;
8043
- @@ -422 ,11 +441 ,11 @@ class WGSLNodeBuilder extends NodeBuilder {
8044
+ @@ -428 ,11 +448 ,11 @@ class WGSLNodeBuilder extends NodeBuilder {
8044
8045
}
8045
8046
8046
8047
generateTextureBias(
@@ -8057,7 +8058,7 @@ index 088d0565..02da8cea 100644
8057
8058
shaderStage = this.shaderStage,
8058
8059
) {
8059
8060
if (shaderStage === 'fragment') {
8060
- @@ -436 ,7 +455 ,7 @@ class WGSLNodeBuilder extends NodeBuilder {
8061
+ @@ -442 ,7 +462 ,7 @@ class WGSLNodeBuilder extends NodeBuilder {
8061
8062
}
8062
8063
}
8063
8064
@@ -8066,7 +8067,7 @@ index 088d0565..02da8cea 100644
8066
8067
if (node.isNodeVarying === true && node.needsInterpolation === true) {
8067
8068
if (shaderStage === 'vertex') {
8068
8069
return `varyings.${node.name}`;
8069
- @@ -503 ,7 +522 ,12 @@ class WGSLNodeBuilder extends NodeBuilder {
8070
+ @@ -509 ,7 +529 ,12 @@ class WGSLNodeBuilder extends NodeBuilder {
8070
8071
}
8071
8072
}
8072
8073
@@ -8080,7 +8081,7 @@ index 088d0565..02da8cea 100644
8080
8081
const uniformNode = super.getUniformFromNode(node, type, shaderStage, name);
8081
8082
const nodeData = this.getDataFromNode(node, shaderStage, this.globalCache);
8082
8083
8083
- @@ -620 ,7 +644 ,7 @@ class WGSLNodeBuilder extends NodeBuilder {
8084
+ @@ -626 ,7 +651 ,7 @@ class WGSLNodeBuilder extends NodeBuilder {
8084
8085
return 'vertexIndex';
8085
8086
}
8086
8087
@@ -8089,7 +8090,7 @@ index 088d0565..02da8cea 100644
8089
8090
const layout = shaderNode.layout;
8090
8091
const flowData = this.flowShaderNode(shaderNode);
8091
8092
8092
- @@ -787 ,8 +811 ,8 @@ ${flowData.code}
8093
+ @@ -793 ,8 +818 ,8 @@ ${flowData.code}
8093
8094
return snippets.join('\n');
8094
8095
}
8095
8096
@@ -8100,7 +8101,7 @@ index 088d0565..02da8cea 100644
8100
8101
8101
8102
if (shaderStage === 'compute') {
8102
8103
this.getBuiltin('global_invocation_id', 'id', 'vec3<u32>', 'attribute');
8103
- @@ -874 ,8 +898 ,8 @@ ${flowData.code}
8104
+ @@ -880 ,8 +905 ,8 @@ ${flowData.code}
8104
8105
return `\n${snippets.join('\n')}\n`;
8105
8106
}
8106
8107
@@ -8111,7 +8112,7 @@ index 088d0565..02da8cea 100644
8111
8112
8112
8113
if (shaderStage === 'vertex') {
8113
8114
this.getBuiltin('position', 'Vertex', 'vec4<f32>', 'vertex');
8114
- @@ -911 ,7 +935 ,7 @@ ${flowData.code}
8115
+ @@ -917 ,7 +942 ,7 @@ ${flowData.code}
8115
8116
return shaderStage === 'vertex' ? this._getWGSLStruct('VaryingsStruct', '\t' + code) : code;
8116
8117
}
8117
8118
0 commit comments