vulkan-3.6.11.1: Bindings to the Vulkan graphics API.
Safe HaskellNone
LanguageHaskell2010

Vulkan.Extensions.VK_KHR_ray_tracing

Synopsis

Documentation

destroyAccelerationStructureKHR Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device that destroys the buffer.

-> AccelerationStructureKHR

accelerationStructure is the acceleration structure to destroy.

-> ("allocator" ::: Maybe AllocationCallbacks)

pAllocator controls host memory allocation as described in the Memory Allocation chapter.

-> io () 

vkDestroyAccelerationStructureKHR - Destroy an acceleration structure object

Valid Usage

  • All submitted commands that refer to accelerationStructure must have completed execution
  • If AllocationCallbacks were provided when accelerationStructure was created, a compatible set of callbacks must be provided here
  • If no AllocationCallbacks were provided when accelerationStructure was created, pAllocator must be NULL

Valid Usage (Implicit)

  • device must be a valid Device handle
  • If accelerationStructure is not NULL_HANDLE, accelerationStructure must be a valid AccelerationStructureKHR handle
  • If pAllocator is not NULL, pAllocator must be a valid pointer to a valid AllocationCallbacks structure
  • If accelerationStructure is a valid handle, it must have been created, allocated, or retrieved from device

Host Synchronization

  • Host access to accelerationStructure must be externally synchronized

See Also

AccelerationStructureKHR, AllocationCallbacks, Device

getAccelerationStructureMemoryRequirementsKHR Source #

Arguments

:: forall a io. (Extendss MemoryRequirements2 a, PokeChain a, PeekChain a, MonadIO io) 
=> Device

device is the logical device on which the acceleration structure was created.

device must be a valid Device handle

-> AccelerationStructureMemoryRequirementsInfoKHR

pInfo specifies the acceleration structure to get memory requirements for.

pInfo must be a valid pointer to a valid AccelerationStructureMemoryRequirementsInfoKHR structure

-> io (MemoryRequirements2 a) 

vkGetAccelerationStructureMemoryRequirementsKHR - Get acceleration structure memory requirements

Valid Usage (Implicit)

See Also

AccelerationStructureMemoryRequirementsInfoKHR, Device, MemoryRequirements2

bindAccelerationStructureMemoryKHR Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device that owns the acceleration structures and memory.

device must be a valid Device handle

-> ("bindInfos" ::: Vector BindAccelerationStructureMemoryInfoKHR)

pBindInfos is a pointer to an array of BindAccelerationStructureMemoryInfoKHR structures describing acceleration structures and memory to bind.

pBindInfos must be a valid pointer to an array of bindInfoCount valid BindAccelerationStructureMemoryInfoKHR structures

-> io () 

vkBindAccelerationStructureMemoryKHR - Bind acceleration structure memory

Return Codes

Success
Failure

See Also

BindAccelerationStructureMemoryInfoKHR, Device

cmdCopyAccelerationStructureKHR Source #

Arguments

:: forall a io. (Extendss CopyAccelerationStructureInfoKHR a, PokeChain a, MonadIO io) 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> CopyAccelerationStructureInfoKHR a

pInfo is a pointer to a CopyAccelerationStructureInfoKHR structure defining the copy operation.

-> io () 

vkCmdCopyAccelerationStructureKHR - Copy an acceleration structure

Valid Usage

Valid Usage (Implicit)

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer Levels Render Pass Scope Supported Queue Types Pipeline Type
Primary Secondary Outside Compute

See Also

CommandBuffer, CopyAccelerationStructureInfoKHR

copyAccelerationStructureKHR :: forall a io. (Extendss CopyAccelerationStructureInfoKHR a, PokeChain a, MonadIO io) => Device -> CopyAccelerationStructureInfoKHR a -> io Result Source #

vkCopyAccelerationStructureKHR - Copy an acceleration structure on the host

Parameters

This command fulfills the same task as cmdCopyAccelerationStructureKHR but executed by the host.

Description

  • device is the device which owns the acceleration structures.

If the DeferredOperationInfoKHR structure is included in the pNext chain of the CopyAccelerationStructureInfoKHR structure, the operation of this command is deferred, as defined in the Deferred Host Operations chapter.

Valid Usage

Valid Usage (Implicit)

  • device must be a valid Device handle

Return Codes

Success
Failure

See Also

CopyAccelerationStructureInfoKHR, Device

cmdCopyAccelerationStructureToMemoryKHR :: forall a io. (Extendss CopyAccelerationStructureToMemoryInfoKHR a, PokeChain a, MonadIO io) => CommandBuffer -> CopyAccelerationStructureToMemoryInfoKHR a -> io () Source #

vkCmdCopyAccelerationStructureToMemoryKHR - Copy an acceleration structure to device memory

Parameters

This command produces the same results as copyAccelerationStructureToMemoryKHR, but writes its result to a device address, and is executed on the device rather than the host. The output may not necessarily be bit-for-bit identical, but it can be equally used by either cmdCopyMemoryToAccelerationStructureKHR or copyMemoryToAccelerationStructureKHR.

Description

  • commandBuffer is the command buffer into which the command will be recorded.

The defined header structure for the serialized data consists of:

The corresponding handles matching the values returned by getAccelerationStructureDeviceAddressKHR or getAccelerationStructureHandleNV are tightly packed in the buffer following the count. The application is expected to store a mapping between those handles and the original application-generated bottom-level acceleration structures to provide when deserializing.

Valid Usage

  • All DeviceOrHostAddressConstKHR referenced by this command must contain valid device addresses for a buffer bound to device memory. If the buffer is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory object

Valid Usage (Implicit)

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer Levels Render Pass Scope Supported Queue Types Pipeline Type
Primary Secondary Outside Compute

See Also

CommandBuffer, CopyAccelerationStructureToMemoryInfoKHR

copyAccelerationStructureToMemoryKHR :: forall a io. (Extendss CopyAccelerationStructureToMemoryInfoKHR a, PokeChain a, MonadIO io) => Device -> CopyAccelerationStructureToMemoryInfoKHR a -> io Result Source #

vkCopyAccelerationStructureToMemoryKHR - Serialize an acceleration structure on the host

Parameters

This command fulfills the same task as cmdCopyAccelerationStructureToMemoryKHR but executed by the host.

Description

This command produces the same results as cmdCopyAccelerationStructureToMemoryKHR, but writes its result directly to a host pointer, and is executed on the host rather than the device. The output may not necessarily be bit-for-bit identical, but it can be equally used by either cmdCopyMemoryToAccelerationStructureKHR or copyMemoryToAccelerationStructureKHR.

If the DeferredOperationInfoKHR structure is included in the pNext chain of the CopyAccelerationStructureToMemoryInfoKHR structure, the operation of this command is deferred, as defined in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operations chapter.

Valid Usage

Valid Usage (Implicit)

  • device must be a valid Device handle

Return Codes

Success
Failure

See Also

CopyAccelerationStructureToMemoryInfoKHR, Device

cmdCopyMemoryToAccelerationStructureKHR :: forall a io. (Extendss CopyMemoryToAccelerationStructureInfoKHR a, PokeChain a, MonadIO io) => CommandBuffer -> CopyMemoryToAccelerationStructureInfoKHR a -> io () Source #

vkCmdCopyMemoryToAccelerationStructureKHR - Copy device memory to an acceleration structure

Parameters

This command can accept acceleration structures produced by either cmdCopyAccelerationStructureToMemoryKHR or copyAccelerationStructureToMemoryKHR.

Description

  • commandBuffer is the command buffer into which the command will be recorded.

The structure provided as input to deserialize is as described in cmdCopyAccelerationStructureToMemoryKHR, with any acceleration structure handles filled in with the newly-queried handles to bottom level acceleration structures created before deserialization. These do not need to be built at deserialize time, but must be created.

Valid Usage

  • All DeviceOrHostAddressKHR referenced by this command must contain valid device addresses for a buffer bound to device memory. If the buffer is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory object

Valid Usage (Implicit)

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer Levels Render Pass Scope Supported Queue Types Pipeline Type
Primary Secondary Outside Compute

See Also

CommandBuffer, CopyMemoryToAccelerationStructureInfoKHR

copyMemoryToAccelerationStructureKHR :: forall a io. (Extendss CopyMemoryToAccelerationStructureInfoKHR a, PokeChain a, MonadIO io) => Device -> CopyMemoryToAccelerationStructureInfoKHR a -> io Result Source #

vkCopyMemoryToAccelerationStructureKHR - Deserialize an acceleration structure on the host

Parameters

This command fulfills the same task as cmdCopyMemoryToAccelerationStructureKHR but is executed by the host.

Description

This command can accept acceleration structures produced by either cmdCopyAccelerationStructureToMemoryKHR or copyAccelerationStructureToMemoryKHR.

If the DeferredOperationInfoKHR structure is included in the pNext chain of the CopyMemoryToAccelerationStructureInfoKHR structure, the operation of this command is deferred, as defined in the Deferred Host Operations chapter.

Valid Usage

Valid Usage (Implicit)

  • device must be a valid Device handle

Return Codes

Success
Failure

See Also

CopyMemoryToAccelerationStructureInfoKHR, Device

cmdWriteAccelerationStructuresPropertiesKHR Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> ("accelerationStructures" ::: Vector AccelerationStructureKHR)

pAccelerationStructures is a pointer to an array of existing previously built acceleration structures.

-> QueryType

queryType is a QueryType value specifying the type of queries managed by the pool.

-> QueryPool

queryPool is the query pool that will manage the results of the query.

-> ("firstQuery" ::: Word32)

firstQuery is the first query index within the query pool that will contain the accelerationStructureCount number of results.

-> io () 

vkCmdWriteAccelerationStructuresPropertiesKHR - Write acceleration structure result parameters to query results.

Valid Usage

  • queryPool must have been created with a queryType matching queryType

Valid Usage (Implicit)

  • pAccelerationStructures must be a valid pointer to an array of accelerationStructureCount valid AccelerationStructureKHR handles
  • queryType must be a valid QueryType value
  • queryPool must be a valid QueryPool handle
  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support compute operations
  • This command must only be called outside of a render pass instance
  • accelerationStructureCount must be greater than 0
  • Each of commandBuffer, queryPool, and the elements of pAccelerationStructures must have been created, allocated, or retrieved from the same Device

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer Levels Render Pass Scope Supported Queue Types Pipeline Type
Primary Secondary Outside Compute

