spirv_std::ray_tracing

Struct AccelerationStructure

Source
#[repr(C)]
pub struct AccelerationStructure { /* private fields */ }
Expand description

An acceleration structure type which is an opaque reference to an acceleration structure handle as defined in the client API specification.

Implementations§

Source§

impl AccelerationStructure

Source

pub unsafe fn from_u64(id: u64) -> AccelerationStructure

Converts a 64-bit integer into an AccelerationStructure.

§Safety

The 64-bit integer must point to a valid acceleration structure.

Source

pub unsafe fn from_vec(id: impl Vector<u32, 2>) -> AccelerationStructure

Converts a vector of two 32 bit integers into an AccelerationStructure.

§Safety

The combination must point to a valid acceleration structure.

Source

pub unsafe fn trace_ray<T>( &self, ray_flags: RayFlags, cull_mask: i32, sbt_offset: i32, sbt_stride: i32, miss_index: i32, ray_origin: impl Vector<f32, 3>, ray_tmin: f32, ray_direction: impl Vector<f32, 3>, ray_tmax: f32, payload: &mut T, )

Trace a ray into the acceleration structure.

  • structure is the descriptor for the acceleration structure to trace into.

  • ray_flags contains one or more of the Ray Flag values.

  • cull_mask is the mask to test against the instance mask. Only the 8 least-significant bits of are used by this instruction - other bits are ignored.

  • sbt_offset and sbt_stride control indexing into the SBT (Shader Binding Table) for hit shaders called from this trace. Only the 4 least-significant bits of sbt_offset and sbt_stride are used by this instruction - other bits are ignored.

  • miss_index is the index of the miss shader to be called from this trace call. Only the 16 least-significant bits are used by this instruction - other bits are ignored.

  • ray_origin, ray_tmin, ray_direction, and ray_tmax control the basic parameters of the ray to be traced.

  • payload is a pointer to the ray payload structure to use for this trace. payload must have a storage class of ray_payload or incoming_ray_payload.

This instruction is allowed only in ray_generation, closest_hit and miss execution models.

This instruction is a shader call instruction which may invoke shaders with the intersection, any_hit, closest_hit, and miss execution models.

Trait Implementations§

Source§

impl Clone for AccelerationStructure

Source§

fn clone(&self) -> AccelerationStructure

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for AccelerationStructure

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

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

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.