pub struct RayTracePipeline {
    pub info: RayTracePipelineInfo,
    /* private fields */
}
Expand description

Smart pointer handle to a pipeline object.

Also contains information about the object.

Deref behavior

RayTracePipeline automatically dereferences to vk::Pipeline (via the Deref trait), so you can call vk::Pipeline’s methods on a value of type RayTracePipeline. To avoid name clashes with vk::Pipeline’s methods, the methods of RayTracePipeline itself are associated functions, called using fully qualified syntax:

Fields

info: RayTracePipelineInfo

Information used to create this object.

Implementations

Creates a new ray trace pipeline on the given device.

The correct pipeline stages will be enabled based on the provided shaders. See Shader for details on all available stages.

The number and composition of the shader_groups parameter must match the actual shaders provided.

Panics

If shader code is not a multiple of four bytes.

Examples

Basic usage:

// shader code is raw SPIR-V code as bytes
let info = RayTracePipelineInfo::new().max_ray_recursion_depth(1);
let pipeline = RayTracePipeline::create(
    &device,
    info,
    [
        Shader::new_ray_gen(my_rgen_code.as_slice()),
        Shader::new_closest_hit(my_chit_code.as_slice()),
        Shader::new_miss(my_miss_code.as_slice()),
        Shader::new_miss(my_shadow_code.as_slice()),
    ],
    [
        RayTraceShaderGroup::new_general(0),
        RayTraceShaderGroup::new_triangles(1, None),
        RayTraceShaderGroup::new_general(2),
        RayTraceShaderGroup::new_general(3),
    ],
)?;

assert_ne!(*pipeline, vk::Pipeline::null());
assert_eq!(pipeline.info.max_ray_recursion_depth, 1);

Function returning a handle to a shader group of this pipeline. This can be used to construct a sbt.

Examples

See ray_trace.rs for a detail example which constructs a shader binding table buffer using this function.

Trait Implementations

The default AccessType for read operations, if not specified explicitly.
The default AccessType for write operations, if not specified explicitly.
Formats the value using the given formatter. Read more
The resulting type after dereferencing.
Dereferences the value.
Executes the destructor for this type. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.