See Also

AccelerationStructureKHR, CommandBuffer, QueryPool, QueryType

writeAccelerationStructuresPropertiesKHR :: forall io. MonadIO io => Device -> ("accelerationStructures" ::: Vector AccelerationStructureKHR) -> QueryType -> ("dataSize" ::: Word64) -> ("data" ::: Ptr ()) -> ("stride" ::: Word64) -> io () Source #

vkWriteAccelerationStructuresPropertiesKHR - Query acceleration structure meta-data on the host

Parameters

This command fulfills the same task as cmdWriteAccelerationStructuresPropertiesKHR but executed by the host.

Description

  • device is the device which owns the acceleration structures in pAccelerationStructures.
  • accelerationStructureCount is the count of acceleration structures for which to query the property.
  • pAccelerationStructures points to an array of existing previously built acceleration structures.
  • queryType is a QueryType value specifying the property to be queried.
  • dataSize is the size in bytes of the buffer pointed to by pData.
  • pData is a pointer to a user-allocated buffer where the results will be written.
  • stride is the stride in bytes between results for individual queries within pData.

Valid Usage

Valid Usage (Implicit)

  • device must be a valid Device handle
  • pAccelerationStructures must be a valid pointer to an array of accelerationStructureCount valid AccelerationStructureKHR handles
  • queryType must be a valid QueryType value
  • pData must be a valid pointer to an array of dataSize bytes
  • accelerationStructureCount must be greater than 0
  • dataSize must be greater than 0
  • Each element of pAccelerationStructures must have been created, allocated, or retrieved from device

Return Codes

Success
Failure

See Also

AccelerationStructureKHR, Device, QueryType

cmdTraceRaysKHR Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> ("raygenShaderBindingTable" ::: StridedBufferRegionKHR)

pRaygenShaderBindingTable is a StridedBufferRegionKHR that holds the shader binding table data for the ray generation shader stage.

-> ("missShaderBindingTable" ::: StridedBufferRegionKHR)

pMissShaderBindingTable is a StridedBufferRegionKHR that holds the shader binding table data for the miss shader stage.

-> ("hitShaderBindingTable" ::: StridedBufferRegionKHR)

pHitShaderBindingTable is a StridedBufferRegionKHR that holds the shader binding table data for the hit shader stage.

-> ("callableShaderBindingTable" ::: StridedBufferRegionKHR)

pCallableShaderBindingTable is a StridedBufferRegionKHR that holds the shader binding table data for the callable shader stage.

-> ("width" ::: Word32)

width is the width of the ray trace query dimensions.

-> ("height" ::: Word32)

height is height of the ray trace query dimensions.

-> ("depth" ::: Word32)

depth is depth of the ray trace query dimensions.

-> io () 

vkCmdTraceRaysKHR - Initialize a ray tracing dispatch

Description

When the command is executed, a ray generation group of width × height × depth rays is assembled.

Valid Usage

  • If a ImageView is accessed using atomic operations as a result of this command, then the image view’s format features must contain FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
  • If a ImageView is sampled with FILTER_CUBIC_EXT as a result of this command, then the image view’s format features must contain FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
  • Any ImageView being sampled with FILTER_CUBIC_EXT as a result of this command must have a ImageViewType and format that supports cubic filtering, as specified by FilterCubicImageViewImageFormatPropertiesEXT::filterCubic returned by getPhysicalDeviceImageFormatProperties2
  • Any ImageView being sampled with FILTER_CUBIC_EXT with a reduction mode of either SAMPLER_REDUCTION_MODE_MIN or SAMPLER_REDUCTION_MODE_MAX as a result of this command must have a ImageViewType and format that supports cubic filtering together with minmax filtering, as specified by FilterCubicImageViewImageFormatPropertiesEXT::filterCubicMinmax returned by getPhysicalDeviceImageFormatProperties2
  • Any Image created with a ImageCreateInfo::flags containing IMAGE_CREATE_CORNER_SAMPLED_BIT_NV sampled as a result of this command must only be sampled using a SamplerAddressMode of SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
  • For each set n that is statically used by the Pipeline bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a PipelineLayout that is compatible for set n, with the PipelineLayout used to create the current Pipeline, as described in ???
  • For each push constant that is statically used by the Pipeline bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a PipelineLayout that is compatible for push constants, with the PipelineLayout used to create the current Pipeline, as described in ???
  • Descriptors in each bound descriptor set, specified via cmdBindDescriptorSets, must be valid if they are statically used by the Pipeline bound to the pipeline bind point used by this command
  • A valid pipeline must be bound to the pipeline bind point used by this command
  • If the Pipeline object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for commandBuffer, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
  • There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the Pipeline object bound to the pipeline bind point used by this command, since that pipeline was bound
  • If the Pipeline object bound to the pipeline bind point used by this command accesses a Sampler object that uses unnormalized coordinates, that sampler must not be used to sample from any Image with a ImageView of the type IMAGE_VIEW_TYPE_3D, IMAGE_VIEW_TYPE_CUBE, IMAGE_VIEW_TYPE_1D_ARRAY, IMAGE_VIEW_TYPE_2D_ARRAY or IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage
  • If the Pipeline object bound to the pipeline bind point used by this command accesses a Sampler object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with ImplicitLod, Dref or Proj in their name, in any shader stage
  • If the Pipeline object bound to the pipeline bind point used by this command accesses a Sampler object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions that includes a LOD bias or any offset values, in any shader stage
  • If the robust buffer access feature is not enabled, and if the Pipeline object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point
  • If the robust buffer access feature is not enabled, and if the Pipeline object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point
  • If commandBuffer is an unprotected command buffer, any resource accessed by the Pipeline object bound to the pipeline bind point used by this command must not be a protected resource
  • If a ImageView is accessed using OpImageWrite as a result of this command, then the Type of the Texel operand of that instruction must have at least as many components as the image view’s format.
  • If a BufferView is accessed using OpImageWrite as a result of this command, then the Type of the Texel operand of that instruction must have at least as many components as the image view’s format.
  • If a ImageView with a Format that has a 64-bit channel width is accessed as a result of this command, the SampledType of the OpTypeImage operand of that instruction must have a Width of 64.
  • If a ImageView with a Format that has a channel width less than 64-bit is accessed as a result of this command, the SampledType of the OpTypeImage operand of that instruction must have a Width of 32.
  • If a BufferView with a Format that has a 64-bit channel width is accessed as a result of this command, the SampledType of the OpTypeImage operand of that instruction must have a Width of 64.
  • If a BufferView with a Format that has a channel width less than 64-bit is accessed as a result of this command, the SampledType of the OpTypeImage operand of that instruction must have a Width of 32.
  • If the sparseImageInt64Atomics feature is not enabled, Image objects created with the IMAGE_CREATE_SPARSE_RESIDENCY_BIT flag must not be accessed by atomic instructions through an OpTypeImage with a SampledType with a Width of 64 by this command.
  • If the sparseImageInt64Atomics feature is not enabled, Buffer objects created with the BUFFER_CREATE_SPARSE_RESIDENCY_BIT flag must not be accessed by atomic instructions through an OpTypeImage with a SampledType with a Width of 64 by this command.
  • Any shader group handle referenced by this call must have been queried from the currently bound ray tracing shader pipeline
  • This command must not cause a shader call instruction to be executed from a shader invocation with a recursion depth greater than the value of maxRecursionDepth used to create the bound ray tracing pipeline
  • If pRayGenShaderBindingTable->buffer is non-sparse then it must be bound completely and contiguously to a single DeviceMemory object
  • The offset member of pRayGenShaderBindingTable must be less than the size of the pRayGenShaderBindingTable->buffer
  • pRayGenShaderBindingTable->offset must be a multiple of PhysicalDeviceRayTracingPropertiesKHR::shaderGroupBaseAlignment
  • pRayGenShaderBindingTable->offset + pRayGenShaderBindingTable->size must be less than or equal to the size of pRayGenShaderBindingTable->buffer
  • The size member of pRayGenShaderBindingTable must be equal to its stride member
  • If pMissShaderBindingTable->buffer is non-sparse then it must be bound completely and contiguously to a single DeviceMemory object
  • The offset member of pMissShaderBindingTable must be less than the size of pMissShaderBindingTable->buffer
  • The offset member of pMissShaderBindingTable must be a multiple of PhysicalDeviceRayTracingPropertiesKHR::shaderGroupBaseAlignment
  • pMissShaderBindingTable->offset + pMissShaderBindingTable->size must be less than or equal to the size of pMissShaderBindingTable->buffer
  • The stride member of pMissShaderBindingTable must be a multiple of PhysicalDeviceRayTracingPropertiesKHR::shaderGroupHandleSize
  • The stride member of pMissShaderBindingTable must be less than or equal to PhysicalDeviceRayTracingPropertiesKHR::maxShaderGroupStride
  • If pHitShaderBindingTable->buffer is non-sparse then it must be bound completely and contiguously to a single DeviceMemory object
  • The offset member of pHitShaderBindingTable must be less than the size of pHitShaderBindingTable->buffer
  • The offset member of pHitShaderBindingTable must be a multiple of PhysicalDeviceRayTracingPropertiesKHR::shaderGroupBaseAlignment
  • pHitShaderBindingTable->offset + pHitShaderBindingTable->size must be less than or equal to the size of pHitShaderBindingTable->buffer
  • The stride member of pHitShaderBindingTable must be a multiple of PhysicalDeviceRayTracingPropertiesKHR::shaderGroupHandleSize
  • The stride member of pHitShaderBindingTable must be less than or equal to PhysicalDeviceRayTracingPropertiesKHR::maxShaderGroupStride
  • If pCallableShaderBindingTable->buffer is non-sparse then it must be bound completely and contiguously to a single DeviceMemory object
  • The offset member of pCallableShaderBindingTable must be less than the size of pCallableShaderBindingTable->buffer
  • The offset member of pCallableShaderBindingTable must be a multiple of PhysicalDeviceRayTracingPropertiesKHR::shaderGroupBaseAlignment
  • pCallableShaderBindingTable->offset + pCallableShaderBindingTable->size must be less than or equal to the size of pCallableShaderBindingTable->buffer
  • The stride member of pCallableShaderBindingTable must be a multiple of PhysicalDeviceRayTracingPropertiesKHR::shaderGroupHandleSize
  • The stride member of pCallableShaderBindingTable must be less than or equal to PhysicalDeviceRayTracingPropertiesKHR::maxShaderGroupStride
  • If the currently bound ray tracing pipeline was created with flags that included PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR, the buffer member of pHitShaderBindingTable must not be NULL_HANDLE
  • If the currently bound ray tracing pipeline was created with flags that included PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR, the buffer member of pHitShaderBindingTable must not be NULL_HANDLE
  • If the currently bound ray tracing pipeline was created with flags that included PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR, the buffer member of pHitShaderBindingTable must not be NULL_HANDLE
  • If the currently bound ray tracing pipeline was created with flags that included PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR, the shader group handle identified by pMissShaderBindingTable must contain a valid miss shader
  • If the currently bound ray tracing pipeline was created with flags that included PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR, entries in pHitShaderBindingTable accessed as a result of this command in order to execute an any hit shader must not be set to zero
  • If the currently bound ray tracing pipeline was created with flags that included PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR, entries in pHitShaderBindingTable accessed as a result of this command in order to execute a closest hit shader must not be set to zero
  • If the currently bound ray tracing pipeline was created with flags that included PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR, entries in pHitShaderBindingTable accessed as a result of this command in order to execute an intersection shader must not be set to zero
  • If commandBuffer is a protected command buffer, any resource written to by the Pipeline object bound to the pipeline bind point used by this command must not be an unprotected resource
  • If commandBuffer is a protected command buffer, pipeline stages other than the framebuffer-space and compute stages in the Pipeline object bound to the pipeline bind point must not write to any resource
  • width must be less than or equal to PhysicalDeviceLimits::maxComputeWorkGroupCount[0]
  • height must be less than or equal to PhysicalDeviceLimits::maxComputeWorkGroupCount[1]
  • depth must be less than or equal to PhysicalDeviceLimits::maxComputeWorkGroupCount[2]

