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 built-in 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 non-depth 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 non-uniform 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 non-uniform 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 non-uniform 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.
| |