| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Vulkan.Extensions.VK_KHR_ray_tracing
Synopsis
- destroyAccelerationStructureKHR :: forall io. MonadIO io => Device -> AccelerationStructureKHR -> ("allocator" ::: Maybe AllocationCallbacks) -> io ()
- getAccelerationStructureMemoryRequirementsKHR :: forall a io. (Extendss MemoryRequirements2 a, PokeChain a, PeekChain a, MonadIO io) => Device -> AccelerationStructureMemoryRequirementsInfoKHR -> io (MemoryRequirements2 a)
- bindAccelerationStructureMemoryKHR :: forall io. MonadIO io => Device -> ("bindInfos" ::: Vector BindAccelerationStructureMemoryInfoKHR) -> io ()
- cmdCopyAccelerationStructureKHR :: forall a io. (Extendss CopyAccelerationStructureInfoKHR a, PokeChain a, MonadIO io) => CommandBuffer -> CopyAccelerationStructureInfoKHR a -> io ()
- copyAccelerationStructureKHR :: forall a io. (Extendss CopyAccelerationStructureInfoKHR a, PokeChain a, MonadIO io) => Device -> CopyAccelerationStructureInfoKHR a -> io Result
- cmdCopyAccelerationStructureToMemoryKHR :: forall a io. (Extendss CopyAccelerationStructureToMemoryInfoKHR a, PokeChain a, MonadIO io) => CommandBuffer -> CopyAccelerationStructureToMemoryInfoKHR a -> io ()
- copyAccelerationStructureToMemoryKHR :: forall a io. (Extendss CopyAccelerationStructureToMemoryInfoKHR a, PokeChain a, MonadIO io) => Device -> CopyAccelerationStructureToMemoryInfoKHR a -> io Result
- cmdCopyMemoryToAccelerationStructureKHR :: forall a io. (Extendss CopyMemoryToAccelerationStructureInfoKHR a, PokeChain a, MonadIO io) => CommandBuffer -> CopyMemoryToAccelerationStructureInfoKHR a -> io ()
- copyMemoryToAccelerationStructureKHR :: forall a io. (Extendss CopyMemoryToAccelerationStructureInfoKHR a, PokeChain a, MonadIO io) => Device -> CopyMemoryToAccelerationStructureInfoKHR a -> io Result
- cmdWriteAccelerationStructuresPropertiesKHR :: forall io. MonadIO io => CommandBuffer -> ("accelerationStructures" ::: Vector AccelerationStructureKHR) -> QueryType -> QueryPool -> ("firstQuery" ::: Word32) -> io ()
- writeAccelerationStructuresPropertiesKHR :: forall io. MonadIO io => Device -> ("accelerationStructures" ::: Vector AccelerationStructureKHR) -> QueryType -> ("dataSize" ::: Word64) -> ("data" ::: Ptr ()) -> ("stride" ::: Word64) -> io ()
- cmdTraceRaysKHR :: forall io. MonadIO io => CommandBuffer -> ("raygenShaderBindingTable" ::: StridedBufferRegionKHR) -> ("missShaderBindingTable" ::: StridedBufferRegionKHR) -> ("hitShaderBindingTable" ::: StridedBufferRegionKHR) -> ("callableShaderBindingTable" ::: StridedBufferRegionKHR) -> ("width" ::: Word32) -> ("height" ::: Word32) -> ("depth" ::: Word32) -> io ()
- getRayTracingShaderGroupHandlesKHR :: forall io. MonadIO io => Device -> Pipeline -> ("firstGroup" ::: Word32) -> ("groupCount" ::: Word32) -> ("dataSize" ::: Word64) -> ("data" ::: Ptr ()) -> io ()
- getRayTracingCaptureReplayShaderGroupHandlesKHR :: forall io. MonadIO io => Device -> Pipeline -> ("firstGroup" ::: Word32) -> ("groupCount" ::: Word32) -> ("dataSize" ::: Word64) -> ("data" ::: Ptr ()) -> io ()
- createRayTracingPipelinesKHR :: forall io. MonadIO io => Device -> PipelineCache -> ("createInfos" ::: Vector (SomeStruct RayTracingPipelineCreateInfoKHR)) -> ("allocator" ::: Maybe AllocationCallbacks) -> io (Result, "pipelines" ::: Vector Pipeline)
- cmdTraceRaysIndirectKHR :: forall io. MonadIO io => CommandBuffer -> ("raygenShaderBindingTable" ::: StridedBufferRegionKHR) -> ("missShaderBindingTable" ::: StridedBufferRegionKHR) -> ("hitShaderBindingTable" ::: StridedBufferRegionKHR) -> ("callableShaderBindingTable" ::: StridedBufferRegionKHR) -> Buffer -> ("offset" ::: DeviceSize) -> io ()
- getDeviceAccelerationStructureCompatibilityKHR :: forall io. MonadIO io => Device -> AccelerationStructureVersionKHR -> io ()
- createAccelerationStructureKHR :: forall io. MonadIO io => Device -> AccelerationStructureCreateInfoKHR -> ("allocator" ::: Maybe AllocationCallbacks) -> io AccelerationStructureKHR
- withAccelerationStructureKHR :: forall io r. MonadIO io => Device -> AccelerationStructureCreateInfoKHR -> Maybe AllocationCallbacks -> (io AccelerationStructureKHR -> (AccelerationStructureKHR -> io ()) -> r) -> r
- cmdBuildAccelerationStructureKHR :: forall io. MonadIO io => CommandBuffer -> ("infos" ::: Vector (SomeStruct AccelerationStructureBuildGeometryInfoKHR)) -> ("offsetInfos" ::: Vector AccelerationStructureBuildOffsetInfoKHR) -> io ()
- cmdBuildAccelerationStructureIndirectKHR :: forall a io. (Extendss AccelerationStructureBuildGeometryInfoKHR a, PokeChain a, MonadIO io) => CommandBuffer -> AccelerationStructureBuildGeometryInfoKHR a -> ("indirectBuffer" ::: Buffer) -> ("indirectOffset" ::: DeviceSize) -> ("indirectStride" ::: Word32) -> io ()
- buildAccelerationStructureKHR :: forall io. MonadIO io => Device -> ("infos" ::: Vector (SomeStruct AccelerationStructureBuildGeometryInfoKHR)) -> ("offsetInfos" ::: Vector AccelerationStructureBuildOffsetInfoKHR) -> io Result
- getAccelerationStructureDeviceAddressKHR :: forall io. MonadIO io => Device -> AccelerationStructureDeviceAddressInfoKHR -> io DeviceAddress
- data RayTracingShaderGroupCreateInfoKHR = RayTracingShaderGroupCreateInfoKHR {}
- data RayTracingPipelineCreateInfoKHR (es :: [Type]) = RayTracingPipelineCreateInfoKHR {
- next :: Chain es
- flags :: PipelineCreateFlags
- stages :: Vector (SomeStruct PipelineShaderStageCreateInfo)
- groups :: Vector RayTracingShaderGroupCreateInfoKHR
- maxRecursionDepth :: Word32
- libraries :: PipelineLibraryCreateInfoKHR
- libraryInterface :: Maybe RayTracingPipelineInterfaceCreateInfoKHR
- layout :: PipelineLayout
- basePipelineHandle :: Pipeline
- basePipelineIndex :: Int32
- data BindAccelerationStructureMemoryInfoKHR = BindAccelerationStructureMemoryInfoKHR {}
- data WriteDescriptorSetAccelerationStructureKHR = WriteDescriptorSetAccelerationStructureKHR {}
- data AccelerationStructureMemoryRequirementsInfoKHR = AccelerationStructureMemoryRequirementsInfoKHR {}
- data PhysicalDeviceRayTracingFeaturesKHR = PhysicalDeviceRayTracingFeaturesKHR {
- rayTracing :: Bool
- rayTracingShaderGroupHandleCaptureReplay :: Bool
- rayTracingShaderGroupHandleCaptureReplayMixed :: Bool
- rayTracingAccelerationStructureCaptureReplay :: Bool
- rayTracingIndirectTraceRays :: Bool
- rayTracingIndirectAccelerationStructureBuild :: Bool
- rayTracingHostAccelerationStructureCommands :: Bool
- rayQuery :: Bool
- rayTracingPrimitiveCulling :: Bool
- data PhysicalDeviceRayTracingPropertiesKHR = PhysicalDeviceRayTracingPropertiesKHR {}
- data StridedBufferRegionKHR = StridedBufferRegionKHR {
- buffer :: Buffer
- offset :: DeviceSize
- stride :: DeviceSize
- size :: DeviceSize
- data TraceRaysIndirectCommandKHR = TraceRaysIndirectCommandKHR {}
- data AccelerationStructureGeometryTrianglesDataKHR = AccelerationStructureGeometryTrianglesDataKHR {}
- data AccelerationStructureGeometryAabbsDataKHR = AccelerationStructureGeometryAabbsDataKHR {}
- data AccelerationStructureGeometryInstancesDataKHR = AccelerationStructureGeometryInstancesDataKHR {}
- data AccelerationStructureGeometryKHR = AccelerationStructureGeometryKHR {}
- data AccelerationStructureBuildGeometryInfoKHR (es :: [Type]) = AccelerationStructureBuildGeometryInfoKHR {
- next :: Chain es
- type' :: AccelerationStructureTypeKHR
- flags :: BuildAccelerationStructureFlagsKHR
- update :: Bool
- srcAccelerationStructure :: AccelerationStructureKHR
- dstAccelerationStructure :: AccelerationStructureKHR
- geometries :: Vector AccelerationStructureGeometryKHR
- scratchData :: DeviceOrHostAddressKHR
- data AccelerationStructureBuildOffsetInfoKHR = AccelerationStructureBuildOffsetInfoKHR {}
- data AccelerationStructureCreateGeometryTypeInfoKHR = AccelerationStructureCreateGeometryTypeInfoKHR {}
- data AccelerationStructureCreateInfoKHR = AccelerationStructureCreateInfoKHR {}
- data AabbPositionsKHR = AabbPositionsKHR {}
- data TransformMatrixKHR = TransformMatrixKHR {}
- data AccelerationStructureInstanceKHR = AccelerationStructureInstanceKHR {}
- data AccelerationStructureDeviceAddressInfoKHR = AccelerationStructureDeviceAddressInfoKHR {}
- data AccelerationStructureVersionKHR = AccelerationStructureVersionKHR {}
- data CopyAccelerationStructureInfoKHR (es :: [Type]) = CopyAccelerationStructureInfoKHR {}
- data CopyAccelerationStructureToMemoryInfoKHR (es :: [Type]) = CopyAccelerationStructureToMemoryInfoKHR {}
- data CopyMemoryToAccelerationStructureInfoKHR (es :: [Type]) = CopyMemoryToAccelerationStructureInfoKHR {}
- data RayTracingPipelineInterfaceCreateInfoKHR = RayTracingPipelineInterfaceCreateInfoKHR {}
- data DeviceOrHostAddressKHR
- = DeviceAddress DeviceAddress
- | HostAddress (Ptr ())
- data DeviceOrHostAddressConstKHR
- data AccelerationStructureGeometryDataKHR
- newtype GeometryInstanceFlagBitsKHR where
- GeometryInstanceFlagBitsKHR Flags
- pattern GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR :: GeometryInstanceFlagBitsKHR
- pattern GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR :: GeometryInstanceFlagBitsKHR
- pattern GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR :: GeometryInstanceFlagBitsKHR
- pattern GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR :: GeometryInstanceFlagBitsKHR
- type GeometryInstanceFlagsKHR = GeometryInstanceFlagBitsKHR
- newtype GeometryFlagBitsKHR where
- type GeometryFlagsKHR = GeometryFlagBitsKHR
- newtype BuildAccelerationStructureFlagBitsKHR where
- BuildAccelerationStructureFlagBitsKHR Flags
- pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR :: BuildAccelerationStructureFlagBitsKHR
- pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR :: BuildAccelerationStructureFlagBitsKHR
- pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR :: BuildAccelerationStructureFlagBitsKHR
- pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR :: BuildAccelerationStructureFlagBitsKHR
- pattern BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR :: BuildAccelerationStructureFlagBitsKHR
- type BuildAccelerationStructureFlagsKHR = BuildAccelerationStructureFlagBitsKHR
- newtype CopyAccelerationStructureModeKHR where
- CopyAccelerationStructureModeKHR Int32
- pattern COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR :: CopyAccelerationStructureModeKHR
- pattern COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR :: CopyAccelerationStructureModeKHR
- pattern COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR :: CopyAccelerationStructureModeKHR
- pattern COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR :: CopyAccelerationStructureModeKHR
- newtype AccelerationStructureTypeKHR where
- newtype GeometryTypeKHR where
- GeometryTypeKHR Int32
- pattern GEOMETRY_TYPE_TRIANGLES_KHR :: GeometryTypeKHR
- pattern GEOMETRY_TYPE_AABBS_KHR :: GeometryTypeKHR
- pattern GEOMETRY_TYPE_INSTANCES_KHR :: GeometryTypeKHR
- newtype AccelerationStructureMemoryRequirementsTypeKHR where
- AccelerationStructureMemoryRequirementsTypeKHR Int32
- pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR :: AccelerationStructureMemoryRequirementsTypeKHR
- pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR :: AccelerationStructureMemoryRequirementsTypeKHR
- pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR :: AccelerationStructureMemoryRequirementsTypeKHR
- newtype AccelerationStructureBuildTypeKHR where
- AccelerationStructureBuildTypeKHR Int32
- pattern ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR :: AccelerationStructureBuildTypeKHR
- pattern ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR :: AccelerationStructureBuildTypeKHR
- pattern ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR :: AccelerationStructureBuildTypeKHR
- newtype RayTracingShaderGroupTypeKHR where
- RayTracingShaderGroupTypeKHR Int32
- pattern RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR :: RayTracingShaderGroupTypeKHR
- pattern RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR :: RayTracingShaderGroupTypeKHR
- pattern RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR :: RayTracingShaderGroupTypeKHR
- type KHR_RAY_TRACING_SPEC_VERSION = 8
- pattern KHR_RAY_TRACING_SPEC_VERSION :: forall a. Integral a => a
- type KHR_RAY_TRACING_EXTENSION_NAME = "VK_KHR_ray_tracing"
- pattern KHR_RAY_TRACING_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
- newtype AccelerationStructureKHR = AccelerationStructureKHR Word64
- data PipelineLibraryCreateInfoKHR = PipelineLibraryCreateInfoKHR {}
- newtype DebugReportObjectTypeEXT where
- DebugReportObjectTypeEXT Int32
- pattern DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT :: DebugReportObjectTypeEXT
- type SHADER_UNUSED_KHR = 4294967295
- pattern SHADER_UNUSED_KHR :: Word32
Documentation
destroyAccelerationStructureKHR Source #
Arguments
| :: forall io. MonadIO io | |
| => Device |
|
| -> AccelerationStructureKHR |
|
| -> ("allocator" ::: Maybe AllocationCallbacks) |
|
| -> io () |
vkDestroyAccelerationStructureKHR - Destroy an acceleration structure object
Valid Usage
- All submitted commands that refer to
accelerationStructuremust have completed execution
- If
AllocationCallbackswere provided whenaccelerationStructurewas created, a compatible set of callbacks must be provided here - If no
AllocationCallbackswere provided whenaccelerationStructurewas created,pAllocatormust beNULL
Valid Usage (Implicit)
devicemust be a validDevicehandle
- If
accelerationStructureis notNULL_HANDLE,accelerationStructuremust be a validAccelerationStructureKHRhandle - If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure - If
accelerationStructureis a valid handle, it must have been created, allocated, or retrieved fromdevice
Host Synchronization
- Host access to
accelerationStructuremust be externally synchronized
See Also
getAccelerationStructureMemoryRequirementsKHR Source #
Arguments
| :: forall a io. (Extendss MemoryRequirements2 a, PokeChain a, PeekChain a, MonadIO io) | |
| => Device |
|
| -> AccelerationStructureMemoryRequirementsInfoKHR |
|
| -> 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 |
|
| -> ("bindInfos" ::: Vector BindAccelerationStructureMemoryInfoKHR) |
|
| -> io () |
vkBindAccelerationStructureMemoryKHR - Bind acceleration structure memory
Return Codes
See Also
cmdCopyAccelerationStructureKHR Source #
Arguments
| :: forall a io. (Extendss CopyAccelerationStructureInfoKHR a, PokeChain a, MonadIO io) | |
| => CommandBuffer |
|
| -> CopyAccelerationStructureInfoKHR a |
|
| -> io () |
vkCmdCopyAccelerationStructureKHR - Copy an acceleration structure
Valid Usage
- All
AccelerationStructureKHRobjects referenced by this command must be bound to device memory
- The
DeferredOperationInfoKHRstructure must not be included in thepNextchain of theCopyAccelerationStructureInfoKHRstructure
Valid Usage (Implicit)
commandBuffermust be a validCommandBufferhandle
pInfomust be a valid pointer to a validCopyAccelerationStructureInfoKHRstructurecommandBuffermust be in the recording state- The
CommandPoolthatcommandBufferwas allocated from must support compute operations - This command must only be called outside of a render pass instance
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas 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
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
deviceis the device which owns the acceleration structures.
pInfois a pointer to aCopyAccelerationStructureInfoKHRstructure defining the copy operation.
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
- All
AccelerationStructureKHRobjects referenced by this command must be bound to host-visible memory
- the ::rayTracingHostAccelerationStructureCommands feature must be enabled
Valid Usage (Implicit)
devicemust be a validDevicehandle
pInfomust be a valid pointer to a validCopyAccelerationStructureInfoKHRstructure
Return Codes
See Also
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
commandBufferis the command buffer into which the command will be recorded.
pInfois an a pointer to aCopyAccelerationStructureToMemoryInfoKHRstructure defining the copy operation.
The defined header structure for the serialized data consists of:
UUID_SIZEbytes of data matchingPhysicalDeviceIDProperties::driverUUIDUUID_SIZEbytes of data identifying the compatibility for comparison usinggetDeviceAccelerationStructureCompatibilityKHR- A 64-bit integer of the total size matching the value queried using
QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR - A 64-bit integer of the deserialized size to be passed in to
AccelerationStructureCreateInfoKHR::compactedSize - A 64-bit integer of the count of the number of acceleration structure handles following. This will be zero for a bottom-level acceleration structure.
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
DeviceOrHostAddressConstKHRreferenced 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
- All
AccelerationStructureKHRobjects referenced by this command must be bound to device memory - The
DeferredOperationInfoKHRstructure must not be included in thepNextchain of theCopyAccelerationStructureToMemoryInfoKHRstructure modemust beCOPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR
Valid Usage (Implicit)
commandBuffermust be a validCommandBufferhandle
pInfomust be a valid pointer to a validCopyAccelerationStructureToMemoryInfoKHRstructurecommandBuffermust be in the recording state- The
CommandPoolthatcommandBufferwas allocated from must support compute operations - This command must only be called outside of a render pass instance
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas 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
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.
deviceis the device which ownspInfo->src.pInfois a pointer to aCopyAccelerationStructureToMemoryInfoKHRstructure defining the copy operation.
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
- All
AccelerationStructureKHRobjects referenced by this command must be bound to host-visible memory
- All
DeviceOrHostAddressKHRreferenced by this command must contain valid host pointers - the ::rayTracingHostAccelerationStructureCommands feature must be enabled
Valid Usage (Implicit)
devicemust be a validDevicehandle
pInfomust be a valid pointer to a validCopyAccelerationStructureToMemoryInfoKHRstructure
Return Codes
See Also
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
commandBufferis the command buffer into which the command will be recorded.
pInfois a pointer to aCopyMemoryToAccelerationStructureInfoKHRstructure defining the copy operation.
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
DeviceOrHostAddressKHRreferenced 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
- All
AccelerationStructureKHRobjects referenced by this command must be bound to device memory - The
DeferredOperationInfoKHRstructure must not be included in thepNextchain of theCopyMemoryToAccelerationStructureInfoKHRstructure modemust beCOPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR- The data in
pInfo->srcmust have a format compatible with the destination physical device as returned bygetDeviceAccelerationStructureCompatibilityKHR
Valid Usage (Implicit)
commandBuffermust be a validCommandBufferhandle
pInfomust be a valid pointer to a validCopyMemoryToAccelerationStructureInfoKHRstructurecommandBuffermust be in the recording state- The
CommandPoolthatcommandBufferwas allocated from must support compute operations - This command must only be called outside of a render pass instance
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas 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
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.
deviceis the device which ownspInfo->dst.pInfois a pointer to aCopyMemoryToAccelerationStructureInfoKHRstructure defining the copy operation.
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
- All
AccelerationStructureKHRobjects referenced by this command must be bound to host-visible memory
- All
DeviceOrHostAddressConstKHRreferenced by this command must contain valid host pointers - the ::rayTracingHostAccelerationStructureCommands feature must be enabled
Valid Usage (Implicit)
devicemust be a validDevicehandle
pInfomust be a valid pointer to a validCopyMemoryToAccelerationStructureInfoKHRstructure
Return Codes
See Also
cmdWriteAccelerationStructuresPropertiesKHR Source #
Arguments
| :: forall io. MonadIO io | |
| => CommandBuffer |
|
| -> ("accelerationStructures" ::: Vector AccelerationStructureKHR) |
|
| -> QueryType |
|
| -> QueryPool |
|
| -> ("firstQuery" ::: Word32) |
|
| -> io () |
vkCmdWriteAccelerationStructuresPropertiesKHR - Write acceleration structure result parameters to query results.
Valid Usage
queryPoolmust have been created with aqueryTypematchingqueryType
- The queries identified by
queryPoolandfirstQuerymust be unavailable - All acceleration structures in
accelerationStructuresmust have been built withBUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHRifqueryTypeisQUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR queryTypemust beQUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHRorQUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR
Valid Usage (Implicit)
commandBuffermust be a validCommandBufferhandle
pAccelerationStructuresmust be a valid pointer to an array ofaccelerationStructureCountvalidAccelerationStructureKHRhandlesqueryTypemust be a validQueryTypevaluequeryPoolmust be a validQueryPoolhandlecommandBuffermust be in the recording state- The
CommandPoolthatcommandBufferwas allocated from must support compute operations - This command must only be called outside of a render pass instance
accelerationStructureCountmust be greater than0- Each of
commandBuffer,queryPool, and the elements ofpAccelerationStructuresmust have been created, allocated, or retrieved from the sameDevice
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas 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
deviceis the device which owns the acceleration structures inpAccelerationStructures.
accelerationStructureCountis the count of acceleration structures for which to query the property.pAccelerationStructurespoints to an array of existing previously built acceleration structures.queryTypeis aQueryTypevalue specifying the property to be queried.dataSizeis the size in bytes of the buffer pointed to bypData.pDatais a pointer to a user-allocated buffer where the results will be written.strideis the stride in bytes between results for individual queries withinpData.
Valid Usage
- If
queryTypeisQUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR, thenstridemust be a multiple of the size ofDeviceSize
- If
queryTypeisQUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR, thendatamust point to aDeviceSize - If
queryTypeisQUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR, thenstridemust be a multiple of the size ofDeviceSize - If
queryTypeisQUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR, thendatamust point to aDeviceSize dataSizemust be greater than or equal toaccelerationStructureCount*stride- The acceleration structures referenced by
pAccelerationStructuresmust be bound to host-visible memory - All acceleration structures in
accelerationStructuresmust have been built withBUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHRifqueryTypeisQUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR queryTypemust beQUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHRorQUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR- the ::rayTracingHostAccelerationStructureCommands feature must be enabled
Valid Usage (Implicit)
devicemust be a validDevicehandle
pAccelerationStructuresmust be a valid pointer to an array ofaccelerationStructureCountvalidAccelerationStructureKHRhandlesqueryTypemust be a validQueryTypevaluepDatamust be a valid pointer to an array ofdataSizebytesaccelerationStructureCountmust be greater than0dataSizemust be greater than0- Each element of
pAccelerationStructuresmust have been created, allocated, or retrieved fromdevice
Return Codes
See Also
Arguments
| :: forall io. MonadIO io | |
| => CommandBuffer |
|
| -> ("raygenShaderBindingTable" ::: StridedBufferRegionKHR) |
|
| -> ("missShaderBindingTable" ::: StridedBufferRegionKHR) |
|
| -> ("hitShaderBindingTable" ::: StridedBufferRegionKHR) |
|
| -> ("callableShaderBindingTable" ::: StridedBufferRegionKHR) |
|
| -> ("width" ::: Word32) |
|
| -> ("height" ::: Word32) |
|
| -> ("depth" ::: Word32) |
|
| -> 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
ImageViewis sampled withFILTER_LINEARas a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
- If a
ImageViewis accessed using atomic operations as a result of this command, then the image view’s format features must containFORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT - If a
ImageViewis sampled withFILTER_CUBIC_EXTas a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT - Any
ImageViewbeing sampled withFILTER_CUBIC_EXTas a result of this command must have aImageViewTypeand format that supports cubic filtering, as specified byFilterCubicImageViewImageFormatPropertiesEXT::filterCubicreturned bygetPhysicalDeviceImageFormatProperties2 - Any
ImageViewbeing sampled withFILTER_CUBIC_EXTwith a reduction mode of eitherSAMPLER_REDUCTION_MODE_MINorSAMPLER_REDUCTION_MODE_MAXas a result of this command must have aImageViewTypeand format that supports cubic filtering together with minmax filtering, as specified byFilterCubicImageViewImageFormatPropertiesEXT::filterCubicMinmaxreturned bygetPhysicalDeviceImageFormatProperties2 - Any
Imagecreated with aImageCreateInfo::flagscontainingIMAGE_CREATE_CORNER_SAMPLED_BIT_NVsampled as a result of this command must only be sampled using aSamplerAddressModeofSAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE - For each set n that is statically used by the
Pipelinebound 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 aPipelineLayoutthat is compatible for set n, with thePipelineLayoutused to create the currentPipeline, as described in ??? - For each push constant that is statically used by the
Pipelinebound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with aPipelineLayoutthat is compatible for push constants, with thePipelineLayoutused to create the currentPipeline, as described in ??? - Descriptors in each bound descriptor set, specified via
cmdBindDescriptorSets, must be valid if they are statically used by thePipelinebound 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
Pipelineobject bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set forcommandBuffer, 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
Pipelineobject bound to the pipeline bind point used by this command, since that pipeline was bound - If the
Pipelineobject bound to the pipeline bind point used by this command accesses aSamplerobject that uses unnormalized coordinates, that sampler must not be used to sample from anyImagewith aImageViewof the typeIMAGE_VIEW_TYPE_3D,IMAGE_VIEW_TYPE_CUBE,IMAGE_VIEW_TYPE_1D_ARRAY,IMAGE_VIEW_TYPE_2D_ARRAYorIMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage - If the
Pipelineobject bound to the pipeline bind point used by this command accesses aSamplerobject that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-VOpImageSample*orOpImageSparseSample*instructions withImplicitLod,DreforProjin their name, in any shader stage - If the
Pipelineobject bound to the pipeline bind point used by this command accesses aSamplerobject that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-VOpImageSample*orOpImageSparseSample*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
Pipelineobject 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
Pipelineobject 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
commandBufferis an unprotected command buffer, any resource accessed by thePipelineobject bound to the pipeline bind point used by this command must not be a protected resource - If a
ImageViewis accessed usingOpImageWriteas a result of this command, then theTypeof theTexeloperand of that instruction must have at least as many components as the image view’s format. - 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
maxRecursionDepthused to create the bound ray tracing pipeline - If
pRayGenShaderBindingTable->bufferis non-sparse then it must be bound completely and contiguously to a singleDeviceMemoryobject - The
offsetmember ofpRayGenShaderBindingTablemust be less than the size of thepRayGenShaderBindingTable->buffer pRayGenShaderBindingTable->offsetmust be a multiple ofPhysicalDeviceRayTracingPropertiesKHR::shaderGroupBaseAlignmentpRayGenShaderBindingTable->offset+pRayGenShaderBindingTable->sizemust be less than or equal to the size ofpRayGenShaderBindingTable->buffer- The
sizemember ofpRayGenShaderBindingTablemust be equal to itsstridemember - If
pMissShaderBindingTable->bufferis non-sparse then it must be bound completely and contiguously to a singleDeviceMemoryobject - The
offsetmember ofpMissShaderBindingTablemust be less than the size ofpMissShaderBindingTable->buffer - The
offsetmember ofpMissShaderBindingTablemust be a multiple ofPhysicalDeviceRayTracingPropertiesKHR::shaderGroupBaseAlignment pMissShaderBindingTable->offset+pMissShaderBindingTable->sizemust be less than or equal to the size ofpMissShaderBindingTable->buffer- The
stridemember ofpMissShaderBindingTablemust be a multiple ofPhysicalDeviceRayTracingPropertiesKHR::shaderGroupHandleSize - The
stridemember ofpMissShaderBindingTablemust be less than or equal toPhysicalDeviceRayTracingPropertiesKHR::maxShaderGroupStride - If
pHitShaderBindingTable->bufferis non-sparse then it must be bound completely and contiguously to a singleDeviceMemoryobject - The
offsetmember ofpHitShaderBindingTablemust be less than the size ofpHitShaderBindingTable->buffer - The
offsetmember ofpHitShaderBindingTablemust be a multiple ofPhysicalDeviceRayTracingPropertiesKHR::shaderGroupBaseAlignment pHitShaderBindingTable->offset+pHitShaderBindingTable->sizemust be less than or equal to the size ofpHitShaderBindingTable->buffer- The
stridemember ofpHitShaderBindingTablemust be a multiple ofPhysicalDeviceRayTracingPropertiesKHR::shaderGroupHandleSize - The
stridemember ofpHitShaderBindingTablemust be less than or equal toPhysicalDeviceRayTracingPropertiesKHR::maxShaderGroupStride - If
pCallableShaderBindingTable->bufferis non-sparse then it must be bound completely and contiguously to a singleDeviceMemoryobject - The
offsetmember ofpCallableShaderBindingTablemust be less than the size ofpCallableShaderBindingTable->buffer - The
offsetmember ofpCallableShaderBindingTablemust be a multiple ofPhysicalDeviceRayTracingPropertiesKHR::shaderGroupBaseAlignment pCallableShaderBindingTable->offset+pCallableShaderBindingTable->sizemust be less than or equal to the size ofpCallableShaderBindingTable->buffer- The
stridemember ofpCallableShaderBindingTablemust be a multiple ofPhysicalDeviceRayTracingPropertiesKHR::shaderGroupHandleSize - The
stridemember ofpCallableShaderBindingTablemust be less than or equal toPhysicalDeviceRayTracingPropertiesKHR::maxShaderGroupStride - If the currently bound ray tracing pipeline was created with
flagsthat includedPIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR, thebuffermember ofpHitShaderBindingTablemust not beNULL_HANDLE - If the currently bound ray tracing pipeline was created with
flagsthat includedPIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR, thebuffermember ofpHitShaderBindingTablemust not beNULL_HANDLE - If the currently bound ray tracing pipeline was created with
flagsthat includedPIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR, thebuffermember ofpHitShaderBindingTablemust not beNULL_HANDLE - If the currently bound ray tracing pipeline was created with
flagsthat includedPIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR, the shader group handle identified bypMissShaderBindingTablemust contain a valid miss shader - If the currently bound ray tracing pipeline was created with
flagsthat includedPIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR, entries inpHitShaderBindingTableaccessed 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
flagsthat includedPIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR, entries inpHitShaderBindingTableaccessed 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
flagsthat includedPIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR, entries inpHitShaderBindingTableaccessed as a result of this command in order to execute an intersection shader must not be set to zero - If
commandBufferis a protected command buffer, any resource written to by thePipelineobject bound to the pipeline bind point used by this command must not be an unprotected resource - If
commandBufferis a protected command buffer, pipeline stages other than the framebuffer-space and compute stages in thePipelineobject bound to the pipeline bind point must not write to any resource widthmust be less than or equal toPhysicalDeviceLimits::maxComputeWorkGroupCount[0]heightmust be less than or equal toPhysicalDeviceLimits::maxComputeWorkGroupCount[1]depthmust be less than or equal toPhysicalDeviceLimits::maxComputeWorkGroupCount[2]
Valid Usage (Implicit)
commandBuffermust be a validCommandBufferhandle
pRaygenShaderBindingTablemust be a valid pointer to a validStridedBufferRegionKHRstructurepMissShaderBindingTablemust be a valid pointer to a validStridedBufferRegionKHRstructurepHitShaderBindingTablemust be a valid pointer to a validStridedBufferRegionKHRstructurepCallableShaderBindingTablemust be a valid pointer to a validStridedBufferRegionKHRstructurecommandBuffermust be in the recording state- The
CommandPoolthatcommandBufferwas allocated from must support compute operations - This command must only be called outside of a render pass instance
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas 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
getRayTracingShaderGroupHandlesKHR Source #
Arguments
| :: forall io. MonadIO io | |
| => Device |
|
| -> Pipeline |
|
| -> ("firstGroup" ::: Word32) |
|
| -> ("groupCount" ::: Word32) |
|
| -> ("dataSize" ::: Word64) |
|
| -> ("data" ::: Ptr ()) |
|
| -> io () |
vkGetRayTracingShaderGroupHandlesKHR - Query ray tracing pipeline shader group handles
Valid Usage
firstGroupmust be less than the number of shader groups inpipeline
- The sum of
firstGroupandgroupCountmust be less than or equal to the number of shader groups inpipeline dataSizemust be at leastPhysicalDeviceRayTracingPropertiesKHR::shaderGroupHandleSize×groupCountpipelinemust have not been created withPIPELINE_CREATE_LIBRARY_BIT_KHR
Valid Usage (Implicit)
devicemust be a validDevicehandle
pipelinemust be a validPipelinehandlepDatamust be a valid pointer to an array ofdataSizebytesdataSizemust be greater than0pipelinemust have been created, allocated, or retrieved fromdevice
Return Codes
See Also
getRayTracingCaptureReplayShaderGroupHandlesKHR Source #
Arguments
| :: forall io. MonadIO io | |
| => Device |
|
| -> Pipeline |
|
| -> ("firstGroup" ::: Word32) |
|
| -> ("groupCount" ::: Word32) |
|
| -> ("dataSize" ::: Word64) |
|
| -> ("data" ::: Ptr ()) |
|
| -> io () |
vkGetRayTracingCaptureReplayShaderGroupHandlesKHR - Query ray tracing capture replay pipeline shader group handles
Valid Usage
firstGroupmust be less than the number of shader groups inpipeline
- The sum of
firstGroupandgroupCountmust be less than or equal to the number of shader groups inpipeline dataSizemust be at leastPhysicalDeviceRayTracingPropertiesKHR::shaderGroupHandleCaptureReplaySize×groupCountPhysicalDeviceRayTracingFeaturesKHR::rayTracingShaderGroupHandleCaptureReplaymust be enabled to call this function
Valid Usage (Implicit)
devicemust be a validDevicehandle
pipelinemust be a validPipelinehandlepDatamust be a valid pointer to an array ofdataSizebytesdataSizemust be greater than0pipelinemust have been created, allocated, or retrieved fromdevice
Return Codes
See Also
createRayTracingPipelinesKHR Source #
Arguments
| :: forall io. MonadIO io | |
| => Device |
|
| -> PipelineCache |
|
| -> ("createInfos" ::: Vector (SomeStruct RayTracingPipelineCreateInfoKHR)) |
|
| -> ("allocator" ::: Maybe AllocationCallbacks) |
|
| -> 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
flagsmember of any element ofpCreateInfoscontains thePIPELINE_CREATE_DERIVATIVE_BITflag, and thebasePipelineIndexmember of that same element is not-1,basePipelineIndexmust be less than the index intopCreateInfosthat corresponds to that element
- If the
flagsmember of any element ofpCreateInfoscontains thePIPELINE_CREATE_DERIVATIVE_BITflag, the base pipeline must have been created with thePIPELINE_CREATE_ALLOW_DERIVATIVES_BITflag set - If
pipelineCachewas created withPIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT, host access topipelineCachemust be externally synchronized - The rayTracing feature must be enabled
Valid Usage (Implicit)
devicemust be a validDevicehandle
- If
pipelineCacheis notNULL_HANDLE,pipelineCachemust be a validPipelineCachehandle pCreateInfosmust be a valid pointer to an array ofcreateInfoCountvalidRayTracingPipelineCreateInfoKHRstructures- If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure pPipelinesmust be a valid pointer to an array ofcreateInfoCountPipelinehandlescreateInfoCountmust be greater than0- If
pipelineCacheis a valid handle, it must have been created, allocated, or retrieved fromdevice
Return Codes
See Also
AllocationCallbacks,
Device, Pipeline,
PipelineCache, RayTracingPipelineCreateInfoKHR
cmdTraceRaysIndirectKHR Source #
Arguments
| :: forall io. MonadIO io | |
| => CommandBuffer |
|
| -> ("raygenShaderBindingTable" ::: StridedBufferRegionKHR) |
|
| -> ("missShaderBindingTable" ::: StridedBufferRegionKHR) |
|
| -> ("hitShaderBindingTable" ::: StridedBufferRegionKHR) |
|
| -> ("callableShaderBindingTable" ::: StridedBufferRegionKHR) |
|
| -> Buffer |
|
| -> ("offset" ::: DeviceSize) |
|
| -> 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
ImageViewis sampled withFILTER_LINEARas a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
- If a
ImageViewis accessed using atomic operations as a result of this command, then the image view’s format features must containFORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT - If a
ImageViewis sampled withFILTER_CUBIC_EXTas a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT - Any
ImageViewbeing sampled withFILTER_CUBIC_EXTas a result of this command must have aImageViewTypeand format that supports cubic filtering, as specified byFilterCubicImageViewImageFormatPropertiesEXT::filterCubicreturned bygetPhysicalDeviceImageFormatProperties2 - Any
ImageViewbeing sampled withFILTER_CUBIC_EXTwith a reduction mode of eitherSAMPLER_REDUCTION_MODE_MINorSAMPLER_REDUCTION_MODE_MAXas a result of this command must have aImageViewTypeand format that supports cubic filtering together with minmax filtering, as specified byFilterCubicImageViewImageFormatPropertiesEXT::filterCubicMinmaxreturned bygetPhysicalDeviceImageFormatProperties2 - Any
Imagecreated with aImageCreateInfo::flagscontainingIMAGE_CREATE_CORNER_SAMPLED_BIT_NVsampled as a result of this command must only be sampled using aSamplerAddressModeofSAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE - For each set n that is statically used by the
Pipelinebound 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 aPipelineLayoutthat is compatible for set n, with thePipelineLayoutused to create the currentPipeline, as described in ??? - For each push constant that is statically used by the
Pipelinebound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with aPipelineLayoutthat is compatible for push constants, with thePipelineLayoutused to create the currentPipeline, as described in ??? - Descriptors in each bound descriptor set, specified via
cmdBindDescriptorSets, must be valid if they are statically used by thePipelinebound 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
Pipelineobject bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set forcommandBuffer, 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
Pipelineobject bound to the pipeline bind point used by this command, since that pipeline was bound - If the
Pipelineobject bound to the pipeline bind point used by this command accesses aSamplerobject that uses unnormalized coordinates, that sampler must not be used to sample from anyImagewith aImageViewof the typeIMAGE_VIEW_TYPE_3D,IMAGE_VIEW_TYPE_CUBE,IMAGE_VIEW_TYPE_1D_ARRAY,IMAGE_VIEW_TYPE_2D_ARRAYorIMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage - If the
Pipelineobject bound to the pipeline bind point used by this command accesses aSamplerobject that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-VOpImageSample*orOpImageSparseSample*instructions withImplicitLod,DreforProjin their name, in any shader stage - If the
Pipelineobject bound to the pipeline bind point used by this command accesses aSamplerobject that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-VOpImageSample*orOpImageSparseSample*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
Pipelineobject 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
Pipelineobject 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
commandBufferis an unprotected command buffer, any resource accessed by thePipelineobject bound to the pipeline bind point used by this command must not be a protected resource - If a
ImageViewis accessed usingOpImageWriteas a result of this command, then theTypeof theTexeloperand of that instruction must have at least as many components as the image view’s format. - 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
maxRecursionDepthused to create the bound ray tracing pipeline - If
pRayGenShaderBindingTable->bufferis non-sparse then it must be bound completely and contiguously to a singleDeviceMemoryobject - The
offsetmember ofpRayGenShaderBindingTablemust be less than the size of thepRayGenShaderBindingTable->buffer pRayGenShaderBindingTable->offsetmust be a multiple ofPhysicalDeviceRayTracingPropertiesKHR::shaderGroupBaseAlignmentpRayGenShaderBindingTable->offset+pRayGenShaderBindingTable->sizemust be less than or equal to the size ofpRayGenShaderBindingTable->buffer- The
sizemember ofpRayGenShaderBindingTablemust be equal to itsstridemember - If
pMissShaderBindingTable->bufferis non-sparse then it must be bound completely and contiguously to a singleDeviceMemoryobject - The
offsetmember ofpMissShaderBindingTablemust be less than the size ofpMissShaderBindingTable->buffer - The
offsetmember ofpMissShaderBindingTablemust be a multiple ofPhysicalDeviceRayTracingPropertiesKHR::shaderGroupBaseAlignment pMissShaderBindingTable->offset+pMissShaderBindingTable->sizemust be less than or equal to the size ofpMissShaderBindingTable->buffer- The
stridemember ofpMissShaderBindingTablemust be a multiple ofPhysicalDeviceRayTracingPropertiesKHR::shaderGroupHandleSize - The
stridemember ofpMissShaderBindingTablemust be less than or equal toPhysicalDeviceRayTracingPropertiesKHR::maxShaderGroupStride - If
pHitShaderBindingTable->bufferis non-sparse then it must be bound completely and contiguously to a singleDeviceMemoryobject - The
offsetmember ofpHitShaderBindingTablemust be less than the size ofpHitShaderBindingTable->buffer - The
offsetmember ofpHitShaderBindingTablemust be a multiple ofPhysicalDeviceRayTracingPropertiesKHR::shaderGroupBaseAlignment pHitShaderBindingTable->offset+pHitShaderBindingTable->sizemust be less than or equal to the size ofpHitShaderBindingTable->buffer- The
stridemember ofpHitShaderBindingTablemust be a multiple ofPhysicalDeviceRayTracingPropertiesKHR::shaderGroupHandleSize - The
stridemember ofpHitShaderBindingTablemust be less than or equal toPhysicalDeviceRayTracingPropertiesKHR::maxShaderGroupStride - If
pCallableShaderBindingTable->bufferis non-sparse then it must be bound completely and contiguously to a singleDeviceMemoryobject - The
offsetmember ofpCallableShaderBindingTablemust be less than the size ofpCallableShaderBindingTable->buffer - The
offsetmember ofpCallableShaderBindingTablemust be a multiple ofPhysicalDeviceRayTracingPropertiesKHR::shaderGroupBaseAlignment pCallableShaderBindingTable->offset+pCallableShaderBindingTable->sizemust be less than or equal to the size ofpCallableShaderBindingTable->buffer- The
stridemember ofpCallableShaderBindingTablemust be a multiple ofPhysicalDeviceRayTracingPropertiesKHR::shaderGroupHandleSize - The
stridemember ofpCallableShaderBindingTablemust be less than or equal toPhysicalDeviceRayTracingPropertiesKHR::maxShaderGroupStride - If the currently bound ray tracing pipeline was created with
flagsthat includedPIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR, thebuffermember ofpHitShaderBindingTablemust not beNULL_HANDLE - If the currently bound ray tracing pipeline was created with
flagsthat includedPIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR, thebuffermember ofpHitShaderBindingTablemust not beNULL_HANDLE - If the currently bound ray tracing pipeline was created with
flagsthat includedPIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR, thebuffermember ofpHitShaderBindingTablemust not beNULL_HANDLE - If the currently bound ray tracing pipeline was created with
flagsthat includedPIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR, the shader group handle identified bypMissShaderBindingTablemust contain a valid miss shader - If the currently bound ray tracing pipeline was created with
flagsthat includedPIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR, entries inpHitShaderBindingTableaccessed 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
flagsthat includedPIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR, entries inpHitShaderBindingTableaccessed 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
flagsthat includedPIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR, entries inpHitShaderBindingTableaccessed as a result of this command in order to execute an intersection shader must not be set to zero - If
bufferis non-sparse then it must be bound completely and contiguously to a singleDeviceMemoryobject buffermust have been created with theBUFFER_USAGE_INDIRECT_BUFFER_BITbit setoffsetmust be a multiple of4commandBuffermust not be a protected command buffer- (
offset+sizeof(TraceRaysIndirectCommandKHR)) must be less than or equal to the size ofbuffer - the ::rayTracingIndirectTraceRays feature must be enabled
Valid Usage (Implicit)
commandBuffermust be a validCommandBufferhandle
pRaygenShaderBindingTablemust be a valid pointer to a validStridedBufferRegionKHRstructurepMissShaderBindingTablemust be a valid pointer to a validStridedBufferRegionKHRstructurepHitShaderBindingTablemust be a valid pointer to a validStridedBufferRegionKHRstructurepCallableShaderBindingTablemust be a valid pointer to a validStridedBufferRegionKHRstructurebuffermust be a validBufferhandlecommandBuffermust be in the recording state- The
CommandPoolthatcommandBufferwas allocated from must support compute operations - This command must only be called outside of a render pass instance
- Both of
buffer, andcommandBuffermust have been created, allocated, or retrieved from the sameDevice
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas 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
getDeviceAccelerationStructureCompatibilityKHR Source #
Arguments
| :: forall io. MonadIO io | |
| => Device |
|
| -> AccelerationStructureVersionKHR |
|
| -> io () |
vkGetDeviceAccelerationStructureCompatibilityKHR - Check if a serialized acceleration structure is compatible with the current device
Description
This possible return values for
getDeviceAccelerationStructureCompatibilityKHR are:
SUCCESSis returned if an acceleration structure serialized withversionas the version information is compatible withdevice.ERROR_INCOMPATIBLE_VERSION_KHRis returned if an acceleration structure serialized withversionas the version information is not compatible withdevice.
Valid Usage
- The rayTracing or rayQuery feature must be enabled
Valid Usage (Implicit)
devicemust be a validDevicehandle
versionmust be a valid pointer to a validAccelerationStructureVersionKHRstructure
Return Codes
See Also
createAccelerationStructureKHR Source #
Arguments
| :: forall io. MonadIO io | |
| => Device |
|
| -> AccelerationStructureCreateInfoKHR |
|
| -> ("allocator" ::: Maybe AllocationCallbacks) |
|
| -> 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
- The rayTracing or rayQuery feature must be enabled
- If
AccelerationStructureCreateInfoKHR::deviceAddressis not zero, the rayTracingAccelerationStructureCaptureReplay feature must be enabled - If
devicewas created with multiple physical devices, then the bufferDeviceAddressMultiDevice feature must be enabled
Valid Usage (Implicit)
devicemust be a validDevicehandle
pCreateInfomust be a valid pointer to a validAccelerationStructureCreateInfoKHRstructure- If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure pAccelerationStructuremust be a valid pointer to aAccelerationStructureKHRhandle
Return Codes
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 |
|
| -> ("infos" ::: Vector (SomeStruct AccelerationStructureBuildGeometryInfoKHR)) |
|
| -> ("offsetInfos" ::: Vector AccelerationStructureBuildOffsetInfoKHR) |
|
| -> 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 AccelerationStructureBuildGeometryInfoKHR→scratchData 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
- Each element of
ppOffsetInfos[i] must be a valid pointer to an array ofpInfos[i].geometryCountAccelerationStructureBuildOffsetInfoKHRstructures
- Each
pInfos[i].srcAccelerationStructuremust not refer to the same acceleration structure as anypInfos[i].dstAccelerationStructurethat is provided to the same build command unless it is identical for an update - For each
pInfos[i],dstAccelerationStructuremust have been created with compatibleAccelerationStructureCreateInfoKHRwhereAccelerationStructureCreateInfoKHR::typeandAccelerationStructureCreateInfoKHR::flagsare identical toAccelerationStructureBuildGeometryInfoKHR::typeandAccelerationStructureBuildGeometryInfoKHR::flagsrespectively,AccelerationStructureBuildGeometryInfoKHR::geometryCountfordstAccelerationStructureare greater than or equal to the build size, and each geometry inAccelerationStructureBuildGeometryInfoKHR::ppGeometriesfordstAccelerationStructurehas greater than or equal to the number of vertices, indices, and AABBs,AccelerationStructureGeometryTrianglesDataKHR::transformDatais both 0 or both non-zero, and all other parameters are the same - For each
pInfos[i], ifupdateisTRUE, then objects that were previously active for that acceleration structure must not be made inactive as per ??? - For each
pInfos[i], ifupdateisTRUE, then objects that were previously inactive for that acceleration structure must not be made active as per ??? - Any acceleration structure instance in any top level build in this command must not reference any bottom level acceleration structure built by this command
- There must not be any
memory aliasing
between the scratch memories that are provided in all the
pInfos[i].scratchDatamemories for the acceleration structure builds - There must not be any memory aliasing between memory bound to any top level, bottom level, or instance acceleration structure accessed by this command
- If
updateisFALSE, all addresses betweenpInfos[i].scratchDataandpInfos[i].scratchData+ N - 1 must be in the buffer device address range of the same buffer,
where N is given by the
sizemember of theMemoryRequirementsstructure returned from a call togetAccelerationStructureMemoryRequirementsKHRwithAccelerationStructureMemoryRequirementsInfoKHR::accelerationStructureset topInfos[i].dstAccelerationStructureandAccelerationStructureMemoryRequirementsInfoKHR::typeset toACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR - If
updateisTRUE, all addresses betweenpInfos[i].scratchDataandpInfos[i].scratchData+ N - 1 must be in the buffer device address range of the same buffer,
where N is given by the
sizemember of theMemoryRequirementsstructure returned from a call togetAccelerationStructureMemoryRequirementsKHRwithAccelerationStructureMemoryRequirementsInfoKHR::accelerationStructureset topInfos[i].dstAccelerationStructureandAccelerationStructureMemoryRequirementsInfoKHR::typeset toACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR - The buffer from which the buffer device address
pInfos[i].scratchDatais queried must have been created withBUFFER_USAGE_RAY_TRACING_BIT_KHRusage flag - All
DeviceOrHostAddressKHRorDeviceOrHostAddressConstKHRreferenced 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 - All
AccelerationStructureKHRobjects referenced by this command must be bound to device memory - The
DeferredOperationInfoKHRstructure must not be included in thepNextchain of any of the providedAccelerationStructureBuildGeometryInfoKHRstructures
Valid Usage (Implicit)
commandBuffermust be a validCommandBufferhandle
pInfosmust be a valid pointer to an array ofinfoCountvalidAccelerationStructureBuildGeometryInfoKHRstructuresppOffsetInfosmust be a valid pointer to an array ofinfoCountAccelerationStructureBuildOffsetInfoKHRstructurescommandBuffermust be in the recording state- The
CommandPoolthatcommandBufferwas allocated from must support compute operations - This command must only be called outside of a render pass instance
infoCountmust be greater than0
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas 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 |
|
| -> AccelerationStructureBuildGeometryInfoKHR a |
|
| -> ("indirectBuffer" ::: Buffer) |
|
| -> ("indirectOffset" ::: DeviceSize) |
|
| -> ("indirectStride" ::: Word32) | |
| -> io () |
vkCmdBuildAccelerationStructureIndirectKHR - Build an acceleration structure with some parameters provided on the device
Valid Usage
- All
DeviceOrHostAddressKHRorDeviceOrHostAddressConstKHRreferenced 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
- All
AccelerationStructureKHRobjects referenced by this command must be bound to device memory - The ::rayTracingIndirectAccelerationStructureBuild feature must be enabled
- The
DeferredOperationInfoKHRstructure must not be included in thepNextchain of any of the providedAccelerationStructureBuildGeometryInfoKHRstructures
Valid Usage (Implicit)
commandBuffermust be a validCommandBufferhandle
pInfomust be a valid pointer to a validAccelerationStructureBuildGeometryInfoKHRstructureindirectBuffermust be a validBufferhandlecommandBuffermust be in the recording state- The
CommandPoolthatcommandBufferwas allocated from must support compute operations - This command must only be called outside of a render pass instance
- Both of
commandBuffer, andindirectBuffermust have been created, allocated, or retrieved from the sameDevice
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas 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
deviceis theDevicefor which the acceleration structures are being built.
infoCountis the number of acceleration structures to build. It specifies the number of thepInfosstructures andppOffsetInfospointers that must be provided.pInfosis a pointer to an array ofinfoCountAccelerationStructureBuildGeometryInfoKHRstructures defining the geometry used to build each acceleration structure.ppOffsetInfosis an array ofinfoCountpointers to arrays ofAccelerationStructureBuildOffsetInfoKHRstructures. EachppOffsetInfos[i] is an array ofpInfos[i].geometryCountAccelerationStructureBuildOffsetInfoKHRstructures defining dynamic offsets to the addresses where geometry data is stored, as defined bypInfos[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
- Each element of
ppOffsetInfos[i] must be a valid pointer to an array ofpInfos[i].geometryCountAccelerationStructureBuildOffsetInfoKHRstructures
- Each
pInfos[i].srcAccelerationStructuremust not refer to the same acceleration structure as anypInfos[i].dstAccelerationStructurethat is provided to the same build command unless it is identical for an update - For each
pInfos[i],dstAccelerationStructuremust have been created with compatibleAccelerationStructureCreateInfoKHRwhereAccelerationStructureCreateInfoKHR::typeandAccelerationStructureCreateInfoKHR::flagsare identical toAccelerationStructureBuildGeometryInfoKHR::typeandAccelerationStructureBuildGeometryInfoKHR::flagsrespectively,AccelerationStructureBuildGeometryInfoKHR::geometryCountfordstAccelerationStructureare greater than or equal to the build size, and each geometry inAccelerationStructureBuildGeometryInfoKHR::ppGeometriesfordstAccelerationStructurehas greater than or equal to the number of vertices, indices, and AABBs,AccelerationStructureGeometryTrianglesDataKHR::transformDatais both 0 or both non-zero, and all other parameters are the same - For each
pInfos[i], ifupdateisTRUE, then objects that were previously active for that acceleration structure must not be made inactive as per ??? - For each
pInfos[i], ifupdateisTRUE, then objects that were previously inactive for that acceleration structure must not be made active as per ??? - Any acceleration structure instance in any top level build in this command must not reference any bottom level acceleration structure built by this command
- There must not be any
memory aliasing
between the scratch memories that are provided in all the
pInfos[i].scratchDatamemories for the acceleration structure builds - There must not be any memory aliasing between memory bound to any top level, bottom level, or instance acceleration structure accessed by this command
- All
DeviceOrHostAddressKHRorDeviceOrHostAddressConstKHRreferenced by this command must contain valid host addresses - All
AccelerationStructureKHRobjects referenced by this command must be bound to host-visible memory - The ::rayTracingHostAccelerationStructureCommands feature must be enabled
Valid Usage (Implicit)
devicemust be a validDevicehandle
pInfosmust be a valid pointer to an array ofinfoCountvalidAccelerationStructureBuildGeometryInfoKHRstructuresppOffsetInfosmust be a valid pointer to an array ofinfoCountAccelerationStructureBuildOffsetInfoKHRstructuresinfoCountmust be greater than0
Return Codes
See Also
AccelerationStructureBuildGeometryInfoKHR,
AccelerationStructureBuildOffsetInfoKHR,
Device
getAccelerationStructureDeviceAddressKHR Source #
Arguments
| :: forall io. MonadIO io | |
| => Device |
|
| -> AccelerationStructureDeviceAddressInfoKHR |
|
| -> 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
- If
devicewas created with multiple physical devices, then the bufferDeviceAddressMultiDevice feature must be enabled
Valid Usage (Implicit)
devicemust be a validDevicehandle
pInfomust be a valid pointer to a validAccelerationStructureDeviceAddressInfoKHRstructure
See Also
data RayTracingShaderGroupCreateInfoKHR Source #
VkRayTracingShaderGroupCreateInfoKHR - Structure specifying shaders in a shader group
Valid Usage
- If
typeisRAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHRthengeneralShadermust be a valid index intoRayTracingPipelineCreateInfoKHR::pStagesreferring to a shader ofSHADER_STAGE_RAYGEN_BIT_KHR,SHADER_STAGE_MISS_BIT_KHR, orSHADER_STAGE_CALLABLE_BIT_KHR
- If
typeisRAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHRthenclosestHitShader,anyHitShader, andintersectionShadermust beSHADER_UNUSED_KHR - If
typeisRAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHRthenintersectionShadermust be a valid index intoRayTracingPipelineCreateInfoKHR::pStagesreferring to a shader ofSHADER_STAGE_INTERSECTION_BIT_KHR - If
typeisRAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHRthenintersectionShadermust beSHADER_UNUSED_KHR closestHitShadermust be eitherSHADER_UNUSED_KHRor a valid index intoRayTracingPipelineCreateInfoKHR::pStagesreferring to a shader ofSHADER_STAGE_CLOSEST_HIT_BIT_KHRanyHitShadermust be eitherSHADER_UNUSED_KHRor a valid index intoRayTracingPipelineCreateInfoKHR::pStagesreferring to a shader ofSHADER_STAGE_ANY_HIT_BIT_KHR- If
PhysicalDeviceRayTracingFeaturesKHR::rayTracingShaderGroupHandleCaptureReplayMixedisFALSEthenpShaderGroupCaptureReplayHandlemust not be provided if it has not been provided on a previous call to ray tracing pipeline creation - If
PhysicalDeviceRayTracingFeaturesKHR::rayTracingShaderGroupHandleCaptureReplayMixedisFALSEthen the caller must guarantee that no ray tracing pipeline creation commands withpShaderGroupCaptureReplayHandleprovided execute simultaneously with ray tracing pipeline creation commands withoutpShaderGroupCaptureReplayHandleprovided
Valid Usage (Implicit)
sTypemust beSTRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR
pNextmust beNULLtypemust be a validRayTracingShaderGroupTypeKHRvalue
See Also
RayTracingPipelineCreateInfoKHR, RayTracingShaderGroupTypeKHR,
StructureType
Constructors
| RayTracingShaderGroupCreateInfoKHR | |
Fields
| |
Instances
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
- If
flagscontains thePIPELINE_CREATE_DERIVATIVE_BITflag, andbasePipelineIndexis-1,basePipelineHandlemust be a valid handle to a ray tracingPipeline
- If
flagscontains thePIPELINE_CREATE_DERIVATIVE_BITflag, andbasePipelineHandleisNULL_HANDLE,basePipelineIndexmust be a valid index into the calling command’spCreateInfosparameter - If
flagscontains thePIPELINE_CREATE_DERIVATIVE_BITflag, andbasePipelineIndexis not-1,basePipelineHandlemust beNULL_HANDLE - If
flagscontains thePIPELINE_CREATE_DERIVATIVE_BITflag, andbasePipelineHandleis notNULL_HANDLE,basePipelineIndexmust be-1 - The
stagemember of at least one element ofpStagesmust beSHADER_STAGE_RAYGEN_BIT_KHR - The shader code for the entry points identified by
pStages, and the rest of the state identified by this structure must adhere to the pipeline linking rules described in the Shader Interfaces chapter layoutmust be consistent with all shaders specified inpStages- The number of resources in
layoutaccessible to each shader stage that is used by the pipeline must be less than or equal toPhysicalDeviceLimits::maxPerStageResources flagsmust not includePIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV- If the
pipelineCreationCacheControl
feature is not enabled,
flagsmust not includePIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXTorPIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT maxRecursionDepthmust be less than or equal toPhysicalDeviceRayTracingPropertiesKHR::maxRecursionDepth- If
flagsincludesPIPELINE_CREATE_LIBRARY_BIT_KHR,pLibraryInterfacemust not beNULL - If the
libraryCountmember oflibrariesis greater than0,pLibraryInterfacemust not beNULL - Each element of the
pLibrariesmember oflibrariesmust have been created with the value ofmaxRecursionDepthequal to that in this pipeline - Each element of the
pLibrariesmember oflibrariesmust have been created with alayoutthat is compatible with thelayoutin this pipeline - Each element of the
pLibrariesmember oflibrariesmust have been created with values of themaxPayloadSize,maxAttributeSize, andmaxCallableSizemembers ofpLibraryInterfaceequal to those in this pipeline - If
flagsincludesPIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR, for any element ofpGroupswith atypeofRAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHRorRAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR, theanyHitShaderof that element must not beSHADER_UNUSED_KHR - If
flagsincludesPIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR, for any element ofpGroupswith atypeofRAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHRorRAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR, theclosestHitShaderof that element must not beSHADER_UNUSED_KHR - If the
rayTracingPrimitiveCulling
feature is not enabled,
flagsmust not includePIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR - If the
rayTracingPrimitiveCulling
feature is not enabled,
flagsmust not includePIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR - If
libraries.libraryCountis zero, thenstageCountmust not be zero - If
libraries.libraryCountis zero, thengroupCountmust not be zero
Valid Usage (Implicit)
sTypemust beSTRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR
- Each
pNextmember of any structure (including this one) in thepNextchain must be eitherNULLor a pointer to a valid instance ofDeferredOperationInfoKHRorPipelineCreationFeedbackCreateInfoEXT - The
sTypevalue of each struct in thepNextchain must be unique flagsmust be a valid combination ofPipelineCreateFlagBitsvalues- If
stageCountis not0,pStagesmust be a valid pointer to an array ofstageCountvalidPipelineShaderStageCreateInfostructures - If
groupCountis not0,pGroupsmust be a valid pointer to an array ofgroupCountvalidRayTracingShaderGroupCreateInfoKHRstructures librariesmust be a validPipelineLibraryCreateInfoKHRstructure- If
pLibraryInterfaceis notNULL,pLibraryInterfacemust be a valid pointer to a validRayTracingPipelineInterfaceCreateInfoKHRstructure layoutmust be a validPipelineLayouthandle- Both of
basePipelineHandle, andlayoutthat are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the sameDevice
See Also
Pipeline,
PipelineCreateFlags,
PipelineLayout,
PipelineLibraryCreateInfoKHR,
PipelineShaderStageCreateInfo,
RayTracingPipelineInterfaceCreateInfoKHR,
RayTracingShaderGroupCreateInfoKHR,
StructureType,
createRayTracingPipelinesKHR
Constructors
| RayTracingPipelineCreateInfoKHR | |
Fields
| |
Instances
data BindAccelerationStructureMemoryInfoKHR Source #
VkBindAccelerationStructureMemoryInfoKHR - Structure specifying acceleration structure memory binding
Valid Usage
accelerationStructuremust not already be backed by a memory object
memoryOffsetmust be less than the size ofmemorymemorymust have been allocated using one of the memory types allowed in thememoryTypeBitsmember of theMemoryRequirementsstructure returned from a call togetAccelerationStructureMemoryRequirementsKHRwithaccelerationStructureandtypeofACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHRmemoryOffsetmust be an integer multiple of thealignmentmember of theMemoryRequirementsstructure returned from a call togetAccelerationStructureMemoryRequirementsKHRwithaccelerationStructureandtypeofACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR- The
sizemember of theMemoryRequirementsstructure returned from a call togetAccelerationStructureMemoryRequirementsKHRwithaccelerationStructureandtypeofACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHRmust be less than or equal to the size ofmemoryminusmemoryOffset
Valid Usage (Implicit)
pNextmust beNULLaccelerationStructuremust be a validAccelerationStructureKHRhandlememorymust be a validDeviceMemoryhandle- If
deviceIndexCountis not0,pDeviceIndicesmust be a valid pointer to an array ofdeviceIndexCountuint32_tvalues - Both of
accelerationStructure, andmemorymust have been created, allocated, or retrieved from the sameDevice
See Also
AccelerationStructureKHR,
DeviceMemory,
DeviceSize,
StructureType,
bindAccelerationStructureMemoryKHR,
bindAccelerationStructureMemoryNV
Constructors
| BindAccelerationStructureMemoryInfoKHR | |
Fields
| |
Instances
data WriteDescriptorSetAccelerationStructureKHR Source #
VkWriteDescriptorSetAccelerationStructureKHR - Structure specifying acceleration structure descriptor info
Valid Usage
accelerationStructureCountmust be equal todescriptorCountin the extended structure
- Each acceleration structure in
pAccelerationStructuresmust have been created withACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR
Valid Usage (Implicit)
pAccelerationStructuresmust be a valid pointer to an array ofaccelerationStructureCountvalidAccelerationStructureKHRhandlesaccelerationStructureCountmust be greater than0
See Also
Constructors
| WriteDescriptorSetAccelerationStructureKHR | |
Fields
| |
Instances
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
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
rayTracingindicates whether the implementation supports ray tracing functionality. See Ray Tracing.
rayTracingShaderGroupHandleCaptureReplayindicates whether the implementation supports saving and reusing shader group handles, e.g. for trace capture and replay.rayTracingShaderGroupHandleCaptureReplayMixedindicates whether the implementation supports reuse of shader group handles being arbitrarily mixed with creation of non-reused shader group handles. If this isFALSE, all reused shader group handles must be specified before any non-reused handles may be created.rayTracingAccelerationStructureCaptureReplayindicates whether the implementation supports saving and reusing acceleration structure device addresses, e.g. for trace capture and replay.rayTracingIndirectTraceRaysindicates whether the implementation supports indirect trace ray commands, e.g.cmdTraceRaysIndirectKHR.rayTracingIndirectAccelerationStructureBuildindicates whether the implementation supports indirect acceleration structure build commands, e.g.cmdBuildAccelerationStructureIndirectKHR.rayTracingHostAccelerationStructureCommandsindicates whether the implementation supports host side acceleration structure commands, e.g.buildAccelerationStructureKHR,copyAccelerationStructureKHR,copyAccelerationStructureToMemoryKHR,copyMemoryToAccelerationStructureKHR,writeAccelerationStructuresPropertiesKHR.rayQueryindicates whether the implementation supports ray query (OpRayQueryProceedKHR) functionality.rayTracingPrimitiveCullingindicates 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
rayTracingShaderGroupHandleCaptureReplayMixedisTRUE,rayTracingShaderGroupHandleCaptureReplaymust also beTRUE
Valid Usage (Implicit)
sTypemust beSTRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR
See Also
Constructors
Instances
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
Constructors
| PhysicalDeviceRayTracingPropertiesKHR | |
Fields
| |
Instances
data StridedBufferRegionKHR Source #
VkStridedBufferRegionKHR - Structure specifying a region of a VkBuffer with a stride
Valid Usage
- If
bufferis notNULL_HANDLE,sizeplusoffsetmust be less than or equal to the size ofbuffer
- If
bufferis notNULL_HANDLE,stridemust be less than the size ofbuffer
Valid Usage (Implicit)
- If
bufferis notNULL_HANDLE,buffermust be a validBufferhandle
See Also
Buffer,
DeviceSize, cmdTraceRaysIndirectKHR,
cmdTraceRaysKHR
Constructors
| StridedBufferRegionKHR | |
Fields
| |
Instances
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
data AccelerationStructureGeometryTrianglesDataKHR Source #
VkAccelerationStructureGeometryTrianglesDataKHR - Structure specifying a triangle geometry in a bottom-level acceleration structure
Valid Usage (Implicit)
pNextmust beNULLvertexFormatmust be a validFormatvaluevertexDatamust be a validDeviceOrHostAddressConstKHRunionindexTypemust be a validIndexTypevalue- If
indexDatais not0,indexDatamust be a validDeviceOrHostAddressConstKHRunion - If
transformDatais not0,transformDatamust be a validDeviceOrHostAddressConstKHRunion
See Also
AccelerationStructureGeometryDataKHR, DeviceOrHostAddressConstKHR,
DeviceSize,
Format,
IndexType,
StructureType
Constructors
| AccelerationStructureGeometryTrianglesDataKHR | |
Fields
| |
Instances
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
| |
Instances
data AccelerationStructureGeometryInstancesDataKHR Source #
VkAccelerationStructureGeometryInstancesDataKHR - Structure specifying a geometry consisting of instances of other acceleration structures
Valid Usage
datamust be aligned to16bytes
- If
arrayOfPointersis true, each pointer must be aligned to16bytes
Valid Usage (Implicit)
pNextmust beNULLdatamust be a validDeviceOrHostAddressConstKHRunion
See Also
AccelerationStructureGeometryDataKHR,
Bool32, DeviceOrHostAddressConstKHR,
StructureType
Constructors
| AccelerationStructureGeometryInstancesDataKHR | |
Fields
| |
Instances
data AccelerationStructureGeometryKHR Source #
VkAccelerationStructureGeometryKHR - Structure specifying geometries to be built into an acceleration structure
Valid Usage
- If
geometryTypeisGEOMETRY_TYPE_AABBS_KHR, theaabbsmember ofgeometrymust be a validAccelerationStructureGeometryAabbsDataKHRstructure
- If
geometryTypeisGEOMETRY_TYPE_TRIANGLES_KHR, thetrianglesmember ofgeometrymust be a validAccelerationStructureGeometryTrianglesDataKHRstructure - If
geometryTypeisGEOMETRY_TYPE_INSTANCES_KHR, theinstancesmember ofgeometrymust be a validAccelerationStructureGeometryInstancesDataKHRstructure
Valid Usage (Implicit)
sTypemust beSTRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR
pNextmust beNULLgeometryTypemust be a validGeometryTypeKHRvalue- If
geometryTypeisGEOMETRY_TYPE_TRIANGLES_KHR, thetrianglesmember ofgeometrymust be a validAccelerationStructureGeometryTrianglesDataKHRstructure - If
geometryTypeisGEOMETRY_TYPE_AABBS_KHR, theaabbsmember ofgeometrymust be a validAccelerationStructureGeometryAabbsDataKHRstructure - If
geometryTypeisGEOMETRY_TYPE_INSTANCES_KHR, theinstancesmember ofgeometrymust be a validAccelerationStructureGeometryInstancesDataKHRstructure flagsmust be a valid combination ofGeometryFlagBitsKHRvalues
See Also
AccelerationStructureBuildGeometryInfoKHR,
AccelerationStructureGeometryDataKHR, GeometryFlagsKHR,
GeometryTypeKHR, StructureType
Constructors
| AccelerationStructureGeometryKHR | |
Fields
| |
Instances
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
- If
updateisTRUE,srcAccelerationStructuremust not beNULL_HANDLE
- If
updateisTRUE,srcAccelerationStructuremust have been built before withBUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHRset inAccelerationStructureBuildGeometryInfoKHR::flags scratchDatamust have been created withBUFFER_USAGE_RAY_TRACING_BIT_KHRusage flag- If
updateisTRUE, thesrcAccelerationStructureanddstAccelerationStructureobjects must either be the same object or not have any memory aliasing
Valid Usage (Implicit)
pNextmust beNULLor a pointer to a valid instance ofDeferredOperationInfoKHR- The
sTypevalue of each struct in thepNextchain must be unique typemust be a validAccelerationStructureTypeKHRvalueflagsmust be a valid combination ofBuildAccelerationStructureFlagBitsKHRvalues- If
srcAccelerationStructureis notNULL_HANDLE,srcAccelerationStructuremust be a validAccelerationStructureKHRhandle dstAccelerationStructuremust be a validAccelerationStructureKHRhandlescratchDatamust be a validDeviceOrHostAddressKHRunion- Both of
dstAccelerationStructure, andsrcAccelerationStructurethat are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the sameDevice
See Also
AccelerationStructureGeometryKHR,
AccelerationStructureKHR,
AccelerationStructureTypeKHR, Bool32,
BuildAccelerationStructureFlagsKHR, DeviceOrHostAddressKHR,
StructureType,
buildAccelerationStructureKHR,
cmdBuildAccelerationStructureIndirectKHR,
cmdBuildAccelerationStructureKHR
Constructors
| AccelerationStructureBuildGeometryInfoKHR | |
Fields
| |
Instances
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:
For geometries of type
GEOMETRY_TYPE_TRIANGLES_KHR,primitiveCountis the number of triangles to be built, where each triangle is treated as 3 vertices.- If the geometry uses indices,
primitiveCount× 3 indices are consumed fromAccelerationStructureGeometryTrianglesDataKHR::indexData, starting at an offset ofprimitiveOffset. The value offirstVertexis added to the index values before fetching vertices. - If the geometry does not use indices,
primitiveCount× 3 vertices are consumed fromAccelerationStructureGeometryTrianglesDataKHR::vertexData, starting at an offset ofprimitiveOffset+AccelerationStructureGeometryTrianglesDataKHR::vertexStride×firstVertex. - A single
TransformMatrixKHRstructure is consumed fromAccelerationStructureGeometryTrianglesDataKHR::transformData, at an offset oftransformOffset. This transformation matrix is used by all triangles.
- If the geometry uses indices,
- For geometries of type
GEOMETRY_TYPE_AABBS_KHR,primitiveCountis the number of axis-aligned bounding boxes.primitiveCountAabbPositionsKHRstructures are consumed fromAccelerationStructureGeometryAabbsDataKHR::data, starting at an offset ofprimitiveOffset. - For geometries of type
GEOMETRY_TYPE_INSTANCES_KHR,primitiveCountis the number of acceleration structures.primitiveCountAccelerationStructureInstanceKHRstructures are consumed fromAccelerationStructureGeometryInstancesDataKHR::data, starting at an offset ofprimitiveOffset.
Valid Usage
- For geometries of type
GEOMETRY_TYPE_TRIANGLES_KHR, if the geometry uses indices, the offsetprimitiveOffsetfromAccelerationStructureGeometryTrianglesDataKHR::indexDatamust be a multiple of the element size ofAccelerationStructureGeometryTrianglesDataKHR::indexType
- For geometries of type
GEOMETRY_TYPE_TRIANGLES_KHR, if the geometry doesn’t use indices, the offsetprimitiveOffsetfromAccelerationStructureGeometryTrianglesDataKHR::vertexDatamust be a multiple of the component size ofAccelerationStructureGeometryTrianglesDataKHR::vertexFormat - For geometries of type
GEOMETRY_TYPE_TRIANGLES_KHR, the offsettransformOffsetfromAccelerationStructureGeometryTrianglesDataKHR::transformDatamust be a multiple of 16 - For geometries of type
GEOMETRY_TYPE_AABBS_KHR, the offsetprimitiveOffsetfromAccelerationStructureGeometryAabbsDataKHR::datamust be a multiple of 8 - For geometries of type
GEOMETRY_TYPE_INSTANCES_KHR, the offsetprimitiveOffsetfromAccelerationStructureGeometryInstancesDataKHR::datamust be a multiple of 16 // TODO - Almost certainly should be more here
See Also
buildAccelerationStructureKHR, cmdBuildAccelerationStructureKHR
Constructors
| AccelerationStructureBuildOffsetInfoKHR | |
Fields
| |
Instances
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:
- if
indexTypeisINDEX_TYPE_NONE_KHR, then this structure describes a set of triangles. - if
indexTypeis notINDEX_TYPE_NONE_KHR, then this structure describes a set of indexed triangles.
Valid Usage
- If
geometryTypeisGEOMETRY_TYPE_TRIANGLES_KHR,vertexFormatmust support theFORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHRinFormatProperties::bufferFeaturesas returned bygetPhysicalDeviceFormatProperties2
- If
geometryTypeisGEOMETRY_TYPE_TRIANGLES_KHR,indexTypemust beINDEX_TYPE_UINT16,INDEX_TYPE_UINT32, orINDEX_TYPE_NONE_KHR
Valid Usage (Implicit)
pNextmust beNULLgeometryTypemust be a validGeometryTypeKHRvalueindexTypemust be a validIndexTypevalue- If
vertexFormatis not0,vertexFormatmust be a validFormatvalue
See Also
AccelerationStructureCreateInfoKHR,
Bool32,
Format, GeometryTypeKHR,
IndexType,
StructureType
Constructors
| AccelerationStructureCreateGeometryTypeInfoKHR | |
Fields
| |
Instances
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
compactedSizeis not0thenmaxGeometryCountmust be0
- If
compactedSizeis0thenmaxGeometryCountmust not be0 - If
typeisACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHRthenmaxGeometryCountmust be less than or equal toPhysicalDeviceRayTracingPropertiesKHR::maxGeometryCount - If
typeisACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHRthen themaxPrimitiveCountmember of each element of thepGeometryInfosarray must be less than or equal toPhysicalDeviceRayTracingPropertiesKHR::maxInstanceCount - The total number of triangles in all geometries must be less than
or equal to
PhysicalDeviceRayTracingPropertiesKHR::maxPrimitiveCount - The total number of AABBs in all geometries must be less than or
equal to
PhysicalDeviceRayTracingPropertiesKHR::maxPrimitiveCount - If
typeisACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHRandcompactedSizeis0,maxGeometryCountmust be1 - If
typeisACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHRandcompactedSizeis0, thegeometryTypemember of elements ofpGeometryInfosmust beGEOMETRY_TYPE_INSTANCES_KHR - If
typeisACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHRandcompactedSizeis0, thegeometryTypemember of elements ofpGeometryInfosmust not beGEOMETRY_TYPE_INSTANCES_KHR - If
typeisACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHRthen thegeometryTypemember of each geometry inpGeometryInfosmust be the same - If
flagshas theBUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHRbit set, then it must not have theBUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHRbit set - If
deviceAddressis not0,PhysicalDeviceRayTracingFeaturesKHR::rayTracingAccelerationStructureCaptureReplaymust beTRUE
Valid Usage (Implicit)
sTypemust beSTRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR
pNextmust beNULLtypemust be a validAccelerationStructureTypeKHRvalueflagsmust be a valid combination ofBuildAccelerationStructureFlagBitsKHRvalues- If
maxGeometryCountis not0,pGeometryInfosmust be a valid pointer to an array ofmaxGeometryCountvalidAccelerationStructureCreateGeometryTypeInfoKHRstructures
See Also
AccelerationStructureCreateGeometryTypeInfoKHR,
AccelerationStructureTypeKHR, BuildAccelerationStructureFlagsKHR,
DeviceAddress,
DeviceSize,
StructureType,
createAccelerationStructureKHR
Constructors
| AccelerationStructureCreateInfoKHR | |
Fields
| |
Instances
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
| |
Instances
data TransformMatrixKHR Source #
VkTransformMatrixKHR - Structure specifying a 3x4 affine transformation matrix
See Also
Constructors
| TransformMatrixKHR | |
Instances
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
Constructors
| AccelerationStructureInstanceKHR | |
Fields
| |
Instances
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
data AccelerationStructureVersionKHR Source #
VkAccelerationStructureVersionKHR - Acceleration structure version information
Valid Usage (Implicit)
See Also
StructureType,
getDeviceAccelerationStructureCompatibilityKHR
Constructors
| AccelerationStructureVersionKHR | |
Fields
| |
Instances
data CopyAccelerationStructureInfoKHR (es :: [Type]) Source #
VkCopyAccelerationStructureInfoKHR - Parameters for copying an acceleration structure
Valid Usage
modemust beCOPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHRorCOPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR
srcmust have been built withBUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHRifmodeisCOPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR
Valid Usage (Implicit)
sTypemust beSTRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR
pNextmust beNULLor a pointer to a valid instance ofDeferredOperationInfoKHR- The
sTypevalue of each struct in thepNextchain must be unique srcmust be a validAccelerationStructureKHRhandledstmust be a validAccelerationStructureKHRhandlemodemust be a validCopyAccelerationStructureModeKHRvalue- Both of
dst, andsrcmust have been created, allocated, or retrieved from the sameDevice
See Also
AccelerationStructureKHR,
CopyAccelerationStructureModeKHR,
StructureType,
cmdCopyAccelerationStructureKHR, copyAccelerationStructureKHR
Constructors
| CopyAccelerationStructureInfoKHR | |
Fields
| |
Instances
data CopyAccelerationStructureToMemoryInfoKHR (es :: [Type]) Source #
VkCopyAccelerationStructureToMemoryInfoKHR - Parameters for serializing an acceleration structure
Valid Usage
- The memory pointed to by
dstmust be at least as large as the serialization size ofsrc, as reported byQUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR
modemust beCOPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR
Valid Usage (Implicit)
pNextmust beNULLor a pointer to a valid instance ofDeferredOperationInfoKHR- The
sTypevalue of each struct in thepNextchain must be unique srcmust be a validAccelerationStructureKHRhandledstmust be a validDeviceOrHostAddressKHRunionmodemust be a validCopyAccelerationStructureModeKHRvalue
See Also
AccelerationStructureKHR,
CopyAccelerationStructureModeKHR, DeviceOrHostAddressKHR,
StructureType,
cmdCopyAccelerationStructureToMemoryKHR,
copyAccelerationStructureToMemoryKHR
Constructors
| CopyAccelerationStructureToMemoryInfoKHR | |
Fields
| |
Instances
data CopyMemoryToAccelerationStructureInfoKHR (es :: [Type]) Source #
VkCopyMemoryToAccelerationStructureInfoKHR - Parameters for deserializing an acceleration structure
Valid Usage
modemust beCOPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR
- The data in
pInfo->srcmust have a format compatible with the destination physical device as returned bygetDeviceAccelerationStructureCompatibilityKHR
Valid Usage (Implicit)
pNextmust beNULLor a pointer to a valid instance ofDeferredOperationInfoKHR- The
sTypevalue of each struct in thepNextchain must be unique srcmust be a validDeviceOrHostAddressConstKHRuniondstmust be a validAccelerationStructureKHRhandlemodemust be a validCopyAccelerationStructureModeKHRvalue
See Also
AccelerationStructureKHR,
CopyAccelerationStructureModeKHR, DeviceOrHostAddressConstKHR,
StructureType,
cmdCopyMemoryToAccelerationStructureKHR,
copyMemoryToAccelerationStructureKHR
Constructors
| CopyMemoryToAccelerationStructureInfoKHR | |
Fields
| |
Instances
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
Constructors
| RayTracingPipelineInterfaceCreateInfoKHR | |
Fields
| |
Instances
data DeviceOrHostAddressKHR Source #
Constructors
| DeviceAddress DeviceAddress | |
| HostAddress (Ptr ()) |
Instances
| Show DeviceOrHostAddressKHR Source # | |
Defined in Vulkan.Extensions.VK_KHR_ray_tracing Methods showsPrec :: Int -> DeviceOrHostAddressKHR -> ShowS # show :: DeviceOrHostAddressKHR -> String # showList :: [DeviceOrHostAddressKHR] -> ShowS # | |
| ToCStruct DeviceOrHostAddressKHR Source # | |
Defined in Vulkan.Extensions.VK_KHR_ray_tracing Methods withCStruct :: DeviceOrHostAddressKHR -> (Ptr DeviceOrHostAddressKHR -> IO b) -> IO b Source # pokeCStruct :: Ptr DeviceOrHostAddressKHR -> DeviceOrHostAddressKHR -> IO b -> IO b Source # withZeroCStruct :: (Ptr DeviceOrHostAddressKHR -> IO b) -> IO b Source # pokeZeroCStruct :: Ptr DeviceOrHostAddressKHR -> IO b -> IO b Source # cStructSize :: Int Source # | |
| Zero DeviceOrHostAddressKHR Source # | |
Defined in Vulkan.Extensions.VK_KHR_ray_tracing Methods | |
data DeviceOrHostAddressConstKHR Source #
Constructors
| DeviceAddressConst DeviceAddress | |
| HostAddressConst (Ptr ()) |
Instances
| Show DeviceOrHostAddressConstKHR Source # | |
Defined in Vulkan.Extensions.VK_KHR_ray_tracing Methods showsPrec :: Int -> DeviceOrHostAddressConstKHR -> ShowS # show :: DeviceOrHostAddressConstKHR -> String # showList :: [DeviceOrHostAddressConstKHR] -> ShowS # | |
| ToCStruct DeviceOrHostAddressConstKHR Source # | |
Defined in Vulkan.Extensions.VK_KHR_ray_tracing Methods withCStruct :: DeviceOrHostAddressConstKHR -> (Ptr DeviceOrHostAddressConstKHR -> IO b) -> IO b Source # pokeCStruct :: Ptr DeviceOrHostAddressConstKHR -> DeviceOrHostAddressConstKHR -> IO b -> IO b Source # withZeroCStruct :: (Ptr DeviceOrHostAddressConstKHR -> IO b) -> IO b Source # pokeZeroCStruct :: Ptr DeviceOrHostAddressConstKHR -> IO b -> IO b Source # cStructSize :: Int Source # | |
| Zero DeviceOrHostAddressConstKHR Source # | |
Defined in Vulkan.Extensions.VK_KHR_ray_tracing Methods | |
data AccelerationStructureGeometryDataKHR Source #
Constructors
| Triangles AccelerationStructureGeometryTrianglesDataKHR | |
| Aabbs AccelerationStructureGeometryAabbsDataKHR | |
| Instances AccelerationStructureGeometryInstancesDataKHR |
Instances
| Show AccelerationStructureGeometryDataKHR Source # | |
Defined in Vulkan.Extensions.VK_KHR_ray_tracing Methods showsPrec :: Int -> AccelerationStructureGeometryDataKHR -> ShowS # show :: AccelerationStructureGeometryDataKHR -> String # showList :: [AccelerationStructureGeometryDataKHR] -> ShowS # | |
| ToCStruct AccelerationStructureGeometryDataKHR Source # | |
Defined in Vulkan.Extensions.VK_KHR_ray_tracing Methods withCStruct :: AccelerationStructureGeometryDataKHR -> (Ptr AccelerationStructureGeometryDataKHR -> IO b) -> IO b Source # pokeCStruct :: Ptr AccelerationStructureGeometryDataKHR -> AccelerationStructureGeometryDataKHR -> IO b -> IO b Source # withZeroCStruct :: (Ptr AccelerationStructureGeometryDataKHR -> IO b) -> IO b Source # pokeZeroCStruct :: Ptr AccelerationStructureGeometryDataKHR -> IO b -> IO b Source # cStructSize :: Int Source # | |
| Zero AccelerationStructureGeometryDataKHR Source # | |
Defined in Vulkan.Extensions.VK_KHR_ray_tracing Methods | |
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
Constructors
| GeometryInstanceFlagBitsKHR Flags |
Bundled Patterns
| pattern GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR :: GeometryInstanceFlagBitsKHR |
|
| pattern GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR :: GeometryInstanceFlagBitsKHR |
|
| pattern GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR :: GeometryInstanceFlagBitsKHR |
|
| pattern GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR :: GeometryInstanceFlagBitsKHR |
|
Instances
newtype GeometryFlagBitsKHR Source #
VkGeometryFlagBitsKHR - Bitmask specifying additional parameters for a geometry
See Also
Constructors
| GeometryFlagBitsKHR Flags |
Bundled Patterns
| pattern GEOMETRY_OPAQUE_BIT_KHR :: GeometryFlagBitsKHR |
|
| pattern GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR :: GeometryFlagBitsKHR |
|
Instances
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
Constructors
| BuildAccelerationStructureFlagBitsKHR Flags |
Bundled Patterns
Instances
newtype CopyAccelerationStructureModeKHR Source #
VkCopyAccelerationStructureModeKHR - Acceleration structure copy mode
See Also
CopyAccelerationStructureInfoKHR,
CopyAccelerationStructureToMemoryInfoKHR,
CopyMemoryToAccelerationStructureInfoKHR,
cmdCopyAccelerationStructureNV
Constructors
| CopyAccelerationStructureModeKHR Int32 |
Bundled Patterns
| pattern COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR :: CopyAccelerationStructureModeKHR |
|
| pattern COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR :: CopyAccelerationStructureModeKHR |
|
| pattern COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR :: CopyAccelerationStructureModeKHR |
|
| pattern COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR :: CopyAccelerationStructureModeKHR |
|
Instances
newtype AccelerationStructureTypeKHR Source #
VkAccelerationStructureTypeKHR - Type of acceleration structure
See Also
AccelerationStructureBuildGeometryInfoKHR,
AccelerationStructureCreateInfoKHR
Constructors
| AccelerationStructureTypeKHR Int32 |
Bundled Patterns
| pattern ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR :: AccelerationStructureTypeKHR |
|
| pattern ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR :: AccelerationStructureTypeKHR |
|
Instances
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 |
|
| pattern GEOMETRY_TYPE_AABBS_KHR :: GeometryTypeKHR |
|
| pattern GEOMETRY_TYPE_INSTANCES_KHR :: GeometryTypeKHR |
|
Instances
newtype AccelerationStructureMemoryRequirementsTypeKHR Source #
VkAccelerationStructureMemoryRequirementsTypeKHR - Acceleration structure memory requirement type
See Also
Constructors
| AccelerationStructureMemoryRequirementsTypeKHR Int32 |
Bundled Patterns
| pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR :: AccelerationStructureMemoryRequirementsTypeKHR |
|
| pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR :: AccelerationStructureMemoryRequirementsTypeKHR |
|
| pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR :: AccelerationStructureMemoryRequirementsTypeKHR |
|
Instances
newtype AccelerationStructureBuildTypeKHR Source #
VkAccelerationStructureBuildTypeKHR - Acceleration structure build type
See Also
Constructors
| AccelerationStructureBuildTypeKHR Int32 |
Bundled Patterns
| pattern ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR :: AccelerationStructureBuildTypeKHR |
|
| pattern ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR :: AccelerationStructureBuildTypeKHR |
|
| pattern ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR :: AccelerationStructureBuildTypeKHR |
|
Instances
newtype RayTracingShaderGroupTypeKHR Source #
VkRayTracingShaderGroupTypeKHR - Shader group types
Description
Note
For current group types, the hit group type could be inferred from the presence or absence of the intersection shader, but we provide the type explicitly for future hit groups that do not have that property.
See Also
RayTracingShaderGroupCreateInfoKHR,
RayTracingShaderGroupCreateInfoNV
Constructors
| RayTracingShaderGroupTypeKHR Int32 |
Bundled Patterns
| pattern RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR :: RayTracingShaderGroupTypeKHR |
|
| pattern RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR :: RayTracingShaderGroupTypeKHR |
|
| pattern RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR :: RayTracingShaderGroupTypeKHR |
|
Instances
type KHR_RAY_TRACING_SPEC_VERSION = 8 Source #
pattern KHR_RAY_TRACING_SPEC_VERSION :: forall a. Integral a => a Source #
type KHR_RAY_TRACING_EXTENSION_NAME = "VK_KHR_ray_tracing" Source #
pattern KHR_RAY_TRACING_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a Source #
newtype AccelerationStructureKHR Source #
VkAccelerationStructureKHR - Opaque handle to an acceleration structure object
See Also
AccelerationStructureBuildGeometryInfoKHR,
AccelerationStructureDeviceAddressInfoKHR,
AccelerationStructureMemoryRequirementsInfoKHR,
BindAccelerationStructureMemoryInfoKHR,
CopyAccelerationStructureInfoKHR,
CopyAccelerationStructureToMemoryInfoKHR,
CopyMemoryToAccelerationStructureInfoKHR,
WriteDescriptorSetAccelerationStructureKHR,
cmdBuildAccelerationStructureNV,
cmdCopyAccelerationStructureNV,
cmdWriteAccelerationStructuresPropertiesKHR,
cmdWriteAccelerationStructuresPropertiesNV,
createAccelerationStructureKHR,
destroyAccelerationStructureKHR,
destroyAccelerationStructureNV,
getAccelerationStructureHandleNV,
writeAccelerationStructuresPropertiesKHR
Constructors
| AccelerationStructureKHR Word64 |
Instances
data PipelineLibraryCreateInfoKHR Source #
VkPipelineLibraryCreateInfoKHR - Structure specifying pipeline libraries to use when creating a pipeline
Valid Usage
- Each element of
pLibrariesmust have been created withPIPELINE_CREATE_LIBRARY_BIT_KHR
Valid Usage (Implicit)
sTypemust beSTRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR
pNextmust beNULL- If
libraryCountis not0,pLibrariesmust be a valid pointer to an array oflibraryCountvalidPipelinehandles
See Also
Constructors
| PipelineLibraryCreateInfoKHR | |
Instances
newtype DebugReportObjectTypeEXT Source #
VkDebugReportObjectTypeEXT - Specify the type of an object handle
Description
'
DebugReportObjectTypeEXT and Vulkan Handle Relationship
Note
The primary expected use of
ERROR_VALIDATION_FAILED_EXT is for
validation layer testing. It is not expected that an application would
see this error code during normal use of the validation layers.
See Also
DebugMarkerObjectNameInfoEXT,
DebugMarkerObjectTagInfoEXT,
debugReportMessageEXT
Constructors
| DebugReportObjectTypeEXT Int32 |
Bundled Patterns
Instances
type SHADER_UNUSED_KHR = 4294967295 Source #
pattern SHADER_UNUSED_KHR :: Word32 Source #