Possible to sample from sampler2darray with TSL in nodes system?

I am trying to find out whether there is a method to use a sampler2darray with nodes system.

I have tried:

texture(diffuseTex, vec3(x.xy.add(offa), x.z) )

and

texture(diffuseTex, x.xy.add(offa), uint(x.z) )

But I receive this error:

Error while parsing WGSL: :303:14 error: no matching call to textureSample(texture_2d_array<f32>, sampler, vec2<f32>)

15 candidate functions:
  textureSample(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>) -> vec4<f32>
  textureSample(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>) -> f32
  textureSample(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: A) -> vec4<f32>  where: A is i32 or u32
  textureSample(texture: texture_1d<f32>, sampler: sampler, coords: f32) -> vec4<f32>
  textureSample(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>) -> vec4<f32>
  textureSample(texture: texture_cube<f32>, sampler: sampler, coords: vec3<f32>) -> vec4<f32>
  textureSample(texture: texture_depth_cube, sampler: sampler, coords: vec3<f32>) -> f32
  textureSample(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, offset: vec2<i32>) -> vec4<f32>
  textureSample(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>, offset: vec2<i32>) -> f32
  textureSample(texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: A) -> f32  where: A is i32 or u32
  textureSample(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: A, offset: vec2<i32>) -> vec4<f32>  where: A is i32 or u32
  textureSample(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>, offset: vec3<i32>) -> vec4<f32>
  textureSample(texture: texture_cube_array<f32>, sampler: sampler, coords: vec3<f32>, array_index: A) -> vec4<f32>  where: A is i32 or u32
  textureSample(texture: texture_depth_cube_array, sampler: sampler, coords: vec3<f32>, array_index: A) -> f32  where: A is i32 or u32
  textureSample(texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: A, offset: vec2<i32>) -> f32  where: A is i32 or u32

  nodeVar17 = textureSample( nodeUniform6, nodeUniform6_sampler, vec3<f32>( ( nodeVar8.xy + nodeVar14 ), nodeVar8.z ).xy );
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

diffuseTex is a DataArrayTexture of 1024 x 1024 values

I am a bit confused as to why TSL is converting the vec3 to a vec2, as indicated by the error. Should this be possible with r163?

I may have found the solution:

texture(diffuseTex, x.xy.add(offa).xy).depth(x.z)
1 Like