#[repr(C)]pub struct AccelerationStructureInstance {
pub transform: TransformMatrix,
pub instance_custom_index_and_mask: Packed24_8,
pub instance_shader_binding_table_record_offset_and_flags: Packed24_8,
pub acceleration_structure_reference: DeviceAddress,
}
Expand description
Specifies a bottom-level acceleration structure instance when building a top-level structure.
Fields§
§transform: TransformMatrix
A 3x4 transformation matrix to be applied to the bottom-level acceleration structure.
The first three columns must be a 3x3 invertible matrix.
The default value is a 3x3 identity matrix, with the fourth column filled with zeroes.
instance_custom_index_and_mask: Packed24_8
Low 24 bits: A custom index value to be accessible via the InstanceCustomIndexKHR
built-in variable in ray shaders. The default value is 0.
High 8 bits: A visibility mask for the geometry. The instance will not be hit if the cull mask ANDed with this mask is zero. The default value is 0xFF.
instance_shader_binding_table_record_offset_and_flags: Packed24_8
Low 24 bits: An offset used in calculating the binding table index of the hit shader. The default value is 0.
High 8 bits: GeometryInstanceFlags
to apply to the instance. The From
trait can be
used to convert the flags into a u8
value. The default value is empty.
acceleration_structure_reference: DeviceAddress
The device address of the bottom-level acceleration structure in this instance.
The default value is 0 (null).
Trait Implementations§
source§impl Clone for AccelerationStructureInstance
impl Clone for AccelerationStructureInstance
source§fn clone(&self) -> AccelerationStructureInstance
fn clone(&self) -> AccelerationStructureInstance
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl PartialEq for AccelerationStructureInstance
impl PartialEq for AccelerationStructureInstance
source§fn eq(&self, other: &AccelerationStructureInstance) -> bool
fn eq(&self, other: &AccelerationStructureInstance) -> bool
self
and other
values to be equal, and is used
by ==
.impl Copy for AccelerationStructureInstance
impl Pod for AccelerationStructureInstance
impl StructuralPartialEq for AccelerationStructureInstance
Auto Trait Implementations§
impl RefUnwindSafe for AccelerationStructureInstance
impl Send for AccelerationStructureInstance
impl Sync for AccelerationStructureInstance
impl Unpin for AccelerationStructureInstance
impl UnwindSafe for AccelerationStructureInstance
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> BufferContents for Twhere
T: AnyBitPattern + Send + Sync,
impl<T> BufferContents for Twhere T: AnyBitPattern + Send + Sync,
source§const LAYOUT: BufferContentsLayout = const LAYOUT: BufferContentsLayout =
if let Some(layout) = BufferContentsLayout::from_sized(Layout::new::<T>())
{
layout
} else {
{
::core::panicking::panic_fmt(<#[lang = "format_arguments"]>::new_const(&["zero-sized types are not valid buffer contents"]));
};
};
const LAYOUT: BufferContentsLayout = const LAYOUT: BufferContentsLayout = if let Some(layout) = BufferContentsLayout::from_sized(Layout::new::<T>()) { layout } else { { ::core::panicking::panic_fmt(<#[lang = "format_arguments"]>::new_const(&["zero-sized types are not valid buffer contents"])); }; };
unsafe fn ptr_from_slice(slice: NonNull<[u8]>) -> *mut T
source§impl<T> CheckedBitPattern for Twhere
T: AnyBitPattern,
impl<T> CheckedBitPattern for Twhere T: AnyBitPattern,
§type Bits = T
type Bits = T
Self
must have the same layout as the specified Bits
except for
the possible invalid bit patterns being checked during
is_valid_bit_pattern
.source§fn is_valid_bit_pattern(_bits: &T) -> bool
fn is_valid_bit_pattern(_bits: &T) -> bool
bits
as &Self
.