fn textureDimensions(t: T) > u32  ST is i32, u32, or f32 F is a texel format A is an access mode T is texture_1d<ST> or texture_storage_1d<F,A>
 
fn textureDimensions(t: T, level: L) > u32 
ST is i32, u32, or f32 T is texture_1d<ST>
L is i32, or u32
 
fn textureDimensions(t: T) > vec2<u32>  ST is i32, u32, or f32 F is a texel format A is an access mode T is texture_2d<ST>, texture_2d_array<ST>, texture_cube<ST>, texture_cube_array<ST>, texture_multisampled_2d<ST>, texture_depth_2d, texture_depth_2d_array, texture_depth_cube, texture_depth_cube_array, texture_depth_multisampled_2d, texture_storage_2d<F,A>, texture_storage_2d_array<F,A>,
or texture_external
 
fn textureDimensions(t: T, level: L) > vec2<u32> 
ST is i32, u32, or f32 T is texture_2d<ST>, texture_2d_array<ST>, texture_cube<ST>, texture_cube_array<ST>, texture_depth_2d, texture_depth_2d_array, texture_depth_cube, or texture_depth_cube_array
L is i32, or u32
 
fn textureDimensions(t: T) > vec3<u32>  ST is i32, u32, or f32 F is a texel format A is an access mode T is texture_3d<ST> or texture_storage_3d<F,A>
 
fn textureDimensions(t: T, level: L) > vec3<u32> 
ST is i32, u32, or f32 T is texture_3d<ST>
L is i32, or u32
 
Returns:
The coordinate dimensions of the texture.
That is, the result provides the integer bounds on the coordinates of the logical texel address,
excluding the mip level count, array size, and sample count.
For textures based on cubes, the results are the dimensions of each face of the cube.
Cube faces are square, so the x and y components of the result are equal.
If level is outside the range [0, textureNumLevels(t)) then an indeterminate value for the return type may be returned. 
fn textureGather(component: C, t: texture_2d<ST>, s: sampler, coords: vec2<f32>) > vec4<ST>  C is i32, or u32 ST is i32, u32, or f32
 
fn textureGather(component: C, t: texture_2d<ST>, s: sampler, coords: vec2<f32>, offset: vec2<i32>) > vec4<ST>  C is i32, or u32 ST is i32, u32, or f32
 
fn textureGather(component: C, t: texture_2d_array<ST>, s: sampler, coords: vec2<f32>, array_index: A) > vec4<ST>  C is i32, or u32 A is i32, or u32 ST is i32, u32, or f32
 
fn textureGather(component: C, t: texture_2d_array<ST>, s: sampler, coords: vec2<f32>, array_index: A, offset: vec2<i32>) > vec4<ST>  C is i32, or u32 A is i32, or u32 ST is i32, u32, or f32
 
fn textureGather(component: C, t: texture_cube<ST>, s: sampler, coords: vec3<f32>) > vec4<ST>  C is i32, or u32 ST is i32, u32, or f32
 
fn textureGather(component: C, t: texture_cube_array<ST>, s: sampler, coords: vec3<f32>, array_index: A) > vec4<ST>  C is i32, or u32 A is i32, or u32 ST is i32, u32, or f32
 
fn textureGather(t: texture_depth_2d, s: sampler, coords: vec2<f32>) > vec4<f32> 
 
fn textureGather(t: texture_depth_2d, s: sampler, coords: vec2<f32>, offset: vec2<i32>) > vec4<f32> 
 
fn textureGather(t: texture_depth_cube, s: sampler, coords: vec3<f32>) > vec4<f32> 
 
fn textureGather(t: texture_depth_2d_array, s: sampler, coords: vec2<f32>, array_index: A) > vec4<f32>  A is i32, or u32
 
fn textureGather(t: texture_depth_2d_array, s: sampler, coords: vec2<f32>, array_index: A, offset: vec2<i32>) > vec4<f32>  A is i32, or u32
 
fn textureGather(t: texture_depth_cube_array, s: sampler, coords: vec3<f32>, array_index: A) > vec4<f32>  A is i32, or u32
 
