pub struct Image<SampledType: SampleType<FORMAT>, const DIM: u32, const DEPTH: u32, const ARRAYED: u32, const MULTISAMPLED: u32, const SAMPLED: u32, const FORMAT: u32> { /* private fields */ }
Expand description
An opaque image type. Corresponds to OpTypeImage
.
You likely want to write this type using the crate::Image!
macro helper, as the generic
arguments here can get extremely verbose.
See SPIR-V OpTypeImage specification for the meaning of integer parameters.
Implementations§
source§impl<SampledType: SampleType<FORMAT>, const DIM: u32, const DEPTH: u32, const ARRAYED: u32, const MULTISAMPLED: u32, const FORMAT: u32> Image<SampledType, DIM, DEPTH, ARRAYED, MULTISAMPLED, { _ }, FORMAT>
impl<SampledType: SampleType<FORMAT>, const DIM: u32, const DEPTH: u32, const ARRAYED: u32, const MULTISAMPLED: u32, const FORMAT: u32> Image<SampledType, DIM, DEPTH, ARRAYED, MULTISAMPLED, { _ }, FORMAT>
sourcepub fn fetch<V, I>(&self, coordinate: impl ImageCoordinate<I, DIM, ARRAYED>) -> Vwhere
V: Vector<SampledType, 4>,
I: Integer,
pub fn fetch<V, I>(&self, coordinate: impl ImageCoordinate<I, DIM, ARRAYED>) -> Vwhere
V: Vector<SampledType, 4>,
I: Integer,
Fetch a single texel with a sampler set at compile time
source§impl<SampledType: SampleType<FORMAT>, const DIM: u32, const DEPTH: u32, const FORMAT: u32, const ARRAYED: u32, const SAMPLED: u32> Image<SampledType, DIM, DEPTH, ARRAYED, { _ }, SAMPLED, FORMAT>
impl<SampledType: SampleType<FORMAT>, const DIM: u32, const DEPTH: u32, const FORMAT: u32, const ARRAYED: u32, const SAMPLED: u32> Image<SampledType, DIM, DEPTH, ARRAYED, { _ }, SAMPLED, FORMAT>
sourcepub fn gather<F, V>(
&self,
sampler: Sampler,
coordinate: impl ImageCoordinate<F, DIM, ARRAYED>,
component: u32
) -> Vwhere
Self: HasGather,
F: Float,
V: Vector<SampledType, 4>,
pub fn gather<F, V>(
&self,
sampler: Sampler,
coordinate: impl ImageCoordinate<F, DIM, ARRAYED>,
component: u32
) -> Vwhere
Self: HasGather,
F: Float,
V: Vector<SampledType, 4>,
Gathers the requested component from four texels.
sourcepub fn sample<F, V>(
&self,
sampler: Sampler,
coord: impl ImageCoordinate<F, DIM, ARRAYED>
) -> Vwhere
F: Float,
V: Vector<SampledType, 4>,
pub fn sample<F, V>(
&self,
sampler: Sampler,
coord: impl ImageCoordinate<F, DIM, ARRAYED>
) -> Vwhere
F: Float,
V: Vector<SampledType, 4>,
Sample texels at coord
from the image using sampler
.
sourcepub fn sample_bias<F, V>(
&self,
sampler: Sampler,
coord: impl ImageCoordinate<F, DIM, ARRAYED>,
bias: f32
) -> Vwhere
F: Float,
V: Vector<SampledType, 4>,
pub fn sample_bias<F, V>(
&self,
sampler: Sampler,
coord: impl ImageCoordinate<F, DIM, ARRAYED>,
bias: f32
) -> Vwhere
F: Float,
V: Vector<SampledType, 4>,
Sample texels at coord
from the image using sampler
, after adding the input bias to the
implicit level of detail.
sourcepub fn sample_by_lod<F, V>(
&self,
sampler: Sampler,
coordinate: impl ImageCoordinate<F, DIM, ARRAYED>,
lod: f32
) -> Vwhere
F: Float,
V: Vector<SampledType, 4>,
pub fn sample_by_lod<F, V>(
&self,
sampler: Sampler,
coordinate: impl ImageCoordinate<F, DIM, ARRAYED>,
lod: f32
) -> Vwhere
F: Float,
V: Vector<SampledType, 4>,
Fetch a single texel with a sampler set at compile time Sample the image at a coordinate by a lod
sourcepub fn sample_by_gradient<F, V>(
&self,
sampler: Sampler,
coordinate: impl ImageCoordinate<F, DIM, ARRAYED>,
gradient_dx: impl ImageCoordinate<F, DIM, { _ }>,
gradient_dy: impl ImageCoordinate<F, DIM, { _ }>
) -> Vwhere
F: Float,
V: Vector<SampledType, 4>,
pub fn sample_by_gradient<F, V>(
&self,
sampler: Sampler,
coordinate: impl ImageCoordinate<F, DIM, ARRAYED>,
gradient_dx: impl ImageCoordinate<F, DIM, { _ }>,
gradient_dy: impl ImageCoordinate<F, DIM, { _ }>
) -> Vwhere
F: Float,
V: Vector<SampledType, 4>,
Sample the image based on a gradient formed by (dx, dy). Specifically, ([du/dx, dv/dx], [du/dy, dv/dy])
sourcepub fn sample_depth_reference<F>(
&self,
sampler: Sampler,
coordinate: impl ImageCoordinate<F, DIM, ARRAYED>,
depth_reference: f32
) -> SampledTypewhere
F: Float,
pub fn sample_depth_reference<F>(
&self,
sampler: Sampler,
coordinate: impl ImageCoordinate<F, DIM, ARRAYED>,
depth_reference: f32
) -> SampledTypewhere
F: Float,
Sample the image’s depth reference
sourcepub fn sample_depth_reference_by_lod<F>(
&self,
sampler: Sampler,
coordinate: impl ImageCoordinate<F, DIM, ARRAYED>,
depth_reference: f32,
lod: f32
) -> SampledTypewhere
F: Float,
pub fn sample_depth_reference_by_lod<F>(
&self,
sampler: Sampler,
coordinate: impl ImageCoordinate<F, DIM, ARRAYED>,
depth_reference: f32,
lod: f32
) -> SampledTypewhere
F: Float,
Sample the image’s depth reference based on an explicit lod
sourcepub fn sample_depth_reference_by_gradient<F>(
&self,
sampler: Sampler,
coordinate: impl ImageCoordinate<F, DIM, ARRAYED>,
depth_reference: f32,
gradient_dx: impl ImageCoordinate<F, DIM, { _ }>,
gradient_dy: impl ImageCoordinate<F, DIM, { _ }>
) -> SampledTypewhere
F: Float,
pub fn sample_depth_reference_by_gradient<F>(
&self,
sampler: Sampler,
coordinate: impl ImageCoordinate<F, DIM, ARRAYED>,
depth_reference: f32,
gradient_dx: impl ImageCoordinate<F, DIM, { _ }>,
gradient_dy: impl ImageCoordinate<F, DIM, { _ }>
) -> SampledTypewhere
F: Float,
Sample the image’s depth reference based on a gradient formed by (dx, dy). Specifically, ([du/dx, dv/dx], [du/dy, dv/dy])
source§impl<SampledType: SampleType<FORMAT>, const DIM: u32, const DEPTH: u32, const SAMPLED: u32, const FORMAT: u32> Image<SampledType, DIM, DEPTH, { _ }, { _ }, SAMPLED, FORMAT>
impl<SampledType: SampleType<FORMAT>, const DIM: u32, const DEPTH: u32, const SAMPLED: u32, const FORMAT: u32> Image<SampledType, DIM, DEPTH, { _ }, { _ }, SAMPLED, FORMAT>
sourcepub fn sample_with_project_coordinate<F, V>(
&self,
sampler: Sampler,
project_coordinate: impl ImageCoordinate<F, DIM, { _ }>
) -> Vwhere
F: Float,
V: Vector<SampledType, 4>,
pub fn sample_with_project_coordinate<F, V>(
&self,
sampler: Sampler,
project_coordinate: impl ImageCoordinate<F, DIM, { _ }>
) -> Vwhere
F: Float,
V: Vector<SampledType, 4>,
Sample the image with a project coordinate
sourcepub fn sample_with_project_coordinate_by_lod<F, V>(
&self,
sampler: Sampler,
project_coordinate: impl ImageCoordinate<F, DIM, { _ }>,
lod: f32
) -> Vwhere
F: Float,
V: Vector<SampledType, 4>,
pub fn sample_with_project_coordinate_by_lod<F, V>(
&self,
sampler: Sampler,
project_coordinate: impl ImageCoordinate<F, DIM, { _ }>,
lod: f32
) -> Vwhere
F: Float,
V: Vector<SampledType, 4>,
Sample the image with a project coordinate by a lod
sourcepub fn sample_with_project_coordinate_by_gradient<F, V>(
&self,
sampler: Sampler,
project_coordinate: impl ImageCoordinate<F, DIM, { _ }>,
gradient_dx: impl ImageCoordinate<F, DIM, { _ }>,
gradient_dy: impl ImageCoordinate<F, DIM, { _ }>
) -> Vwhere
F: Float,
V: Vector<SampledType, 4>,
pub fn sample_with_project_coordinate_by_gradient<F, V>(
&self,
sampler: Sampler,
project_coordinate: impl ImageCoordinate<F, DIM, { _ }>,
gradient_dx: impl ImageCoordinate<F, DIM, { _ }>,
gradient_dy: impl ImageCoordinate<F, DIM, { _ }>
) -> Vwhere
F: Float,
V: Vector<SampledType, 4>,
Sample the image with a project coordinate based on a gradient formed by (dx, dy). Specifically, ([du/dx, dv/dx], [du/dy, dv/dy])
sourcepub fn sample_depth_reference_with_project_coordinate<F>(
&self,
sampler: Sampler,
project_coordinate: impl ImageCoordinate<F, DIM, { _ }>,
depth_reference: f32
) -> SampledTypewhere
F: Float,
pub fn sample_depth_reference_with_project_coordinate<F>(
&self,
sampler: Sampler,
project_coordinate: impl ImageCoordinate<F, DIM, { _ }>,
depth_reference: f32
) -> SampledTypewhere
F: Float,
Sample the image’s depth reference with the project coordinate
sourcepub fn sample_depth_reference_with_project_coordinate_by_lod<F>(
&self,
sampler: Sampler,
coordinate: impl ImageCoordinate<F, DIM, { _ }>,
depth_reference: f32,
lod: f32
) -> SampledTypewhere
F: Float,
pub fn sample_depth_reference_with_project_coordinate_by_lod<F>(
&self,
sampler: Sampler,
coordinate: impl ImageCoordinate<F, DIM, { _ }>,
depth_reference: f32,
lod: f32
) -> SampledTypewhere
F: Float,
Sample the image’s depth reference with the project coordinate based on an explicit lod
sourcepub fn sample_depth_reference_with_project_coordinate_by_gradient<F>(
&self,
sampler: Sampler,
coordinate: impl ImageCoordinate<F, DIM, { _ }>,
depth_reference: f32,
gradient_dx: impl ImageCoordinate<F, DIM, { _ }>,
gradient_dy: impl ImageCoordinate<F, DIM, { _ }>
) -> SampledTypewhere
F: Float,
pub fn sample_depth_reference_with_project_coordinate_by_gradient<F>(
&self,
sampler: Sampler,
coordinate: impl ImageCoordinate<F, DIM, { _ }>,
depth_reference: f32,
gradient_dx: impl ImageCoordinate<F, DIM, { _ }>,
gradient_dy: impl ImageCoordinate<F, DIM, { _ }>
) -> SampledTypewhere
F: Float,
Sample the image’s depth reference with the project coordinate based on a gradient formed by (dx, dy). Specifically, ([du/dx, dv/dx], [du/dy, dv/dy])
source§impl<SampledType: SampleType<FORMAT>, const DIM: u32, const DEPTH: u32, const ARRAYED: u32, const MULTISAMPLED: u32, const FORMAT: u32> Image<SampledType, DIM, DEPTH, ARRAYED, MULTISAMPLED, { _ }, FORMAT>
impl<SampledType: SampleType<FORMAT>, const DIM: u32, const DEPTH: u32, const ARRAYED: u32, const MULTISAMPLED: u32, const FORMAT: u32> Image<SampledType, DIM, DEPTH, ARRAYED, MULTISAMPLED, { _ }, FORMAT>
source§impl<SampledType: SampleType<FORMAT>, const DIM: u32, const DEPTH: u32, const FORMAT: u32, const ARRAYED: u32, const MULTISAMPLED: u32> Image<SampledType, DIM, DEPTH, ARRAYED, MULTISAMPLED, { _ }, FORMAT>
impl<SampledType: SampleType<FORMAT>, const DIM: u32, const DEPTH: u32, const FORMAT: u32, const ARRAYED: u32, const MULTISAMPLED: u32> Image<SampledType, DIM, DEPTH, ARRAYED, MULTISAMPLED, { _ }, FORMAT>
source§impl<SampledType: SampleType<FORMAT>, const DEPTH: u32, const ARRAYED: u32, const MULTISAMPLED: u32, const FORMAT: u32> Image<SampledType, { _ }, DEPTH, ARRAYED, MULTISAMPLED, { _ }, FORMAT>
impl<SampledType: SampleType<FORMAT>, const DEPTH: u32, const ARRAYED: u32, const MULTISAMPLED: u32, const FORMAT: u32> Image<SampledType, { _ }, DEPTH, ARRAYED, MULTISAMPLED, { _ }, FORMAT>
sourcepub fn read_subpass<I, V, const N: usize>(
&self,
coordinate: impl ImageCoordinateSubpassData<I, ARRAYED>
) -> Vwhere
I: Integer,
V: Vector<SampledType, N>,
pub fn read_subpass<I, V, const N: usize>(
&self,
coordinate: impl ImageCoordinateSubpassData<I, ARRAYED>
) -> Vwhere
I: Integer,
V: Vector<SampledType, N>,
Read a texel from subpass input attachment. Note: Vulkan only allows the read if the first two components of the coordinate are zero.
source§impl<SampledType: SampleType<FORMAT>, const DIM: u32, const DEPTH: u32, const ARRAYED: u32, const MULTISAMPLED: u32, const SAMPLED: u32, const FORMAT: u32> Image<SampledType, DIM, DEPTH, ARRAYED, MULTISAMPLED, SAMPLED, FORMAT>
impl<SampledType: SampleType<FORMAT>, const DIM: u32, const DEPTH: u32, const ARRAYED: u32, const MULTISAMPLED: u32, const SAMPLED: u32, const FORMAT: u32> Image<SampledType, DIM, DEPTH, ARRAYED, MULTISAMPLED, SAMPLED, FORMAT>
sourcepub fn query_levels(&self) -> u32where
Self: HasQueryLevels,
pub fn query_levels(&self) -> u32where
Self: HasQueryLevels,
Query the number of mipmap levels.
sourcepub fn query_lod<V: Vector<f32, 2>>(
&self,
sampler: Sampler,
coord: impl ImageCoordinate<f32, DIM, { _ }>
) -> Vwhere
Self: HasQueryLevels,
pub fn query_lod<V: Vector<f32, 2>>(
&self,
sampler: Sampler,
coord: impl ImageCoordinate<f32, DIM, { _ }>
) -> Vwhere
Self: HasQueryLevels,
Query the mipmap level and the level of detail for a hypothetical sampling of Image at Coordinate using an implicit level of detail. The first component of the result contains the mipmap array layer. The second component of the result contains the implicit level of detail relative to the base level.
sourcepub fn query_size<Size: ImageCoordinate<u32, DIM, ARRAYED> + Default>(
&self
) -> Sizewhere
Self: HasQuerySize,
pub fn query_size<Size: ImageCoordinate<u32, DIM, ARRAYED> + Default>(
&self
) -> Sizewhere
Self: HasQuerySize,
Query the dimensions of Image, with no level of detail.
source§impl<SampledType: SampleType<FORMAT>, const DIM: u32, const DEPTH: u32, const ARRAYED: u32, const SAMPLED: u32, const FORMAT: u32> Image<SampledType, DIM, DEPTH, ARRAYED, { _ }, SAMPLED, FORMAT>
impl<SampledType: SampleType<FORMAT>, const DIM: u32, const DEPTH: u32, const ARRAYED: u32, const SAMPLED: u32, const FORMAT: u32> Image<SampledType, DIM, DEPTH, ARRAYED, { _ }, SAMPLED, FORMAT>
sourcepub fn query_size_lod<Size: ImageCoordinate<u32, DIM, ARRAYED> + Default>(
&self,
lod: u32
) -> Sizewhere
Self: HasQuerySizeLod,
pub fn query_size_lod<Size: ImageCoordinate<u32, DIM, ARRAYED> + Default>(
&self,
lod: u32
) -> Sizewhere
Self: HasQuerySizeLod,
Query the dimensions of Image, with no level of detail.
source§impl<SampledType: SampleType<FORMAT>, const DEPTH: u32, const ARRAYED: u32, const SAMPLED: u32, const FORMAT: u32> Image<SampledType, { _ }, DEPTH, ARRAYED, { _ }, SAMPLED, FORMAT>
impl<SampledType: SampleType<FORMAT>, const DEPTH: u32, const ARRAYED: u32, const SAMPLED: u32, const FORMAT: u32> Image<SampledType, { _ }, DEPTH, ARRAYED, { _ }, SAMPLED, FORMAT>
sourcepub fn query_samples(&self) -> u32
pub fn query_samples(&self) -> u32
Query the number of samples available per texel fetch in a multisample image.