Valid Usage (Implicit)

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer Levels Render Pass Scope Supported Queue Types Pipeline Type
Primary Secondary Outside Compute

See Also

CommandBuffer, StridedBufferRegionKHR

getRayTracingShaderGroupHandlesKHR Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device containing the ray tracing pipeline.

-> Pipeline

pipeline is the ray tracing pipeline object containing the shaders.

-> ("firstGroup" ::: Word32)

firstGroup is the index of the first group to retrieve a handle for from the RayTracingPipelineCreateInfoKHR::pGroups or RayTracingPipelineCreateInfoNV::pGroups array.

-> ("groupCount" ::: Word32)

groupCount is the number of shader handles to retrieve.

-> ("dataSize" ::: Word64)

dataSize is the size in bytes of the buffer pointed to by pData.

-> ("data" ::: Ptr ())

pData is a pointer to a user-allocated buffer where the results will be written.

-> io () 

vkGetRayTracingShaderGroupHandlesKHR - Query ray tracing pipeline shader group handles

Valid Usage

  • firstGroup must be less than the number of shader groups in pipeline

Valid Usage (Implicit)

  • device must be a valid Device handle
  • pipeline must be a valid Pipeline handle
  • pData must be a valid pointer to an array of dataSize bytes
  • dataSize must be greater than 0
  • pipeline must have been created, allocated, or retrieved from device

Return Codes

Success
Failure

See Also

Device, Pipeline

getRayTracingCaptureReplayShaderGroupHandlesKHR Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device containing the ray tracing pipeline.

-> Pipeline

pipeline is the ray tracing pipeline object containing the shaders.

-> ("firstGroup" ::: Word32)

firstGroup is the index of the first group to retrieve a handle for from the RayTracingPipelineCreateInfoKHR::pGroups array.

-> ("groupCount" ::: Word32)

groupCount is the number of shader handles to retrieve.

-> ("dataSize" ::: Word64)

dataSize is the size in bytes of the buffer pointed to by pData.

-> ("data" ::: Ptr ())

pData is a pointer to a user-allocated buffer where the results will be written.

-> io () 

vkGetRayTracingCaptureReplayShaderGroupHandlesKHR - Query ray tracing capture replay pipeline shader group handles

Valid Usage

  • firstGroup must be less than the number of shader groups in pipeline

Valid Usage (Implicit)

  • device must be a valid Device handle
  • pipeline must be a valid Pipeline handle
  • pData must be a valid pointer to an array of dataSize bytes
  • dataSize must be greater than 0
  • pipeline must have been created, allocated, or retrieved from device

Return Codes

Success
Failure

See Also

Device, Pipeline

createRayTracingPipelinesKHR Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device that creates the ray tracing pipelines.

-> PipelineCache

pipelineCache is either NULL_HANDLE, indicating that pipeline caching is disabled, or the handle of a valid pipeline cache object, in which case use of that cache is enabled for the duration of the command.

-> ("createInfos" ::: Vector (SomeStruct RayTracingPipelineCreateInfoKHR))

pCreateInfos is a pointer to an array of RayTracingPipelineCreateInfoKHR structures.

-> ("allocator" ::: Maybe AllocationCallbacks)

pAllocator controls host memory allocation as described in the Memory Allocation chapter.

-> io (Result, "pipelines" ::: Vector Pipeline) 

vkCreateRayTracingPipelinesKHR - Creates a new ray tracing pipeline object

Description

The ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS error is returned if the implementation is unable to re-use the shader group handles provided in RayTracingShaderGroupCreateInfoKHR::pShaderGroupCaptureReplayHandle when PhysicalDeviceRayTracingFeaturesKHR::rayTracingShaderGroupHandleCaptureReplay is enabled.

Valid Usage

  • If the flags member of any element of pCreateInfos contains the PIPELINE_CREATE_DERIVATIVE_BIT flag, and the basePipelineIndex member of that same element is not -1, basePipelineIndex must be less than the index into pCreateInfos that corresponds to that element

Valid Usage (Implicit)

  • device must be a valid Device handle
  • If pipelineCache is not NULL_HANDLE, pipelineCache must be a valid PipelineCache handle
  • pCreateInfos must be a valid pointer to an array of createInfoCount valid RayTracingPipelineCreateInfoKHR structures
  • If pAllocator is not NULL, pAllocator must be a valid pointer to a valid AllocationCallbacks structure
  • pPipelines must be a valid pointer to an array of createInfoCount Pipeline handles
  • createInfoCount must be greater than 0
  • If pipelineCache is a valid handle, it must have been created, allocated, or retrieved from device

Return Codes

Success
Failure

See Also

AllocationCallbacks, Device, Pipeline, PipelineCache, RayTracingPipelineCreateInfoKHR

cmdTraceRaysIndirectKHR Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> ("raygenShaderBindingTable" ::: StridedBufferRegionKHR)

pRaygenShaderBindingTable is a StridedBufferRegionKHR that holds the shader binding table data for the ray generation shader stage.

-> ("missShaderBindingTable" ::: StridedBufferRegionKHR)

pMissShaderBindingTable is a StridedBufferRegionKHR that holds the shader binding table data for the miss shader stage.

-> ("hitShaderBindingTable" ::: StridedBufferRegionKHR)

pHitShaderBindingTable is a StridedBufferRegionKHR that holds the shader binding table data for the hit shader stage.

-> ("callableShaderBindingTable" ::: StridedBufferRegionKHR)

pCallableShaderBindingTable is a StridedBufferRegionKHR that holds the shader binding table data for the callable shader stage.

-> Buffer

buffer is the buffer containing the trace ray parameters.

-> ("offset" ::: DeviceSize)

offset is the byte offset into buffer where parameters begin.

-> io () 

vkCmdTraceRaysIndirectKHR - Initialize an indirect ray tracing dispatch

Description

cmdTraceRaysIndirectKHR behaves similarly to cmdTraceRaysKHR except that the ray trace query dimensions are read by the device from buffer during execution. The parameters of trace ray are encoded in the TraceRaysIndirectCommandKHR structure located at offset bytes in buffer.