Returns:
A four component vector with components extracted from the specified channel from the selected texels, as described above.
EXAMPLE: Gather components from texels in 2D texture
@group(0) @binding(0) var t: texture_2d<f32>;
@group(0) @binding(1) var dt: texture_depth_2d;
@group(0) @binding(2) var s: sampler;
fn gather_x_components(c: vec2<f32>) > vec4<f32> {
return textureGather(0,t,s,c);
}
fn gather_y_components(c: vec2<f32>) > vec4<f32> {
return textureGather(1,t,s,c);
}
fn gather_z_components(c: vec2<f32>) > vec4<f32> {
return textureGather(2,t,s,c);
}
fn gather_depth_components(c: vec2<f32>) > vec4<f32> {
return textureGather(dt,s,c);
}

fn textureGatherCompare(t: texture_depth_2d, s: sampler_comparison, coords: vec2<f32>, depth_ref: f32) > vec4<f32> 
 
fn textureGatherCompare(t: texture_depth_2d, s: sampler_comparison, coords: vec2<f32>, depth_ref: f32, offset: vec2<i32>) > vec4<f32> 
 
fn textureGatherCompare(t: texture_depth_2d_array, s: sampler_comparison, coords: vec2<f32>, array_index: A, depth_ref: f32) > vec4<f32>  A is i32, or u32
 
fn textureGatherCompare(t: texture_depth_2d_array, s: sampler_comparison, coords: vec2<f32>, array_index: A, depth_ref: f32, offset: vec2<i32>) > vec4<f32>  A is i32, or u32
 
fn textureGatherCompare(t: texture_depth_cube, s: sampler_comparison, coords: vec3<f32>, depth_ref: f32) > vec4<f32> 
 
fn textureGatherCompare(t: texture_depth_cube_array, s: sampler_comparison, coords: vec3<f32>, array_index: A, depth_ref: f32) > vec4<f32>  A is i32, or u32
 
Returns:
A four component vector with comparison result for the selected texels, as described above.
EXAMPLE: Gather depth comparison
@group(0) @binding(0) var dt: texture_depth_2d;
@group(0) @binding(1) var s: sampler;
fn gather_depth_compare(c: vec2<f32>, depth_ref: f32) > vec4<f32> {
return textureGatherCompare(dt,s,c,depth_ref);
}

fn textureLoad(t: texture_1d<ST>, coords: C, level: L) > vec4<ST>  C is i32, or u32 L is i32, or u32 ST is i32, u32, or f32
 
fn textureLoad(t: texture_2d<ST>, coords: vec2<C>, level: L) > vec4<ST>  C is i32, or u32 L is i32, or u32 ST is i32, u32, or f32
 
fn textureLoad(t: texture_2d_array<ST>, coords: vec2<C>, array_index: A, level: L) > vec4<ST>  C is i32, or u32 A is i32, or u32 L is i32, or u32 ST is i32, u32, or f32
 
fn textureLoad(t: texture_3d<ST>, coords: vec3<C>, level: L) > vec4<ST>  C is i32, or u32 L is i32, or u32 ST is i32, u32, or f32
 
fn textureLoad(t: texture_multisampled_2d<ST>, coords: vec2<C>, sample_index: S)> vec4<ST>  C is i32, or u32 S is i32, or u32 ST is i32, u32, or f32
 
fn textureLoad(t: texture_depth_2d, coords: vec2<C>, level: L) > f32  C is i32, or u32 L is i32, or u32
 
fn textureLoad(t: texture_depth_2d_array, coords: vec2<C>, array_index: A, level: L) > f32  C is i32, or u32 A is i32, or u32 L is i32, or u32
 
fn textureLoad(t: texture_depth_multisampled_2d, coords: vec2<C>, sample_index: S)> f32  C is i32, or u32 S is i32, or u32
 
fn textureLoad(t: texture_external, coords: vec2<C>) > vec4<f32>  C is i32, or u32
 
Returns:
The unfiltered texel data.
The logical texel address is invalid if:

any element of coords is outside the range [0, textureDimensions(t, level)) for the corresponding element, or

array_index is outside the range [0, textureNumLayers(t)) , or

level is outside the range [0, textureNumLevels(t)) , or

sample_index is outside the range [0, textureNumSamples(s))
If the logical texel addresss is invalid, the builtin function returns one of:

The data for some texel within bounds of the texture

A vector (0,0,0,0) or (0,0,0,1) of the appropriate type for nondepth textures

0.0 for depth textures

fn textureNumLayers(t: T) > u32  F is a texel format A is an access mode ST is i32, u32, or f32 T is texture_2d_array<ST>, texture_cube_array<ST>, texture_depth_2d_array, texture_depth_cube_array,
or texture_storage_2d_array<F,A>
 
Returns:
If the texture is based on cubes, returns the number of cubes in the cube arrayed texture.
Otherwise returns the number of layers (homogeneous grids of texels) in the arrayed texture. 
fn textureNumLevels(t: T) > u32  ST is i32, u32, or f32 T is texture_1d<ST>, texture_2d<ST>, texture_2d_array<ST>, texture_3d<ST>, texture_cube<ST>, texture_cube_array<ST>, texture_depth_2d, texture_depth_2d_array, texture_depth_cube, or texture_depth_cube_array
 
Returns:
The mip level count for the texture. 
fn textureNumSamples(t: T) > u32  ST is i32, u32, or f32 T is texture_multisampled_2d<ST> or texture_depth_multisampled_2d
 
Returns:
The sample count for the multisampled texture. 
fn textureSample(t: texture_1d<f32>, s: sampler, coords: f32) > vec4<f32> 
 
fn textureSample(t: texture_2d<f32>, s: sampler, coords: vec2<f32>) > vec4<f32> 
 
fn textureSample(t: texture_2d<f32>, s: sampler, coords: vec2<f32>, offset: vec2<i32>) > vec4<f32> 
 
fn textureSample(t: texture_2d_array<f32>, s: sampler, coords: vec2<f32>, array_index: A) > vec4<f32>  A is i32, or u32
 
fn textureSample(t: texture_2d_array<f32>, s: sampler, coords: vec2<f32>, array_index: A, offset: vec2<i32>) > vec4<f32>  A is i32, or u32
 
fn textureSample(t: T, s: sampler, coords: vec3<f32>) > vec4<f32>  T is texture_3d<f32>, or texture_cube<f32>
 
fn textureSample(t: texture_3d<f32>, s: sampler, coords: vec3<f32>, offset: vec3<i32>) > vec4<f32> 
 
fn textureSample(t: texture_cube_array<f32>, s: sampler, coords: vec3<f32>, array_index: A) > vec4<f32>  A is i32, or u32
 
fn textureSample(t: texture_depth_2d, s: sampler, coords: vec2<f32>) > f32 
 
fn textureSample(t: texture_depth_2d, s: sampler, coords: vec2<f32>, offset: vec2<i32>) > f32 
 
fn textureSample(t: texture_depth_2d_array, s: sampler, coords: vec2<f32>, array_index: A) > f32  A is i32, or u32
 
fn textureSample(t: texture_depth_2d_array, s: sampler, coords: vec2<f32>, array_index: A, offset: vec2<i32>) > f32  A is i32, or u32
 
fn textureSample(t: texture_depth_cube, s: sampler, coords: vec3<f32>) > f32 
 
fn textureSample(t: texture_depth_cube_array, s: sampler, coords: vec3<f32>, array_index: A) > f32  A is i32, or u32
 
Returns:
The sampled value.
An indeterminate value results if called in nonuniform control flow. 
fn textureSampleBias(t: texture_2d<f32>, s: sampler, coords: vec2<f32>, bias: f32) > vec4<f32> 
 
fn textureSampleBias(t: texture_2d<f32>, s: sampler, coords: vec2<f32>, bias: f32, offset: vec2<i32>) > vec4<f32> 
 
fn textureSampleBias(t: texture_2d_array<f32>, s: sampler, coords: vec2<f32>, array_index: A, bias: f32) > vec4<f32>  A is i32, or u32
 
fn textureSampleBias(t: texture_2d_array<f32>, s: sampler, coords: vec2<f32>, array_index: A, bias: f32, offset: vec2<i32>) > vec4<f32>  A is i32, or u32
 
fn textureSampleBias(t: T, s: sampler, coords: vec3<f32>, bias: f32) > vec4<f32>  T is texture_3d<f32>, or texture_cube<f32>
 
fn textureSampleBias(t: texture_3d<f32>, s: sampler, coords: vec3<f32>, bias: f32, offset: vec3<i32>) > vec4<f32> 
 
fn textureSampleBias(t: texture_cube_array<f32>, s: sampler, coords: vec3<f32>, array_index: A, bias: f32) > vec4<f32>  A is i32, or u32
 
Returns:
The sampled value.
An indeterminate value results if called in nonuniform control flow. 
fn textureSampleCompare(t: texture_depth_2d, s: sampler_comparison, coords: vec2<f32>, depth_ref: f32) > f32 
 
fn textureSampleCompare(t: texture_depth_2d, s: sampler_comparison, coords: vec2<f32>, depth_ref: f32, offset: vec2<i32>) > f32 
 
fn textureSampleCompare(t: texture_depth_2d_array, s: sampler_comparison, coords: vec2<f32>, array_index: A, depth_ref: f32) > f32  A is i32, or u32
 
fn textureSampleCompare(t: texture_depth_2d_array, s: sampler_comparison, coords: vec2<f32>, array_index: A, depth_ref: f32, offset: vec2<i32>) > f32  A is i32, or u32
 
fn textureSampleCompare(t: texture_depth_cube, s: sampler_comparison, coords: vec3<f32>, depth_ref: f32) > f32 
 
fn textureSampleCompare(t: texture_depth_cube_array, s: sampler_comparison, coords: vec3<f32>, array_index: A, depth_ref: f32) > f32  A is i32, or u32
 
Returns:
A value in the range [0.0..1.0] .
Each sampled texel is compared against the reference value using the comparison
operator defined by the sampler_comparison , resulting in either a 0 or 1 value for each texel.
If the sampler uses bilinear filtering then the returned value is
the filtered average of these values, otherwise the comparison result of a
single texel is returned.
An indeterminate value results if called in nonuniform control flow. 
fn textureSampleCompareLevel(t: texture_depth_2d, s: sampler_comparison, coords: vec2<f32>, depth_ref: f32) > f32 
 
fn textureSampleCompareLevel(t: texture_depth_2d, s: sampler_comparison, coords: vec2<f32>, depth_ref: f32, offset: vec2<i32>) > f32 
 
fn textureSampleCompareLevel(t: texture_depth_2d_array, s: sampler_comparison, coords: vec2<f32>, array_index: A, depth_ref: f32) > f32  A is i32, or u32
 
fn textureSampleCompareLevel(t: texture_depth_2d_array, s: sampler_comparison, coords: vec2<f32>, array_index: A, depth_ref: f32, offset: vec2<i32>) > f32  A is i32, or u32
 
fn textureSampleCompareLevel(t: texture_depth_cube, s: sampler_comparison, coords: vec3<f32>, depth_ref: f32) > f32 
 
fn textureSampleCompareLevel(t: texture_depth_cube_array, s: sampler_comparison, coords: vec3<f32>, array_index: A, depth_ref: f32) > f32  A is i32, or u32
 
Returns:
A value in the range [0.0..1.0] .
The textureSampleCompareLevel function is the same as textureSampleCompare , except that:

fn textureSampleGrad(t: texture_2d<f32>, s: sampler, coords: vec2<f32>, ddx: vec2<f32>, ddy: vec2<f32>) > vec4<f32> 
 
fn textureSampleGrad(t: texture_2d<f32>, s: sampler, coords: vec2<f32>, ddx: vec2<f32>, ddy: vec2<f32>, offset: vec2<i32>) > vec4<f32> 
 
fn textureSampleGrad(t: texture_2d_array<f32>, s: sampler, coords: vec2<f32>, array_index: A, ddx: vec2<f32>, ddy: vec2<f32>) > vec4<f32>  A is i32, or u32
 
fn textureSampleGrad(t: texture_2d_array<f32>, s: sampler, coords: vec2<f32>, array_index: A, ddx: vec2<f32>, ddy: vec2<f32>, offset: vec2<i32>) > vec4<f32>  A is i32, or u32
 
