@@ -3307,7 +3307,7 @@ index ee5cf92a..c58f0886 100644
33073307 this.value.lightingModel = this.lightingModel || builder.context.lightingModel;
33083308
33093309diff --git a/src-testing/src/nodes/tsl/TSLCore.ts b/src-testing/src/nodes/tsl/TSLCore.ts
3310- index 5252d65c..6265bc43 100644
3310+ index 9f566882..3bf34741 100644
33113311--- a/src-testing/src/nodes/tsl/TSLCore.ts
33123312+++ b/src-testing/src/nodes/tsl/TSLCore.ts
33133313@@ -8,9 +8,38 @@ import FlipNode from '../utils/FlipNode.js';
@@ -3560,7 +3560,7 @@ index 5252d65c..6265bc43 100644
35603560 const bools = [false, true];
35613561 const uints = [0, 1, 2, 3];
35623562 const ints = [-1, -2];
3563- @@ -488 ,10 +661 ,27 @@ export function ShaderNode(jsFunc, nodeType) {
3563+ @@ -480 ,10 +653 ,27 @@ export function ShaderNode(jsFunc, nodeType) {
35643564 return new Proxy(new ShaderNodeInternal(jsFunc, nodeType), shaderNodeHandler);
35653565 }
35663566
@@ -7481,7 +7481,7 @@ index 51663d80..0ccb2461 100644
74817481
74827482 /**
74837483diff --git a/src-testing/src/renderers/common/SampledTexture.ts b/src-testing/src/renderers/common/SampledTexture.ts
7484- index 59359763..2950603b 100644
7484+ index bc5a3f61..08cc8956 100644
74857485--- a/src-testing/src/renderers/common/SampledTexture.ts
74867486+++ b/src-testing/src/renderers/common/SampledTexture.ts
74877487@@ -1,4 +1,6 @@
@@ -7521,19 +7521,10 @@ index 59359763..2950603b 100644
75217521 */
75227522- needsBindingsUpdate(generation) {
75237523+ needsBindingsUpdate(generation: number) {
7524- const { texture } = this;
7525-
75267524 if (generation !== this.generation) {
7527- @@ -82,7 +93,7 @@ class SampledTexture extends Binding {
7528- return true;
7529- }
7525+ this.generation = generation;
75307526
7531- - return texture.isVideoTexture;
7532- + return (texture as VideoTexture).isVideoTexture;
7533- }
7534-
7535- /**
7536- @@ -111,13 +122,15 @@ class SampledTexture extends Binding {
7527+ @@ -109,13 +120,15 @@ class SampledTexture extends Binding {
75377528 * @augments SampledTexture
75387529 */
75397530 class SampledArrayTexture extends SampledTexture {
@@ -7550,7 +7541,7 @@ index 59359763..2950603b 100644
75507541 super(name, texture);
75517542
75527543 /**
7553- @@ -138 ,13 +151 ,15 @@ class SampledArrayTexture extends SampledTexture {
7544+ @@ -136 ,13 +149 ,15 @@ class SampledArrayTexture extends SampledTexture {
75547545 * @augments SampledTexture
75557546 */
75567547 class Sampled3DTexture extends SampledTexture {
@@ -7567,7 +7558,7 @@ index 59359763..2950603b 100644
75677558 super(name, texture);
75687559
75697560 /**
7570- @@ -165 ,13 +180 ,15 @@ class Sampled3DTexture extends SampledTexture {
7561+ @@ -163 ,13 +178 ,15 @@ class Sampled3DTexture extends SampledTexture {
75717562 * @augments SampledTexture
75727563 */
75737564 class SampledCubeTexture extends SampledTexture {
@@ -7634,7 +7625,7 @@ index 4b7c259d..96cda7ef 100644
76347625
76357626 /**
76367627diff --git a/src-testing/src/renderers/common/Textures.ts b/src-testing/src/renderers/common/Textures.ts
7637- index f330f6e9..2dcd8ddf 100644
7628+ index 43cd8400..f78b4c21 100644
76387629--- a/src-testing/src/renderers/common/Textures.ts
76397630+++ b/src-testing/src/renderers/common/Textures.ts
76407631@@ -9,8 +9,46 @@ import {
@@ -7737,12 +7728,13 @@ index f330f6e9..2dcd8ddf 100644
77377728 let image = texture.images ? texture.images[0] : texture.image;
77387729
77397730 if (image) {
7740- @@ -306,12 +351,12 @@ class Textures extends DataMap {
7741-
7742- target.width = image.width || 1;
7743- target.height = image.height || 1;
7744- - target.depth = texture.isCubeTexture ? 6 : image.depth || 1;
7745- + target.depth = (texture as CubeTexture).isCubeTexture ? 6 : image.depth || 1;
7731+ @@ -311,13 +356,13 @@ class Textures extends DataMap {
7732+ } else {
7733+ target.width = image.width || 1;
7734+ target.height = image.height || 1;
7735+ - target.depth = texture.isCubeTexture ? 6 : image.depth || 1;
7736+ + target.depth = (texture as CubeTexture).isCubeTexture ? 6 : image.depth || 1;
7737+ }
77467738 } else {
77477739 target.width = target.height = target.depth = 1;
77487740 }
@@ -7752,7 +7744,7 @@ index f330f6e9..2dcd8ddf 100644
77527744 }
77537745
77547746 /**
7755- @@ -322 ,10 +367 ,10 @@ class Textures extends DataMap {
7747+ @@ -328 ,10 +373 ,10 @@ class Textures extends DataMap {
77567748 * @param {number} height - The texture's height.
77577749 * @return {number} The number of mipmap levels.
77587750 */
@@ -7765,7 +7757,7 @@ index f330f6e9..2dcd8ddf 100644
77657757 if (texture.mipmaps) {
77667758 mipLevelCount = texture.mipmaps.length;
77677759 } else {
7768- @@ -344 ,8 +389 ,8 @@ class Textures extends DataMap {
7760+ @@ -350 ,8 +395 ,8 @@ class Textures extends DataMap {
77697761 * @param {Texture} texture - The texture.
77707762 * @return {boolean} Whether mipmaps are required or not.
77717763 */
@@ -7776,7 +7768,7 @@ index f330f6e9..2dcd8ddf 100644
77767768 }
77777769
77787770 /**
7779- @@ -354 ,7 +399 ,7 @@ class Textures extends DataMap {
7771+ @@ -360 ,7 +405 ,7 @@ class Textures extends DataMap {
77807772 *
77817773 * @param {Texture} texture - The texture to destroy.
77827774 */
@@ -10120,7 +10112,7 @@ index c273fb8b..4c0c40cb 100644
1012010112 const nodeData = this.getDataFromNode(node, shaderStage, this.globalCache);
1012110113
1012210114diff --git a/src-testing/src/renderers/webgpu/WebGPUBackend.ts b/src-testing/src/renderers/webgpu/WebGPUBackend.ts
10123- index 6a0a2c85..2c17e42c 100644
10115+ index 1bacc55b..b66f5efa 100644
1012410116--- a/src-testing/src/renderers/webgpu/WebGPUBackend.ts
1012510117+++ b/src-testing/src/renderers/webgpu/WebGPUBackend.ts
1012610118@@ -1615,7 +1615,14 @@ class WebGPUBackend extends Backend {
@@ -10222,7 +10214,7 @@ index 37784a05..7b08961a 100644
1022210214+
1022310215 export default StandardNodeLibrary;
1022410216diff --git a/src-testing/src/renderers/webgpu/nodes/WGSLNodeBuilder.ts b/src-testing/src/renderers/webgpu/nodes/WGSLNodeBuilder.ts
10225- index fabe7508..26e15076 100644
10217+ index 7ad0a416..9294b0b2 100644
1022610218--- a/src-testing/src/renderers/webgpu/nodes/WGSLNodeBuilder.ts
1022710219+++ b/src-testing/src/renderers/webgpu/nodes/WGSLNodeBuilder.ts
1022810220@@ -10,7 +10,7 @@ import {
@@ -10234,7 +10226,7 @@ index fabe7508..26e15076 100644
1023410226
1023510227 import { getFormat } from '../utils/WebGPUTextureUtils.js';
1023610228
10237- @@ -28 ,6 +28 ,8 @@ import {
10229+ @@ -27 ,6 +27 ,8 @@ import {
1023810230 MirroredRepeatWrapping,
1023910231 NearestFilter,
1024010232 } from '../../../constants.js';
@@ -10243,7 +10235,7 @@ index fabe7508..26e15076 100644
1024310235
1024410236 // GPUShaderStage is not defined in browsers not supporting WebGPU
1024510237 const GPUShaderStage = typeof self !== 'undefined' ? self.GPUShaderStage : { VERTEX: 1, FRAGMENT: 2, COMPUTE: 4 };
10246- @@ -257 ,7 +259 ,13 @@ class WGSLNodeBuilder extends NodeBuilder {
10238+ @@ -246 ,7 +248 ,13 @@ class WGSLNodeBuilder extends NodeBuilder {
1024710239 * @param {string} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
1024810240 * @return {string} The WGSL snippet.
1024910241 */
@@ -10258,7 +10250,7 @@ index fabe7508..26e15076 100644
1025810250 if (shaderStage === 'fragment') {
1025910251 if (depthSnippet) {
1026010252 return `textureSample( ${textureProperty}, ${textureProperty}_sampler, ${uvSnippet}, ${depthSnippet} )`;
10261- @@ -465 ,7 +473 ,13 @@ class WGSLNodeBuilder extends NodeBuilder {
10253+ @@ -437 ,7 +445 ,13 @@ class WGSLNodeBuilder extends NodeBuilder {
1026210254 * @param {string} [levelSnippet='0u'] - A WGSL snippet that represents the mip level, with level 0 containing a full size version of the texture.
1026310255 * @return {string} The WGSL snippet.
1026410256 */
@@ -10273,7 +10265,7 @@ index fabe7508..26e15076 100644
1027310265 const wrapFunction = this.generateWrapFunction(texture);
1027410266 const textureDimension = this.generateTextureDimension(texture, textureProperty, levelSnippet);
1027510267
10276- @@ -485 ,9 +499 ,14 @@ class WGSLNodeBuilder extends NodeBuilder {
10268+ @@ -457 ,9 +471 ,14 @@ class WGSLNodeBuilder extends NodeBuilder {
1027710269 * @param {string} [levelSnippet='0u'] - A WGSL snippet that represents the mip level, with level 0 containing a full size version of the texture.
1027810270 * @return {string} The WGSL snippet.
1027910271 */
@@ -10287,10 +10279,10 @@ index fabe7508..26e15076 100644
1028710279+ ) {
1028810280 let snippet;
1028910281-
10290- if (texture.isVideoTexture === true ) {
10291- snippet = `textureLoad( ${textureProperty}, ${uvIndexSnippet} )`;
10292- } else if (depthSnippet) {
10293- @@ -588 ,11 +607 ,11 @@ class WGSLNodeBuilder extends NodeBuilder {
10282+ if (depthSnippet ) {
10283+ snippet = `textureLoad( ${textureProperty}, ${uvIndexSnippet}, ${depthSnippet}, u32( ${levelSnippet} ) )`;
10284+ } else {
10285+ @@ -556 ,11 +575 ,11 @@ class WGSLNodeBuilder extends NodeBuilder {
1029410286 * @return {string} The WGSL snippet.
1029510287 */
1029610288 generateTextureGrad(
@@ -10307,7 +10299,7 @@ index fabe7508..26e15076 100644
1030710299 shaderStage = this.shaderStage,
1030810300 ) {
1030910301 if (shaderStage === 'fragment') {
10310- @@ -616 ,11 +635 ,11 @@ class WGSLNodeBuilder extends NodeBuilder {
10302+ @@ -584 ,11 +603 ,11 @@ class WGSLNodeBuilder extends NodeBuilder {
1031110303 * @return {string} The WGSL snippet.
1031210304 */
1031310305 generateTextureCompare(
@@ -10324,24 +10316,22 @@ index fabe7508..26e15076 100644
1032410316 shaderStage = this.shaderStage,
1032510317 ) {
1032610318 if (shaderStage === 'fragment') {
10327- @@ -648,11 +667,11 @@ class WGSLNodeBuilder extends NodeBuilder {
10319+ @@ -615,7 +634,13 @@ class WGSLNodeBuilder extends NodeBuilder {
10320+ * @param {string} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
1032810321 * @return {string} The WGSL snippet.
1032910322 */
10330- generateTextureLevel(
10331- - texture,
10332- - textureProperty,
10333- - uvSnippet,
10334- - levelSnippet,
10335- - depthSnippet,
10323+ - generateTextureLevel(texture, textureProperty, uvSnippet, levelSnippet, depthSnippet) {
10324+ + generateTextureLevel(
1033610325+ texture: Texture,
1033710326+ textureProperty: string,
1033810327+ uvSnippet: string | null,
1033910328+ levelSnippet: string | null,
1034010329+ depthSnippet: string | null,
10341- shaderStage = this.shaderStage,
10342- ) {
10343- let snippet = null;
10344- @@ -678,11 +697,11 @@ class WGSLNodeBuilder extends NodeBuilder {
10330+ + ) {
10331+ if (this.isUnfilterable(texture) === false) {
10332+ return `textureSampleLevel( ${textureProperty}, ${textureProperty}_sampler, ${uvSnippet}, ${levelSnippet} )`;
10333+ } else if (this.isFilteredTexture(texture)) {
10334+ @@ -637,11 +662,11 @@ class WGSLNodeBuilder extends NodeBuilder {
1034510335 * @return {string} The WGSL snippet.
1034610336 */
1034710337 generateTextureBias(
@@ -10358,7 +10348,7 @@ index fabe7508..26e15076 100644
1035810348 shaderStage = this.shaderStage,
1035910349 ) {
1036010350 if (shaderStage === 'fragment') {
10361- @@ -699 ,7 +718 ,7 @@ class WGSLNodeBuilder extends NodeBuilder {
10351+ @@ -658 ,7 +683 ,7 @@ class WGSLNodeBuilder extends NodeBuilder {
1036210352 * @param {string} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
1036310353 * @return {string} The property name.
1036410354 */
@@ -10367,7 +10357,7 @@ index fabe7508..26e15076 100644
1036710357 if (node.isNodeVarying === true && node.needsInterpolation === true) {
1036810358 if (shaderStage === 'vertex') {
1036910359 return `varyings.${node.name}`;
10370- @@ -788 ,7 +807 ,12 @@ class WGSLNodeBuilder extends NodeBuilder {
10360+ @@ -747 ,7 +772 ,12 @@ class WGSLNodeBuilder extends NodeBuilder {
1037110361 * @param {?string} [name=null] - An optional uniform name.
1037210362 * @return {NodeUniform} The node uniform object.
1037310363 */
@@ -10381,7 +10371,7 @@ index fabe7508..26e15076 100644
1038110371 const uniformNode = super.getUniformFromNode(node, type, shaderStage, name);
1038210372 const nodeData = this.getDataFromNode(node, shaderStage, this.globalCache);
1038310373
10384- @@ -919 ,7 +943 ,7 @@ class WGSLNodeBuilder extends NodeBuilder {
10374+ @@ -882 ,7 +912 ,7 @@ class WGSLNodeBuilder extends NodeBuilder {
1038510375 * @param {ShaderNodeInternal} shaderNode - The shader node.
1038610376 * @return {string} The WGSL function code.
1038710377 */
@@ -10390,7 +10380,7 @@ index fabe7508..26e15076 100644
1039010380 const layout = shaderNode.layout;
1039110381 const flowData = this.flowShaderNode(shaderNode);
1039210382
10393- @@ -1203 ,8 +1227 ,8 @@ ${flowData.code}
10383+ @@ -1166 ,8 +1196 ,8 @@ ${flowData.code}
1039410384 * @param {string} shaderStage - The shader stage.
1039510385 * @return {string} The WGSL snippet that defines the shader attributes.
1039610386 */
@@ -10401,7 +10391,7 @@ index fabe7508..26e15076 100644
1040110391
1040210392 if (shaderStage === 'compute') {
1040310393 this.getBuiltin('global_invocation_id', 'globalId', 'vec3<u32>', 'attribute');
10404- @@ -1338 ,8 +1362 ,8 @@ ${flowData.code}
10394+ @@ -1301 ,8 +1331 ,8 @@ ${flowData.code}
1040510395 * @param {string} shaderStage - The shader stage.
1040610396 * @return {string} The WGSL snippet that defines the varyings.
1040710397 */
@@ -10412,7 +10402,7 @@ index fabe7508..26e15076 100644
1041210402
1041310403 if (shaderStage === 'vertex') {
1041410404 this.getBuiltin('position', 'Vertex', 'vec4<f32>', 'vertex');
10415- @@ -1404 ,7 +1428 ,7 @@ ${flowData.code}
10405+ @@ -1367 ,7 +1397 ,7 @@ ${flowData.code}
1041610406 * @param {string} shaderStage - The shader stage.
1041710407 * @return {string} The WGSL snippet that defines the uniforms.
1041810408 */
0 commit comments