Valid Usage

  • If a ImageView is accessed using atomic operations as a result of this command, then the image view’s format features must contain FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
  • If a ImageView is sampled with FILTER_CUBIC_EXT as a result of this command, then the image view’s format features must contain FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
  • Any ImageView being sampled with FILTER_CUBIC_EXT as a result of this command must have a ImageViewType and format that supports cubic filtering, as specified by FilterCubicImageViewImageFormatPropertiesEXT::filterCubic returned by getPhysicalDeviceImageFormatProperties2
  • Any ImageView being sampled with FILTER_CUBIC_EXT with a reduction mode of either SAMPLER_REDUCTION_MODE_MIN or SAMPLER_REDUCTION_MODE_MAX as a result of this command must have a ImageViewType and format that supports cubic filtering together with minmax filtering, as specified by FilterCubicImageViewImageFormatPropertiesEXT::filterCubicMinmax returned by getPhysicalDeviceImageFormatProperties2
  • Any Image created with a ImageCreateInfo::flags containing IMAGE_CREATE_CORNER_SAMPLED_BIT_NV sampled as a result of this command must only be sampled using a SamplerAddressMode of SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
  • For each set n that is statically used by the Pipeline bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a PipelineLayout that is compatible for set n, with the PipelineLayout used to create the current Pipeline, as described in ???
  • For each push constant that is statically used by the Pipeline bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a PipelineLayout that is compatible for push constants, with the PipelineLayout used to create the current Pipeline, as described in ???
  • Descriptors in each bound descriptor set, specified via cmdBindDescriptorSets, must be valid if they are statically used by the Pipeline bound to the pipeline bind point used by this command
  • A valid pipeline must be bound to the pipeline bind point used by this command
  • If the Pipeline object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for commandBuffer, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
  • There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the Pipeline object bound to the pipeline bind point used by this command, since that pipeline was bound
  • If the Pipeline object bound to the pipeline bind point used by this command accesses a Sampler object that uses unnormalized coordinates, that sampler must not be used to sample from any Image with a ImageView of the type IMAGE_VIEW_TYPE_3D, IMAGE_VIEW_TYPE_CUBE, IMAGE_VIEW_TYPE_1D_ARRAY, IMAGE_VIEW_TYPE_2D_ARRAY or IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage
  • If the Pipeline object bound to the pipeline bind point used by this command accesses a Sampler object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with ImplicitLod, Dref or Proj in their name, in any shader stage
  • If the Pipeline object bound to the pipeline bind point used by this command accesses a Sampler object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions that includes a LOD bias or any offset values, in any shader stage
  • If the robust buffer access feature is not enabled, and if the Pipeline object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point
  • If the robust buffer access feature is not enabled, and if the Pipeline object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point
  • If commandBuffer is an unprotected command buffer, any resource accessed by the Pipeline object bound to the pipeline bind point used by this command must not be a protected resource
  • If a ImageView is accessed using OpImageWrite as a result of this command, then the Type of the Texel operand of that instruction must have at least as many components as the image view’s format.
  • If a BufferView is accessed using OpImageWrite as a result of this command, then the Type of the Texel operand of that instruction must have at least as many components as the image view’s format.
  • If a ImageView with a Format that has a 64-bit channel width is accessed as a result of this command, the SampledType of the OpTypeImage operand of that instruction must have a Width of 64.
  • If a ImageView with a Format that has a channel width less than 64-bit is accessed as a result of this command, the SampledType of the OpTypeImage operand of that instruction must have a Width of 32.
  • If a BufferView with a Format that has a 64-bit channel width is accessed as a result of this command, the SampledType of the OpTypeImage operand of that instruction must have a Width of 64.
  • If a BufferView with a Format that has a channel width less than 64-bit is accessed as a result of this command, the SampledType of the OpTypeImage operand of that instruction must have a Width of 32.
  • If the sparseImageInt64Atomics feature is not enabled, Image objects created with the IMAGE_CREATE_SPARSE_RESIDENCY_BIT flag must not be accessed by atomic instructions through an OpTypeImage with a SampledType with a Width of 64 by this command.
  • If the sparseImageInt64Atomics feature is not enabled, Buffer objects created with the BUFFER_CREATE_SPARSE_RESIDENCY_BIT flag must not be accessed by atomic instructions through an OpTypeImage with a SampledType with a Width of 64 by this command.
  • Any shader group handle referenced by this call must have been queried from the currently bound ray tracing shader pipeline
  • This command must not cause a shader call instruction to be executed from a shader invocation with a recursion depth greater than the value of maxRecursionDepth used to create the bound ray tracing pipeline
  • If pRayGenShaderBindingTable->buffer is non-sparse then it must be bound completely and contiguously to a single DeviceMemory object
  • The offset member of pRayGenShaderBindingTable must be less than the size of the pRayGenShaderBindingTable->buffer
  • pRayGenShaderBindingTable->offset must be a multiple of PhysicalDeviceRayTracingPropertiesKHR::shaderGroupBaseAlignment
  • pRayGenShaderBindingTable->offset + pRayGenShaderBindingTable->size must be less than or equal to the size of pRayGenShaderBindingTable->buffer
  • The size member of pRayGenShaderBindingTable must be equal to its stride member
  • If pMissShaderBindingTable->buffer is non-sparse then it must be bound completely and contiguously to a single DeviceMemory object
  • The offset member of pMissShaderBindingTable must be less than the size of pMissShaderBindingTable->buffer
  • The offset member of pMissShaderBindingTable must be a multiple of PhysicalDeviceRayTracingPropertiesKHR::shaderGroupBaseAlignment
  • pMissShaderBindingTable->offset + pMissShaderBindingTable->size must be less than or equal to the size of pMissShaderBindingTable->buffer
  • The stride member of pMissShaderBindingTable must be a multiple of PhysicalDeviceRayTracingPropertiesKHR::shaderGroupHandleSize
  • The stride member of pMissShaderBindingTable must be less than or equal to PhysicalDeviceRayTracingPropertiesKHR::maxShaderGroupStride
  • If pHitShaderBindingTable->buffer is non-sparse then it must be bound completely and contiguously to a single DeviceMemory object
  • The offset member of pHitShaderBindingTable must be less than the size of pHitShaderBindingTable->buffer
  • The offset member of pHitShaderBindingTable must be a multiple of PhysicalDeviceRayTracingPropertiesKHR::shaderGroupBaseAlignment
  • pHitShaderBindingTable->offset + pHitShaderBindingTable->size must be less than or equal to the size of pHitShaderBindingTable->buffer
  • The stride member of pHitShaderBindingTable must be a multiple of PhysicalDeviceRayTracingPropertiesKHR::shaderGroupHandleSize
  • The stride member of pHitShaderBindingTable must be less than or equal to PhysicalDeviceRayTracingPropertiesKHR::maxShaderGroupStride
  • If pCallableShaderBindingTable->buffer is non-sparse then it must be bound completely and contiguously to a single DeviceMemory object
  • The offset member of pCallableShaderBindingTable must be less than the size of pCallableShaderBindingTable->buffer
  • The offset member of pCallableShaderBindingTable must be a multiple of PhysicalDeviceRayTracingPropertiesKHR::shaderGroupBaseAlignment
  • pCallableShaderBindingTable->offset + pCallableShaderBindingTable->size must be less than or equal to the size of pCallableShaderBindingTable->buffer
  • The stride member of pCallableShaderBindingTable must be a multiple of PhysicalDeviceRayTracingPropertiesKHR::shaderGroupHandleSize
  • The stride member of pCallableShaderBindingTable must be less than or equal to PhysicalDeviceRayTracingPropertiesKHR::maxShaderGroupStride
  • If the currently bound ray tracing pipeline was created with flags that included PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR, the buffer member of pHitShaderBindingTable must not be NULL_HANDLE
  • If the currently bound ray tracing pipeline was created with flags that included PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR, the buffer member of pHitShaderBindingTable must not be NULL_HANDLE
  • If the currently bound ray tracing pipeline was created with flags that included PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR, the buffer member of pHitShaderBindingTable must not be NULL_HANDLE
  • If the currently bound ray tracing pipeline was created with flags that included PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR, the shader group handle identified by pMissShaderBindingTable must contain a valid miss shader
  • If the currently bound ray tracing pipeline was created with flags that included PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR, entries in pHitShaderBindingTable accessed as a result of this command in order to execute an any hit shader must not be set to zero
  • If the currently bound ray tracing pipeline was created with flags that included PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR, entries in pHitShaderBindingTable accessed as a result of this command in order to execute a closest hit shader must not be set to zero
  • If the currently bound ray tracing pipeline was created with flags that included PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR, entries in pHitShaderBindingTable accessed as a result of this command in order to execute an intersection shader must not be set to zero
  • If buffer is non-sparse then it must be bound completely and contiguously to a single DeviceMemory object
  • buffer must have been created with the BUFFER_USAGE_INDIRECT_BUFFER_BIT bit set
  • offset must be a multiple of 4
  • commandBuffer must not be a protected command buffer
  • (offset + sizeof(TraceRaysIndirectCommandKHR)) must be less than or equal to the size of buffer
  • the ::rayTracingIndirectTraceRays feature must be enabled

Valid Usage (Implicit)

  • pRaygenShaderBindingTable must be a valid pointer to a valid StridedBufferRegionKHR structure
  • pMissShaderBindingTable must be a valid pointer to a valid StridedBufferRegionKHR structure
  • pHitShaderBindingTable must be a valid pointer to a valid StridedBufferRegionKHR structure
  • pCallableShaderBindingTable must be a valid pointer to a valid StridedBufferRegionKHR structure
  • buffer must be a valid Buffer handle
  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support compute operations
  • This command must only be called outside of a render pass instance
  • Both of buffer, and commandBuffer must have been created, allocated, or retrieved from the same Device

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer Levels Render Pass Scope Supported Queue Types Pipeline Type
Primary Secondary Outside Compute

See Also

Buffer, CommandBuffer, DeviceSize, StridedBufferRegionKHR

getDeviceAccelerationStructureCompatibilityKHR Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the device to check the version against.

-> AccelerationStructureVersionKHR

version points to the AccelerationStructureVersionKHR version information to check against the device.

-> io () 

vkGetDeviceAccelerationStructureCompatibilityKHR - Check if a serialized acceleration structure is compatible with the current device

Description

This possible return values for getDeviceAccelerationStructureCompatibilityKHR are:

  • SUCCESS is returned if an acceleration structure serialized with version as the version information is compatible with device.
  • ERROR_INCOMPATIBLE_VERSION_KHR is returned if an acceleration structure serialized with version as the version information is not compatible with device.

Valid Usage

Valid Usage (Implicit)

  • device must be a valid Device handle

Return Codes

Success
Failure

See Also

AccelerationStructureVersionKHR, Device

createAccelerationStructureKHR Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device that creates the buffer object.

-> AccelerationStructureCreateInfoKHR

pCreateInfo is a pointer to a AccelerationStructureCreateInfoKHR structure containing parameters affecting creation of the acceleration structure.

-> ("allocator" ::: Maybe AllocationCallbacks)

pAllocator controls host memory allocation as described in the Memory Allocation chapter.

-> io AccelerationStructureKHR 

vkCreateAccelerationStructureKHR - Create a new acceleration structure object

Description

Similar to other objects in Vulkan, the acceleration structure creation merely creates an object with a specific “shape”. The type and quantity of geometry that can be built into an acceleration structure is determined by the parameters of AccelerationStructureCreateInfoKHR.

Populating the data in the object after allocating and binding memory is done with commands such as cmdBuildAccelerationStructureKHR, buildAccelerationStructureKHR, cmdCopyAccelerationStructureKHR, and copyAccelerationStructureKHR.

The input buffers passed to acceleration structure build commands will be referenced by the implementation for the duration of the command. After the command completes, the acceleration structure may hold a reference to any acceleration structure specified by an active instance contained therein. Apart from this referencing, acceleration structures must be fully self-contained. The application may re-use or free any memory which was used by the command as an input or as scratch without affecting the results of ray traversal.

Valid Usage

Valid Usage (Implicit)

  • device must be a valid Device handle

Return Codes

Success
Failure

See Also

AccelerationStructureCreateInfoKHR, AccelerationStructureKHR, AllocationCallbacks, Device

withAccelerationStructureKHR :: forall io r. MonadIO io => Device -> AccelerationStructureCreateInfoKHR -> Maybe AllocationCallbacks -> (io AccelerationStructureKHR -> (AccelerationStructureKHR -> io ()) -> r) -> r Source #

A convenience wrapper to make a compatible pair of calls to createAccelerationStructureKHR and destroyAccelerationStructureKHR