fn textureSampleGrad(t: T, s: sampler, coords: vec3<f32>, ddx: vec3<f32>, ddy: vec3<f32>) > vec4<f32>  T is texture_3d<f32>, or texture_cube<f32>
 
fn textureSampleGrad(t: texture_3d<f32>, s: sampler, coords: vec3<f32>, ddx: vec3<f32>, ddy: vec3<f32>, offset: vec3<i32>) > vec4<f32> 
 
fn textureSampleGrad(t: texture_cube_array<f32>, s: sampler, coords: vec3<f32>, array_index: A, ddx: vec3<f32>, ddy: vec3<f32>) > vec4<f32>  A is i32, or u32
 
Returns:
The sampled value. 
fn textureSampleLevel(t: texture_2d<f32>, s: sampler, coords: vec2<f32>, level: f32) > vec4<f32> 
 
fn textureSampleLevel(t: texture_2d<f32>, s: sampler, coords: vec2<f32>, level: f32, offset: vec2<i32>) > vec4<f32> 
 
fn textureSampleLevel(t: texture_2d_array<f32>, s: sampler, coords: vec2<f32>, array_index: A, level: f32) > vec4<f32>  A is i32, or u32
 
fn textureSampleLevel(t: texture_2d_array<f32>, s: sampler, coords: vec2<f32>, array_index: A, level: f32, offset: vec2<i32>) > vec4<f32>  A is i32, or u32
 
fn textureSampleLevel(t: T, s: sampler, coords: vec3<f32>, level: f32) > vec4<f32>  T is texture_3d<f32>, or texture_cube<f32>
 
fn textureSampleLevel(t: texture_3d<f32>, s: sampler, coords: vec3<f32>, level: f32, offset: vec3<i32>) > vec4<f32> 
 
fn textureSampleLevel(t: texture_cube_array<f32>, s: sampler, coords: vec3<f32>, array_index: A, level: f32) > vec4<f32>  A is i32, or u32
 
fn textureSampleLevel(t: texture_depth_2d, s: sampler, coords: vec2<f32>, level: L) > f32  L is i32, or u32
 
fn textureSampleLevel(t: texture_depth_2d, s: sampler, coords: vec2<f32>, level: L, offset: vec2<i32>) > f32  L is i32, or u32
 
fn textureSampleLevel(t: texture_depth_2d_array, s: sampler, coords: vec2<f32>, array_index: A, level: L) > f32  A is i32, or u32 L is i32, or u32
 
fn textureSampleLevel(t: texture_depth_2d_array, s: sampler, coords: vec2<f32>, array_index: A, level: L, offset: vec2<i32>) > f32  A is i32, or u32 L is i32, or u32
 
fn textureSampleLevel(t: texture_depth_cube, s: sampler, coords: vec3<f32>, level: L) > f32  L is i32, or u32
 
fn textureSampleLevel(t: texture_depth_cube_array, s: sampler, coords: vec3<f32>, array_index: A, level: L) > f32  A is i32, or u32 L is i32, or u32
 
Returns:
The sampled value. 
fn textureSampleBaseClampToEdge(t: T, s: sampler, coords: vec2<f32>) > vec4<f32>  T is texture_2d<f32> or texture_external
 
Returns:
The sampled value. 
fn textureStore(t: texture_storage_1d<F,write>, coords: C, value: vec4<CF>)  F is a texel format C is i32, or u32 CF depends on the storage texel format F. See the texel format table for the mapping of texel
format to channel format.
 
fn textureStore(t: texture_storage_2d<F,write>, coords: vec2<C>, value: vec4<CF>)  F is a texel format C is i32, or u32 CF depends on the storage texel format F. See the texel format table for the mapping of texel
format to channel format.
 
fn textureStore(t: texture_storage_2d_array<F,write>, coords: vec2<C>, array_index: A, value: vec4<CF>)  F is a texel format C is i32, or u32 A is i32, or u32 CF depends on the storage texel format F. See the texel format table for the mapping of texel
format to channel format.
 
fn textureStore(t: texture_storage_3d<F,write>, coords: vec3<C>, value: vec4<CF>)  F is a texel format C is i32, or u32 CF depends on the storage texel format F. See the texel format table for the mapping of texel
format to channel format.
 