To ensure that destroyAccelerationStructureKHR is always called: pass bracket (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass (,) as the first argument.

cmdBuildAccelerationStructureKHR Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> ("infos" ::: Vector (SomeStruct AccelerationStructureBuildGeometryInfoKHR))

pInfos is an array of infoCount AccelerationStructureBuildGeometryInfoKHR structures defining the geometry used to build each acceleration structure.

-> ("offsetInfos" ::: Vector AccelerationStructureBuildOffsetInfoKHR)

ppOffsetInfos is an array of infoCount pointers to arrays of AccelerationStructureBuildOffsetInfoKHR structures. Each ppOffsetInfos[i] is an array of pInfos[i].geometryCount AccelerationStructureBuildOffsetInfoKHR structures defining dynamic offsets to the addresses where geometry data is stored, as defined by pInfos[i].

-> io () 

vkCmdBuildAccelerationStructureKHR - Build an acceleration structure

Description

The cmdBuildAccelerationStructureKHR command provides the ability to initiate multiple acceleration structures builds, however there is no ordering or synchronization implied between any of the individual acceleration structure builds.

Note

This means that an application cannot build a top-level acceleration structure in the same cmdBuildAccelerationStructureKHR call as the associated bottom-level or instance acceleration structures are being built. There also cannot be any memory aliasing between any acceleration structure memories or scratch memories being used by any of the builds.

Accesses to the acceleration structure scratch buffers as identified by the AccelerationStructureBuildGeometryInfoKHRscratchData buffer device addresses must be synchronized with the PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR pipeline stage and an access type of ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR or ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR.

Valid Usage

Valid Usage (Implicit)

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer Levels Render Pass Scope Supported Queue Types Pipeline Type
Primary Secondary Outside Compute

See Also

AccelerationStructureBuildGeometryInfoKHR, AccelerationStructureBuildOffsetInfoKHR, CommandBuffer

cmdBuildAccelerationStructureIndirectKHR Source #

Arguments

:: forall a io. (Extendss AccelerationStructureBuildGeometryInfoKHR a, PokeChain a, MonadIO io) 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> AccelerationStructureBuildGeometryInfoKHR a

pInfo is a pointer to a AccelerationStructureBuildGeometryInfoKHR structure defining the geometry used to build the acceleration structure.

-> ("indirectBuffer" ::: Buffer)

indirectBuffer is the Buffer containing pInfo->geometryCount AccelerationStructureBuildOffsetInfoKHR structures defining dynamic offsets to the addresses where geometry data is stored, as defined by pInfo.

-> ("indirectOffset" ::: DeviceSize)

indirectOffset is the byte offset into indirectBuffer where offset parameters begin.

-> ("indirectStride" ::: Word32) 
-> io () 

vkCmdBuildAccelerationStructureIndirectKHR - Build an acceleration structure with some parameters provided on the device

Valid Usage

  • All DeviceOrHostAddressKHR or DeviceOrHostAddressConstKHR referenced by this command must contain valid device addresses for a buffer bound to device memory. If the buffer is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory object

Valid Usage (Implicit)

  • pInfo must be a valid pointer to a valid AccelerationStructureBuildGeometryInfoKHR structure
  • indirectBuffer must be a valid Buffer handle
  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support compute operations
  • This command must only be called outside of a render pass instance
  • Both of commandBuffer, and indirectBuffer must have been created, allocated, or retrieved from the same Device

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer Levels Render Pass Scope Supported Queue Types Pipeline Type
Primary Secondary Outside Compute

See Also

AccelerationStructureBuildGeometryInfoKHR, Buffer, CommandBuffer, DeviceSize

buildAccelerationStructureKHR :: forall io. MonadIO io => Device -> ("infos" ::: Vector (SomeStruct AccelerationStructureBuildGeometryInfoKHR)) -> ("offsetInfos" ::: Vector AccelerationStructureBuildOffsetInfoKHR) -> io Result Source #

vkBuildAccelerationStructureKHR - Build an acceleration structure on the host

Parameters

This command fulfills the same task as cmdBuildAccelerationStructureKHR but executed by the host.

Description

  • device is the Device for which the acceleration structures are being built.
  • infoCount is the number of acceleration structures to build. It specifies the number of the pInfos structures and ppOffsetInfos pointers that must be provided.
  • pInfos is a pointer to an array of infoCount AccelerationStructureBuildGeometryInfoKHR structures defining the geometry used to build each acceleration structure.
  • ppOffsetInfos is an array of infoCount pointers to arrays of AccelerationStructureBuildOffsetInfoKHR structures. Each ppOffsetInfos[i] is an array of pInfos[i].geometryCount AccelerationStructureBuildOffsetInfoKHR structures defining dynamic offsets to the addresses where geometry data is stored, as defined by pInfos[i].

The buildAccelerationStructureKHR command provides the ability to initiate multiple acceleration structures builds, however there is no ordering or synchronization implied between any of the individual acceleration structure builds.

Note

This means that an application cannot build a top-level acceleration structure in the same buildAccelerationStructureKHR call as the associated bottom-level or instance acceleration structures are being built. There also cannot be any memory aliasing between any acceleration structure memories or scratch memories being used by any of the builds.

If the DeferredOperationInfoKHR structure is included in the pNext chain of any AccelerationStructureBuildGeometryInfoKHR structure, the operation of this command is deferred, as defined in the Deferred Host Operations chapter.

Valid Usage

Valid Usage (Implicit)

  • device must be a valid Device handle

Return Codes

Success
Failure

See Also

AccelerationStructureBuildGeometryInfoKHR, AccelerationStructureBuildOffsetInfoKHR, Device

getAccelerationStructureDeviceAddressKHR Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device that the accelerationStructure was created on.

-> AccelerationStructureDeviceAddressInfoKHR

pInfo is a pointer to a AccelerationStructureDeviceAddressInfoKHR structure specifying the acceleration structure to retrieve an address for.

-> io DeviceAddress 

vkGetAccelerationStructureDeviceAddressKHR - Query an address of a acceleration structure

Description

The 64-bit return value is an address of the acceleration structure, which can be used for device and shader operations that involve acceleration structures, such as ray traversal and acceleration structure building.

If the acceleration structure was created with a non-zero value of AccelerationStructureCreateInfoKHR::deviceAddress the return value will be the same address.

Valid Usage

Valid Usage (Implicit)

  • device must be a valid Device handle

See Also

AccelerationStructureDeviceAddressInfoKHR, Device

data RayTracingShaderGroupCreateInfoKHR Source #

VkRayTracingShaderGroupCreateInfoKHR - Structure specifying shaders in a shader group

Valid Usage

Valid Usage (Implicit)

See Also

RayTracingPipelineCreateInfoKHR, RayTracingShaderGroupTypeKHR, StructureType

Constructors

RayTracingShaderGroupCreateInfoKHR 

Fields

Instances

Instances details
Show RayTracingShaderGroupCreateInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Storable RayTracingShaderGroupCreateInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

FromCStruct RayTracingShaderGroupCreateInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

ToCStruct RayTracingShaderGroupCreateInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Zero RayTracingShaderGroupCreateInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

data RayTracingPipelineCreateInfoKHR (es :: [Type]) Source #

VkRayTracingPipelineCreateInfoKHR - Structure specifying parameters of a newly created ray tracing pipeline

Description

The parameters basePipelineHandle and basePipelineIndex are described in more detail in Pipeline Derivatives.

When PIPELINE_CREATE_LIBRARY_BIT_KHR is specified, this pipeline defines a pipeline library which cannot be bound as a ray tracing pipeline directly. Instead, pipeline libraries define common shaders and shader groups which can be included in future pipeline creation.

If pipeline libraries are included in libraries, shaders defined in those libraries are treated as if they were defined as additional entries in pStages, appended in the order they appear in the pLibraries array and in the pStages array when those libraries were defined.

When referencing shader groups in order to obtain a shader group handle, groups defined in those libraries are treated as if they were defined as additional entries in pGroups, appended in the order they appear in the pLibraries array and in the pGroups array when those libraries were defined. The shaders these groups reference are set when the pipeline library is created, referencing those specified in the pipeline library, not in the pipeline that includes it.

If the DeferredOperationInfoKHR structure is included in the pNext chain of RayTracingPipelineCreateInfoKHR, the operation of this pipeline creation is deferred, as defined in the Deferred Host Operations chapter.

Valid Usage

Valid Usage (Implicit)

See Also

Pipeline, PipelineCreateFlags, PipelineLayout, PipelineLibraryCreateInfoKHR, PipelineShaderStageCreateInfo, RayTracingPipelineInterfaceCreateInfoKHR, RayTracingShaderGroupCreateInfoKHR, StructureType, createRayTracingPipelinesKHR

Constructors

RayTracingPipelineCreateInfoKHR 

Fields

Instances

Instances details
Extensible RayTracingPipelineCreateInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Show (Chain es) => Show (RayTracingPipelineCreateInfoKHR es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

(Extendss RayTracingPipelineCreateInfoKHR es, PeekChain es) => FromCStruct (RayTracingPipelineCreateInfoKHR es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

(Extendss RayTracingPipelineCreateInfoKHR es, PokeChain es) => ToCStruct (RayTracingPipelineCreateInfoKHR es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

es ~ ('[] :: [Type]) => Zero (RayTracingPipelineCreateInfoKHR es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

data BindAccelerationStructureMemoryInfoKHR Source #

VkBindAccelerationStructureMemoryInfoKHR - Structure specifying acceleration structure memory binding

Valid Usage

  • accelerationStructure must not already be backed by a memory object

Valid Usage (Implicit)

  • pNext must be NULL
  • accelerationStructure must be a valid AccelerationStructureKHR handle
  • memory must be a valid DeviceMemory handle
  • If deviceIndexCount is not 0, pDeviceIndices must be a valid pointer to an array of deviceIndexCount uint32_t values
  • Both of accelerationStructure, and memory must have been created, allocated, or retrieved from the same Device

See Also

AccelerationStructureKHR, DeviceMemory, DeviceSize, StructureType, bindAccelerationStructureMemoryKHR, bindAccelerationStructureMemoryNV

Constructors

BindAccelerationStructureMemoryInfoKHR 

Fields

data WriteDescriptorSetAccelerationStructureKHR Source #

VkWriteDescriptorSetAccelerationStructureKHR - Structure specifying acceleration structure descriptor info

Valid Usage

  • accelerationStructureCount must be equal to descriptorCount in the extended structure

Valid Usage (Implicit)

  • pAccelerationStructures must be a valid pointer to an array of accelerationStructureCount valid AccelerationStructureKHR handles
  • accelerationStructureCount must be greater than 0

See Also

AccelerationStructureKHR, StructureType

Constructors

WriteDescriptorSetAccelerationStructureKHR 

Fields

data AccelerationStructureMemoryRequirementsInfoKHR Source #

VkAccelerationStructureMemoryRequirementsInfoKHR - Structure specifying acceleration to query for memory requirements

Valid Usage (Implicit)

See Also

AccelerationStructureBuildTypeKHR, AccelerationStructureKHR, AccelerationStructureMemoryRequirementsTypeKHR, StructureType, getAccelerationStructureMemoryRequirementsKHR

Constructors

AccelerationStructureMemoryRequirementsInfoKHR 

Fields

Instances

Instances details
Eq AccelerationStructureMemoryRequirementsInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Show AccelerationStructureMemoryRequirementsInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Storable AccelerationStructureMemoryRequirementsInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

FromCStruct AccelerationStructureMemoryRequirementsInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

ToCStruct AccelerationStructureMemoryRequirementsInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Zero AccelerationStructureMemoryRequirementsInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

data PhysicalDeviceRayTracingFeaturesKHR Source #

VkPhysicalDeviceRayTracingFeaturesKHR - Structure describing the ray tracing features that can be supported by an implementation

Members

The members of the PhysicalDeviceRayTracingFeaturesKHR structure describe the following features:

Description

  • rayTracing indicates whether the implementation supports ray tracing functionality. See Ray Tracing.
  • rayTracingShaderGroupHandleCaptureReplay indicates whether the implementation supports saving and reusing shader group handles, e.g. for trace capture and replay.
  • rayTracingShaderGroupHandleCaptureReplayMixed indicates whether the implementation supports reuse of shader group handles being arbitrarily mixed with creation of non-reused shader group handles. If this is FALSE, all reused shader group handles must be specified before any non-reused handles may be created.
  • rayTracingAccelerationStructureCaptureReplay indicates whether the implementation supports saving and reusing acceleration structure device addresses, e.g. for trace capture and replay.
  • rayTracingIndirectTraceRays indicates whether the implementation supports indirect trace ray commands, e.g. cmdTraceRaysIndirectKHR.
  • rayTracingIndirectAccelerationStructureBuild indicates whether the implementation supports indirect acceleration structure build commands, e.g. cmdBuildAccelerationStructureIndirectKHR.
  • rayTracingHostAccelerationStructureCommands indicates whether the implementation supports host side acceleration structure commands, e.g. buildAccelerationStructureKHR, copyAccelerationStructureKHR, copyAccelerationStructureToMemoryKHR, copyMemoryToAccelerationStructureKHR, writeAccelerationStructuresPropertiesKHR.
  • rayQuery indicates whether the implementation supports ray query (OpRayQueryProceedKHR) functionality.
  • rayTracingPrimitiveCulling indicates whether the implementation supports primitive culling during ray traversal.

If the PhysicalDeviceRayTracingFeaturesKHR structure is included in the pNext chain of PhysicalDeviceFeatures2, it is filled with values indicating whether the feature is supported. PhysicalDeviceRayTracingFeaturesKHR can also be used in the pNext chain of DeviceCreateInfo to enable the features.

Valid Usage

  • If rayTracingShaderGroupHandleCaptureReplayMixed is TRUE, rayTracingShaderGroupHandleCaptureReplay must also be TRUE

Valid Usage (Implicit)

See Also

Bool32, StructureType

Instances

Instances details
Eq PhysicalDeviceRayTracingFeaturesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Show PhysicalDeviceRayTracingFeaturesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Storable PhysicalDeviceRayTracingFeaturesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

FromCStruct PhysicalDeviceRayTracingFeaturesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

ToCStruct PhysicalDeviceRayTracingFeaturesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Zero PhysicalDeviceRayTracingFeaturesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

data PhysicalDeviceRayTracingPropertiesKHR Source #

VkPhysicalDeviceRayTracingPropertiesKHR - Properties of the physical device for ray tracing

Description

If the PhysicalDeviceRayTracingPropertiesKHR structure is included in the pNext chain of PhysicalDeviceProperties2, it is filled with the implementation-dependent limits.

Limits specified by this structure must match those specified with the same name in PhysicalDeviceRayTracingPropertiesNV.

Valid Usage (Implicit)

See Also

StructureType

Constructors

PhysicalDeviceRayTracingPropertiesKHR 

Fields

Instances

Instances details
Eq PhysicalDeviceRayTracingPropertiesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Show PhysicalDeviceRayTracingPropertiesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Storable PhysicalDeviceRayTracingPropertiesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

FromCStruct PhysicalDeviceRayTracingPropertiesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

ToCStruct PhysicalDeviceRayTracingPropertiesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Zero PhysicalDeviceRayTracingPropertiesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

data StridedBufferRegionKHR Source #

VkStridedBufferRegionKHR - Structure specifying a region of a VkBuffer with a stride

Valid Usage

  • If buffer is not NULL_HANDLE, size plus offset must be less than or equal to the size of buffer
  • If buffer is not NULL_HANDLE, stride must be less than the size of buffer

Valid Usage (Implicit)

See Also

Buffer, DeviceSize, cmdTraceRaysIndirectKHR, cmdTraceRaysKHR

Constructors

StridedBufferRegionKHR 

Fields

  • buffer :: Buffer

    buffer is the buffer containing this region.

  • offset :: DeviceSize

    offset is the byte offset in buffer at which the region starts.

  • stride :: DeviceSize

    stride is the byte stride between consecutive elements.

  • size :: DeviceSize

    size is the size in bytes of the region starting at offset.

Instances

Instances details
Eq StridedBufferRegionKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Show StridedBufferRegionKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Storable StridedBufferRegionKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

FromCStruct StridedBufferRegionKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

ToCStruct StridedBufferRegionKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Zero StridedBufferRegionKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

data TraceRaysIndirectCommandKHR Source #

VkTraceRaysIndirectCommandKHR - Structure specifying the parameters of an indirect trace ray command

Description

The members of TraceRaysIndirectCommandKHR have the same meaning as the similarly named parameters of cmdTraceRaysKHR.

Valid Usage

See Also

No cross-references are available

Constructors

TraceRaysIndirectCommandKHR 

Fields

Instances

Instances details
Eq TraceRaysIndirectCommandKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Show TraceRaysIndirectCommandKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Storable TraceRaysIndirectCommandKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

FromCStruct TraceRaysIndirectCommandKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

ToCStruct TraceRaysIndirectCommandKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Zero TraceRaysIndirectCommandKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

data AccelerationStructureGeometryTrianglesDataKHR Source #

VkAccelerationStructureGeometryTrianglesDataKHR - Structure specifying a triangle geometry in a bottom-level acceleration structure

Valid Usage (Implicit)

See Also

AccelerationStructureGeometryDataKHR, DeviceOrHostAddressConstKHR, DeviceSize, Format, IndexType, StructureType

Constructors

AccelerationStructureGeometryTrianglesDataKHR 

Fields

data AccelerationStructureGeometryAabbsDataKHR Source #

VkAccelerationStructureGeometryAabbsDataKHR - Structure specifying axis-aligned bounding box geometry in a bottom-level acceleration structure

Valid Usage (Implicit)

See Also

AccelerationStructureGeometryDataKHR, DeviceOrHostAddressConstKHR, DeviceSize, StructureType

Constructors

AccelerationStructureGeometryAabbsDataKHR 

Fields

data AccelerationStructureGeometryInstancesDataKHR Source #

VkAccelerationStructureGeometryInstancesDataKHR - Structure specifying a geometry consisting of instances of other acceleration structures

Valid Usage

  • data must be aligned to 16 bytes
  • If arrayOfPointers is true, each pointer must be aligned to 16 bytes

Valid Usage (Implicit)

See Also

AccelerationStructureGeometryDataKHR, Bool32, DeviceOrHostAddressConstKHR, StructureType

Constructors

AccelerationStructureGeometryInstancesDataKHR 

Fields

data AccelerationStructureGeometryKHR Source #

VkAccelerationStructureGeometryKHR - Structure specifying geometries to be built into an acceleration structure

Valid Usage

Valid Usage (Implicit)

See Also

AccelerationStructureBuildGeometryInfoKHR, AccelerationStructureGeometryDataKHR, GeometryFlagsKHR, GeometryTypeKHR, StructureType

Constructors

AccelerationStructureGeometryKHR 

Fields

data AccelerationStructureBuildGeometryInfoKHR (es :: [Type]) Source #

VkAccelerationStructureBuildGeometryInfoKHR - Structure specifying the geometry data used to build an acceleration structure

Description

Note

Elements of ppGeometries are accessed as follows, based on geometryArrayOfPointers:

if (geometryArrayOfPointers) {
    use *(ppGeometries[i]);
} else {
    use (*ppGeometries)[i];
}

Valid Usage

Valid Usage (Implicit)

See Also

AccelerationStructureGeometryKHR, AccelerationStructureKHR, AccelerationStructureTypeKHR, Bool32, BuildAccelerationStructureFlagsKHR, DeviceOrHostAddressKHR, StructureType, buildAccelerationStructureKHR, cmdBuildAccelerationStructureIndirectKHR, cmdBuildAccelerationStructureKHR

Constructors

AccelerationStructureBuildGeometryInfoKHR 

Fields

Instances

Instances details
Extensible AccelerationStructureBuildGeometryInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Show (Chain es) => Show (AccelerationStructureBuildGeometryInfoKHR es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

(Extendss AccelerationStructureBuildGeometryInfoKHR es, PokeChain es) => ToCStruct (AccelerationStructureBuildGeometryInfoKHR es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

es ~ ('[] :: [Type]) => Zero (AccelerationStructureBuildGeometryInfoKHR es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

data AccelerationStructureBuildOffsetInfoKHR Source #

VkAccelerationStructureBuildOffsetInfoKHR - Structure specifying build offsets and counts for acceleration structure builds

Description

The primitive count and primitive offset are interpreted differently depending on the GeometryTypeKHR used:

Valid Usage

See Also

buildAccelerationStructureKHR, cmdBuildAccelerationStructureKHR

Constructors

AccelerationStructureBuildOffsetInfoKHR 

Fields

  • primitiveCount :: Word32

    primitiveCount defines the number of primitives for a corresponding acceleration structure geometry.

  • primitiveOffset :: Word32

    primitiveOffset defines an offset in bytes into the memory where primitive data is defined.

  • firstVertex :: Word32

    firstVertex is the index of the first vertex to build from for triangle geometry.

  • transformOffset :: Word32

    transformOffset defines an offset in bytes into the memory where a transform matrix is defined.

Instances

Instances details
Eq AccelerationStructureBuildOffsetInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Show AccelerationStructureBuildOffsetInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Storable AccelerationStructureBuildOffsetInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

FromCStruct AccelerationStructureBuildOffsetInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

ToCStruct AccelerationStructureBuildOffsetInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Zero AccelerationStructureBuildOffsetInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

data AccelerationStructureCreateGeometryTypeInfoKHR Source #

VkAccelerationStructureCreateGeometryTypeInfoKHR - Structure specifying the shape of geometries that will be built into an acceleration structure

Description

When geometryType is GEOMETRY_TYPE_TRIANGLES_KHR:

Valid Usage

Valid Usage (Implicit)

  • pNext must be NULL
  • geometryType must be a valid GeometryTypeKHR value
  • indexType must be a valid IndexType value
  • If vertexFormat is not 0, vertexFormat must be a valid Format value

See Also

AccelerationStructureCreateInfoKHR, Bool32, Format, GeometryTypeKHR, IndexType, StructureType

Constructors

AccelerationStructureCreateGeometryTypeInfoKHR 

Fields

Instances

Instances details
Eq AccelerationStructureCreateGeometryTypeInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Show AccelerationStructureCreateGeometryTypeInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Storable AccelerationStructureCreateGeometryTypeInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

FromCStruct AccelerationStructureCreateGeometryTypeInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

ToCStruct AccelerationStructureCreateGeometryTypeInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Zero AccelerationStructureCreateGeometryTypeInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

data AccelerationStructureCreateInfoKHR Source #

VkAccelerationStructureCreateInfoKHR - Structure specifying the parameters of a newly created acceleration structure object

Description

If deviceAddress is zero, no specific address is requested.

If deviceAddress is not zero, deviceAddress must be an address retrieved from an identically created acceleration structure on the same implementation. The acceleration structure must also be bound to an identically created DeviceMemory object.

Apps should avoid creating acceleration structures with app-provided addresses and implementation-provided addresses in the same process, to reduce the likelihood of ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR errors.

Valid Usage

  • If compactedSize is not 0 then maxGeometryCount must be 0

Valid Usage (Implicit)

See Also

AccelerationStructureCreateGeometryTypeInfoKHR, AccelerationStructureTypeKHR, BuildAccelerationStructureFlagsKHR, DeviceAddress, DeviceSize, StructureType, createAccelerationStructureKHR

Constructors

AccelerationStructureCreateInfoKHR 

Fields

data AabbPositionsKHR Source #

VkAabbPositionsKHR - Structure specifying two opposing corners of an axis-aligned bounding box

Valid Usage

See Also

No cross-references are available

Constructors

AabbPositionsKHR 

Fields

  • minX :: Float

    minX is the x position of one opposing corner of a bounding box.

    minX must be less than or equal to maxX

  • minY :: Float

    minY is the y position of one opposing corner of a bounding box.

    minY must be less than or equal to maxY

  • minZ :: Float

    minZ is the z position of one opposing corner of a bounding box.

    minZ must be less than or equal to maxZ

  • maxX :: Float

    maxX is the x position of the other opposing corner of a bounding box.

  • maxY :: Float

    maxY is the y position of the other opposing corner of a bounding box.

  • maxZ :: Float

    maxZ is the z position of the other opposing corner of a bounding box.

Instances

Instances details
Eq AabbPositionsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Show AabbPositionsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Storable AabbPositionsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

FromCStruct AabbPositionsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

ToCStruct AabbPositionsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Zero AabbPositionsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

data TransformMatrixKHR Source #

VkTransformMatrixKHR - Structure specifying a 3x4 affine transformation matrix

See Also

AccelerationStructureInstanceKHR

Constructors

TransformMatrixKHR 

Fields

Instances

Instances details
Eq TransformMatrixKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Show TransformMatrixKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Storable TransformMatrixKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

FromCStruct TransformMatrixKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

ToCStruct TransformMatrixKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Zero TransformMatrixKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

data AccelerationStructureInstanceKHR Source #

VkAccelerationStructureInstanceKHR - Structure specifying a single acceleration structure instance for building into an acceleration structure geometry

Description

The C language spec does not define the ordering of bit-fields, but in practice, this struct produces the correct layout with existing compilers. The intended bit pattern is for the following:

If a compiler produces code that diverges from that pattern, applications must employ another method to set values according to the correct bit pattern.

Valid Usage (Implicit)

See Also

GeometryInstanceFlagsKHR, TransformMatrixKHR

Constructors

AccelerationStructureInstanceKHR 

Fields

data AccelerationStructureDeviceAddressInfoKHR Source #

VkAccelerationStructureDeviceAddressInfoKHR - Structure specifying the acceleration structure to query an address for

Valid Usage (Implicit)

See Also

AccelerationStructureKHR, StructureType, getAccelerationStructureDeviceAddressKHR

Constructors

AccelerationStructureDeviceAddressInfoKHR 

Fields

Instances

Instances details
Eq AccelerationStructureDeviceAddressInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Show AccelerationStructureDeviceAddressInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Storable AccelerationStructureDeviceAddressInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

FromCStruct AccelerationStructureDeviceAddressInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

ToCStruct AccelerationStructureDeviceAddressInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Zero AccelerationStructureDeviceAddressInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

data AccelerationStructureVersionKHR Source #

VkAccelerationStructureVersionKHR - Acceleration structure version information

Valid Usage (Implicit)

See Also

StructureType, getDeviceAccelerationStructureCompatibilityKHR

Constructors

AccelerationStructureVersionKHR 

Fields

data CopyAccelerationStructureInfoKHR (es :: [Type]) Source #

VkCopyAccelerationStructureInfoKHR - Parameters for copying an acceleration structure

Valid Usage

Valid Usage (Implicit)

See Also

AccelerationStructureKHR, CopyAccelerationStructureModeKHR, StructureType, cmdCopyAccelerationStructureKHR, copyAccelerationStructureKHR

Constructors

CopyAccelerationStructureInfoKHR 

Fields

Instances

Instances details
Extensible CopyAccelerationStructureInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Show (Chain es) => Show (CopyAccelerationStructureInfoKHR es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

(Extendss CopyAccelerationStructureInfoKHR es, PeekChain es) => FromCStruct (CopyAccelerationStructureInfoKHR es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

(Extendss CopyAccelerationStructureInfoKHR es, PokeChain es) => ToCStruct (CopyAccelerationStructureInfoKHR es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

es ~ ('[] :: [Type]) => Zero (CopyAccelerationStructureInfoKHR es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

data CopyAccelerationStructureToMemoryInfoKHR (es :: [Type]) Source #

VkCopyAccelerationStructureToMemoryInfoKHR - Parameters for serializing an acceleration structure

Valid Usage

Valid Usage (Implicit)

See Also

AccelerationStructureKHR, CopyAccelerationStructureModeKHR, DeviceOrHostAddressKHR, StructureType, cmdCopyAccelerationStructureToMemoryKHR, copyAccelerationStructureToMemoryKHR

Constructors

CopyAccelerationStructureToMemoryInfoKHR 

Fields

Instances

Instances details
Extensible CopyAccelerationStructureToMemoryInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Show (Chain es) => Show (CopyAccelerationStructureToMemoryInfoKHR es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

(Extendss CopyAccelerationStructureToMemoryInfoKHR es, PokeChain es) => ToCStruct (CopyAccelerationStructureToMemoryInfoKHR es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

es ~ ('[] :: [Type]) => Zero (CopyAccelerationStructureToMemoryInfoKHR es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

data CopyMemoryToAccelerationStructureInfoKHR (es :: [Type]) Source #

VkCopyMemoryToAccelerationStructureInfoKHR - Parameters for deserializing an acceleration structure

Valid Usage

Valid Usage (Implicit)

See Also

AccelerationStructureKHR, CopyAccelerationStructureModeKHR, DeviceOrHostAddressConstKHR, StructureType, cmdCopyMemoryToAccelerationStructureKHR, copyMemoryToAccelerationStructureKHR

Constructors

CopyMemoryToAccelerationStructureInfoKHR 

Fields

Instances

Instances details
Extensible CopyMemoryToAccelerationStructureInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Show (Chain es) => Show (CopyMemoryToAccelerationStructureInfoKHR es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

(Extendss CopyMemoryToAccelerationStructureInfoKHR es, PokeChain es) => ToCStruct (CopyMemoryToAccelerationStructureInfoKHR es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

es ~ ('[] :: [Type]) => Zero (CopyMemoryToAccelerationStructureInfoKHR es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

data RayTracingPipelineInterfaceCreateInfoKHR Source #

VkRayTracingPipelineInterfaceCreateInfoKHR - Structure specifying additional interface information when using libraries

Description

maxPayloadSize is calculated as the maximum number of bytes used by any block declared in the RayPayloadKHR or IncomingRayPayloadKHR storage classes. maxAttributeSize is calculated as the maximum number of bytes used by any block declared in the HitAttributeKHR storage class. maxCallableSize is calculated as the maximum number of bytes used by any block declred in the CallableDataKHR or IncomingCallableDataKHR. As variables in these storage classes do not have explicit offsets, the size should be calculated as if each variable has a scalar alignment equal to the largest scalar alignment of any of the block’s members.

Valid Usage (Implicit)

See Also

RayTracingPipelineCreateInfoKHR, StructureType

Constructors

RayTracingPipelineInterfaceCreateInfoKHR 

Fields

  • maxPayloadSize :: Word32

    maxPayloadSize is the maximum payload size in bytes used by any shader in the pipeline.

  • maxAttributeSize :: Word32

    maxAttributeSize is the maximum attribute structure size in bytes used by any shader in the pipeline.

  • maxCallableSize :: Word32

    maxCallableSize is the maximum callable data size in bytes used by any shader in the pipeline.

Instances

Instances details
Eq RayTracingPipelineInterfaceCreateInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Show RayTracingPipelineInterfaceCreateInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Storable RayTracingPipelineInterfaceCreateInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

FromCStruct RayTracingPipelineInterfaceCreateInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

ToCStruct RayTracingPipelineInterfaceCreateInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Zero RayTracingPipelineInterfaceCreateInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

newtype GeometryInstanceFlagBitsKHR Source #

VkGeometryInstanceFlagBitsKHR - Instance flag bits

Description

GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR and GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR must not be used in the same flag.

See Also

GeometryInstanceFlagsKHR

Bundled Patterns

pattern GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR :: GeometryInstanceFlagBitsKHR

GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR disables face culling for this instance.

pattern GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR :: GeometryInstanceFlagBitsKHR

GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR indicates that the front face of the triangle for culling purposes is the face that is counter clockwise in object space relative to the ray origin. Because the facing is determined in object space, an instance transform matrix does not change the winding, but a geometry transform does.

pattern GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR :: GeometryInstanceFlagBitsKHR

GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR causes this instance to act as though GEOMETRY_OPAQUE_BIT_KHR were specified on all geometries referenced by this instance. This behavior can be overridden by the SPIR-V NoOpaqueKHR ray flag.

pattern GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR :: GeometryInstanceFlagBitsKHR

GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR causes this instance to act as though GEOMETRY_OPAQUE_BIT_KHR were not specified on all geometries referenced by this instance. This behavior can be overridden by the SPIR-V OpaqueKHR ray flag.

Instances

Instances details
Eq GeometryInstanceFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Ord GeometryInstanceFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Read GeometryInstanceFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Show GeometryInstanceFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Storable GeometryInstanceFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Bits GeometryInstanceFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Methods

(.&.) :: GeometryInstanceFlagBitsKHR -> GeometryInstanceFlagBitsKHR -> GeometryInstanceFlagBitsKHR #

(.|.) :: GeometryInstanceFlagBitsKHR -> GeometryInstanceFlagBitsKHR -> GeometryInstanceFlagBitsKHR #

xor :: GeometryInstanceFlagBitsKHR -> GeometryInstanceFlagBitsKHR -> GeometryInstanceFlagBitsKHR #

complement :: GeometryInstanceFlagBitsKHR -> GeometryInstanceFlagBitsKHR #

shift :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

rotate :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

zeroBits :: GeometryInstanceFlagBitsKHR #

bit :: Int -> GeometryInstanceFlagBitsKHR #

setBit :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

clearBit :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

complementBit :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

testBit :: GeometryInstanceFlagBitsKHR -> Int -> Bool #

bitSizeMaybe :: GeometryInstanceFlagBitsKHR -> Maybe Int #

bitSize :: GeometryInstanceFlagBitsKHR -> Int #

isSigned :: GeometryInstanceFlagBitsKHR -> Bool #

shiftL :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

unsafeShiftL :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

shiftR :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

unsafeShiftR :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

rotateL :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

rotateR :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

popCount :: GeometryInstanceFlagBitsKHR -> Int #

Zero GeometryInstanceFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

newtype GeometryFlagBitsKHR Source #

VkGeometryFlagBitsKHR - Bitmask specifying additional parameters for a geometry

See Also

GeometryFlagsKHR

Bundled Patterns

pattern GEOMETRY_OPAQUE_BIT_KHR :: GeometryFlagBitsKHR

GEOMETRY_OPAQUE_BIT_KHR indicates that this geometry does not invoke the any-hit shaders even if present in a hit group.

pattern GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR :: GeometryFlagBitsKHR

GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR indicates that the implementation must only call the any-hit shader a single time for each primitive in this geometry. If this bit is absent an implementation may invoke the any-hit shader more than once for this geometry.

Instances

Instances details
Eq GeometryFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Ord GeometryFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Read GeometryFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Show GeometryFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Storable GeometryFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Bits GeometryFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Zero GeometryFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

newtype BuildAccelerationStructureFlagBitsKHR Source #

VkBuildAccelerationStructureFlagBitsKHR - Bitmask specifying additional parameters for acceleration structure builds

Description

Note

BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR and BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR may take more time and memory than a normal build, and so should only be used when those features are needed.

See Also

BuildAccelerationStructureFlagsKHR

Bundled Patterns

pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR :: BuildAccelerationStructureFlagBitsKHR

BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR indicates that the specified acceleration structure can be updated with update of TRUE in cmdBuildAccelerationStructureKHR or cmdBuildAccelerationStructureNV .

pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR :: BuildAccelerationStructureFlagBitsKHR

BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR indicates that the specified acceleration structure can act as the source for a copy acceleration structure command with mode of COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR to produce a compacted acceleration structure.

pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR :: BuildAccelerationStructureFlagBitsKHR

BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR indicates that the given acceleration structure build should prioritize trace performance over build time.

pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR :: BuildAccelerationStructureFlagBitsKHR

BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR indicates that the given acceleration structure build should prioritize build time over trace performance.

pattern BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR :: BuildAccelerationStructureFlagBitsKHR

BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR indicates that this acceleration structure should minimize the size of the scratch memory and the final result build, potentially at the expense of build time or trace performance.

Instances

Instances details
Eq BuildAccelerationStructureFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Ord BuildAccelerationStructureFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Read BuildAccelerationStructureFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Show BuildAccelerationStructureFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Storable BuildAccelerationStructureFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Bits BuildAccelerationStructureFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Methods

(.&.) :: BuildAccelerationStructureFlagBitsKHR -> BuildAccelerationStructureFlagBitsKHR -> BuildAccelerationStructureFlagBitsKHR #

(.|.) :: BuildAccelerationStructureFlagBitsKHR -> BuildAccelerationStructureFlagBitsKHR -> BuildAccelerationStructureFlagBitsKHR #

xor :: BuildAccelerationStructureFlagBitsKHR -> BuildAccelerationStructureFlagBitsKHR -> BuildAccelerationStructureFlagBitsKHR #

complement :: BuildAccelerationStructureFlagBitsKHR -> BuildAccelerationStructureFlagBitsKHR #

shift :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

rotate :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

zeroBits :: BuildAccelerationStructureFlagBitsKHR #

bit :: Int -> BuildAccelerationStructureFlagBitsKHR #

setBit :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

clearBit :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

complementBit :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

testBit :: BuildAccelerationStructureFlagBitsKHR -> Int -> Bool #

bitSizeMaybe :: BuildAccelerationStructureFlagBitsKHR -> Maybe Int #

bitSize :: BuildAccelerationStructureFlagBitsKHR -> Int #

isSigned :: BuildAccelerationStructureFlagBitsKHR -> Bool #

shiftL :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

unsafeShiftL :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

shiftR :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

unsafeShiftR :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

rotateL :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

rotateR :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

popCount :: BuildAccelerationStructureFlagBitsKHR -> Int #

Zero BuildAccelerationStructureFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

newtype CopyAccelerationStructureModeKHR Source #

Bundled Patterns

pattern COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR :: CopyAccelerationStructureModeKHR

COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR creates a direct copy of the acceleration structure specified in src into the one specified by dst. The dst acceleration structure must have been created with the same parameters as src.

pattern COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR :: CopyAccelerationStructureModeKHR

COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR creates a more compact version of an acceleration structure src into dst. The acceleration structure dst must have been created with a compactedSize corresponding to the one returned by cmdWriteAccelerationStructuresPropertiesKHR after the build of the acceleration structure specified by src.

pattern COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR :: CopyAccelerationStructureModeKHR

COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR serializes the acceleration structure to a semi-opaque format which can be reloaded on a compatible implementation.

pattern COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR :: CopyAccelerationStructureModeKHR

COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR deserializes the semi-opaque serialization format in the buffer to the acceleration structure.

Instances

Instances details
Eq CopyAccelerationStructureModeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Ord CopyAccelerationStructureModeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Read CopyAccelerationStructureModeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Show CopyAccelerationStructureModeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Storable CopyAccelerationStructureModeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Zero CopyAccelerationStructureModeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

newtype AccelerationStructureTypeKHR Source #

VkAccelerationStructureTypeKHR - Type of acceleration structure

See Also

AccelerationStructureBuildGeometryInfoKHR, AccelerationStructureCreateInfoKHR

Bundled Patterns

pattern ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR :: AccelerationStructureTypeKHR

ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR is a top-level acceleration structure containing instance data referring to bottom-level acceleration structures.

pattern ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR :: AccelerationStructureTypeKHR

ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR is a bottom-level acceleration structure containing the AABBs or geometry to be intersected.

Instances

Instances details
Eq AccelerationStructureTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Ord AccelerationStructureTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Read AccelerationStructureTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Show AccelerationStructureTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Storable AccelerationStructureTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Zero AccelerationStructureTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

newtype GeometryTypeKHR Source #

VkGeometryTypeKHR - Enum specifying which type of geometry is provided

See Also

AccelerationStructureCreateGeometryTypeInfoKHR, AccelerationStructureGeometryKHR, GeometryNV

Constructors

GeometryTypeKHR Int32 

Bundled Patterns

pattern GEOMETRY_TYPE_TRIANGLES_KHR :: GeometryTypeKHR

GEOMETRY_TYPE_TRIANGLES_KHR specifies a geometry type consisting of triangles.

pattern GEOMETRY_TYPE_AABBS_KHR :: GeometryTypeKHR

GEOMETRY_TYPE_AABBS_KHR specifies a geometry type consisting of axis-aligned bounding boxes.

pattern GEOMETRY_TYPE_INSTANCES_KHR :: GeometryTypeKHR

GEOMETRY_TYPE_INSTANCES_KHR specifies a geometry type consisting of acceleration structure instances.

Instances

Instances details
Eq GeometryTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Ord GeometryTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Read GeometryTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Show GeometryTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Storable GeometryTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Zero GeometryTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

newtype AccelerationStructureMemoryRequirementsTypeKHR Source #

VkAccelerationStructureMemoryRequirementsTypeKHR - Acceleration structure memory requirement type

See Also

AccelerationStructureMemoryRequirementsInfoKHR

Instances

Instances details
Eq AccelerationStructureMemoryRequirementsTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Ord AccelerationStructureMemoryRequirementsTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing

Read AccelerationStructureMemoryRequirementsTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing