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

Vulkan.Extensions.VK_NV_ray_tracing

Description

Name

VK_NV_ray_tracing - device extension

VK_NV_ray_tracing

Name String
VK_NV_ray_tracing
Extension Type
Device extension
Registered Extension Number
166
Revision
3
Extension and Version Dependencies
  • Requires Vulkan 1.0
  • Requires VK_KHR_get_physical_device_properties2
  • Requires VK_KHR_get_memory_requirements2
Contact

Other Extension Metadata

Last Modified Date
2018-11-20
Interactions and External Dependencies
Contributors
  • Eric Werness, NVIDIA
  • Ashwin Lele, NVIDIA
  • Robert Stepinski, NVIDIA
  • Nuno Subtil, NVIDIA
  • Christoph Kubisch, NVIDIA
  • Martin Stich, NVIDIA
  • Daniel Koch, NVIDIA
  • Jeff Bolz, NVIDIA
  • Joshua Barczak, Intel
  • Tobias Hector, AMD
  • Henrik Rydgard, NVIDIA
  • Pascal Gautron, NVIDIA

Description

Rasterization has been the dominant method to produce interactive graphics, but increasing performance of graphics hardware has made ray tracing a viable option for interactive rendering. Being able to integrate ray tracing with traditional rasterization makes it easier for applications to incrementally add ray traced effects to existing applications or to do hybrid approaches with rasterization for primary visibility and ray tracing for secondary queries.

To enable ray tracing, this extension adds a few different categories of new functionality:

  • Acceleration structure objects and build commands
  • A new pipeline type with new shader domains
  • An indirection table to link shader groups with acceleration structure items

This extension adds support for the following SPIR-V extension in Vulkan:

  • SPV_NV_ray_tracing

New Object Types

New Commands

New Structures

New Enums

New Bitmasks

New Enum Constants

New or Modified Built-In Variables

New SPIR-V Capabilities

Issues

1) Are there issues?

RESOLVED: Yes.

Sample Code

Example ray generation GLSL shader

#version 450 core
#extension GL_NV_ray_tracing : require
layout(set = 0, binding = 0, rgba8) uniform image2D image;
layout(set = 0, binding = 1) uniform accelerationStructureNV as;
layout(location = 0) rayPayloadNV float payload;

void main()
{
   vec4 col = vec4(0, 0, 0, 1);

   vec3 origin = vec3(float(gl_LaunchIDNV.x)/float(gl_LaunchSizeNV.x), float(gl_LaunchIDNV.y)/float(gl_LaunchSizeNV.y), 1.0);
   vec3 dir = vec3(0.0, 0.0, -1.0);

   traceNV(as, 0, 0xff, 0, 1, 0, origin, 0.0, dir, 1000.0, 0);

   col.y = payload;

   imageStore(image, ivec2(gl_LaunchIDNV.xy), col);
}

Version History

  • Revision 1, 2018-09-11 (Robert Stepinski, Nuno Subtil, Eric Werness)

    • Internal revisions
  • Revision 2, 2018-10-19 (Eric Werness)

    • rename to VK_NV_ray_tracing, add support for callables.
    • too many updates to list
  • Revision 3, 2018-11-20 (Daniel Koch)

    • update to use InstanceId instead of InstanceIndex as implemented.

See Also

SHADER_UNUSED_NV, AabbPositionsNV, AccelerationStructureCreateInfoNV, AccelerationStructureInfoNV, AccelerationStructureInstanceNV, AccelerationStructureMemoryRequirementsInfoNV, AccelerationStructureMemoryRequirementsTypeNV, AccelerationStructureNV, AccelerationStructureTypeNV, BindAccelerationStructureMemoryInfoNV, BuildAccelerationStructureFlagBitsNV, BuildAccelerationStructureFlagsNV, CopyAccelerationStructureModeNV, GeometryAABBNV, GeometryDataNV, GeometryFlagBitsNV, GeometryFlagsNV, GeometryInstanceFlagBitsNV, GeometryInstanceFlagsNV, GeometryNV, GeometryTrianglesNV, GeometryTypeNV, MemoryRequirements2KHR, PhysicalDeviceRayTracingPropertiesNV, RayTracingPipelineCreateInfoNV, RayTracingShaderGroupCreateInfoNV, RayTracingShaderGroupTypeNV, TransformMatrixNV, WriteDescriptorSetAccelerationStructureNV, bindAccelerationStructureMemoryNV, cmdBuildAccelerationStructureNV, cmdCopyAccelerationStructureNV, cmdTraceRaysNV, cmdWriteAccelerationStructuresPropertiesNV, compileDeferredNV, createAccelerationStructureNV, createRayTracingPipelinesNV, destroyAccelerationStructureNV, getAccelerationStructureHandleNV, getAccelerationStructureMemoryRequirementsNV, getRayTracingShaderGroupHandlesNV

Document Notes

For more information, see the Vulkan Specification

This page is a generated document. Fixes and changes should be made to the generator scripts, not directly.

Synopsis

Documentation

compileDeferredNV Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device containing the ray tracing pipeline.

device must be a valid Device handle

-> Pipeline

pipeline is the ray tracing pipeline object containing the shaders.

pipeline must be a ray tracing pipeline

pipeline must have been created with PIPELINE_CREATE_DEFER_COMPILE_BIT_NV

pipeline must be a valid Pipeline handle

pipeline must have been created, allocated, or retrieved from device

-> ("shader" ::: Word32)

shader is the index of the shader to compile.

shader must not have been called as a deferred compile before

-> io () 

vkCompileDeferredNV - Deferred compilation of shaders

Return Codes

Success
Failure

See Also

Device, Pipeline

createAccelerationStructureNV Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device that creates the buffer object.

-> AccelerationStructureCreateInfoNV

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

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

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

-> io AccelerationStructureNV 

vkCreateAccelerationStructureNV - 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” as specified by the information in AccelerationStructureInfoNV and compactedSize in pCreateInfo. Populating the data in the object after allocating and binding memory is done with cmdBuildAccelerationStructureNV and cmdCopyAccelerationStructureNV.

Acceleration structure creation uses the count and type information from the geometries, but does not use the data references in the structures.

Valid Usage (Implicit)

  • device must be a valid Device handle

Return Codes

Success
Failure

See Also

AccelerationStructureCreateInfoNV, AccelerationStructureNV, AllocationCallbacks, Device

withAccelerationStructureNV :: forall io r. MonadIO io => Device -> AccelerationStructureCreateInfoNV -> Maybe AllocationCallbacks -> (io AccelerationStructureNV -> (AccelerationStructureNV -> io ()) -> r) -> r Source #

A convenience wrapper to make a compatible pair of calls to createAccelerationStructureNV and destroyAccelerationStructureNV

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

destroyAccelerationStructureNV Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device that destroys the buffer.

-> AccelerationStructureNV

accelerationStructure is the acceleration structure to destroy.

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

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

-> io () 

vkDestroyAccelerationStructureNV - Destroy an acceleration structure object

Valid Usage

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

Valid Usage (Implicit)

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

Host Synchronization

  • Host access to accelerationStructure must be externally synchronized

See Also

AccelerationStructureNV, AllocationCallbacks, Device

getAccelerationStructureMemoryRequirementsNV Source #

Arguments

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

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

device must be a valid Device handle

-> AccelerationStructureMemoryRequirementsInfoNV

pInfo specifies the acceleration structure to get memory requirements for.

pInfo must be a valid pointer to a valid AccelerationStructureMemoryRequirementsInfoNV structure

-> io (MemoryRequirements2KHR a) 

vkGetAccelerationStructureMemoryRequirementsNV - Get acceleration structure memory requirements

Valid Usage (Implicit)

See Also

AccelerationStructureMemoryRequirementsInfoNV, Device, MemoryRequirements2KHR

bindAccelerationStructureMemoryNV Source #

Arguments

:: forall io. MonadIO io 
=> Device

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

device must be a valid Device handle

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

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

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

-> io () 

vkBindAccelerationStructureMemoryNV - Bind acceleration structure memory

Return Codes

Success
Failure

See Also

BindAccelerationStructureMemoryInfoNV, Device

cmdCopyAccelerationStructureNV Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

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

-> ("dst" ::: AccelerationStructureNV)

dst is the target acceleration structure for the copy.

-> ("src" ::: AccelerationStructureNV)

src is the source acceleration structure for the copy.

-> CopyAccelerationStructureModeKHR

mode is a CopyAccelerationStructureModeKHR value specifying additional operations to perform during the copy.

-> io () 

vkCmdCopyAccelerationStructureNV - Copy an acceleration structure

Description

Accesses to src and dst 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 as appropriate.

Valid Usage

Valid Usage (Implicit)

Host Synchronization

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

Command Properties

'

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

See Also

AccelerationStructureNV, CommandBuffer, CopyAccelerationStructureModeKHR

cmdWriteAccelerationStructuresPropertiesNV Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

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

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

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

-> QueryType

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

-> QueryPool

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

-> ("firstQuery" ::: Word32)

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

-> io () 

vkCmdWriteAccelerationStructuresPropertiesNV - Write acceleration structure result parameters to query results.

Description

Accesses to any of the acceleration structures listed in pAccelerationStructures 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.

Valid Usage

  • queryPool must have been created with a queryType matching queryType

Valid Usage (Implicit)

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

Host Synchronization

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

Command Properties

'

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

See Also

AccelerationStructureNV, CommandBuffer, QueryPool, QueryType

cmdBuildAccelerationStructureNV Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

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

-> AccelerationStructureInfoNV

pInfo contains the shared information for the acceleration structure’s structure.

-> ("instanceData" ::: Buffer)

instanceData is the buffer containing an array of AccelerationStructureInstanceKHR structures defining acceleration structures. This parameter must be NULL for bottom level acceleration structures.

-> ("instanceOffset" ::: DeviceSize)

instanceOffset is the offset in bytes (relative to the start of instanceData) at which the instance data is located.

-> ("update" ::: Bool)

update specifies whether to update the dst acceleration structure with the data in src.

-> ("dst" ::: AccelerationStructureNV)

dst is a pointer to the target acceleration structure for the build.

-> ("src" ::: AccelerationStructureNV)

src is a pointer to an existing acceleration structure that is to be used to update the dst acceleration structure.

-> ("scratch" ::: Buffer)

scratch is the Buffer that will be used as scratch memory for the build.

-> ("scratchOffset" ::: DeviceSize)

scratchOffset is the offset in bytes relative to the start of scratch that will be used as a scratch memory.

-> io () 

vkCmdBuildAccelerationStructureNV - Build an acceleration structure

Description

Accesses to dst, src, and scratch must be synchronized with the PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR pipeline stage and an access type of ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR or ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR.

Valid Usage

Valid Usage (Implicit)

  • pInfo must be a valid pointer to a valid AccelerationStructureInfoNV structure
  • If instanceData is not NULL_HANDLE, instanceData must be a valid Buffer handle
  • dst must be a valid AccelerationStructureNV handle
  • If src is not NULL_HANDLE, src must be a valid AccelerationStructureNV handle
  • scratch must be a valid Buffer handle
  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support compute operations
  • This command must only be called outside of a render pass instance
  • Each of commandBuffer, dst, instanceData, scratch, and src that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same Device

Host Synchronization

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

Command Properties

'

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

See Also

AccelerationStructureInfoNV, AccelerationStructureNV, Bool32, Buffer, CommandBuffer, DeviceSize

cmdTraceRaysNV Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

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

-> ("raygenShaderBindingTableBuffer" ::: Buffer)

raygenShaderBindingTableBuffer is the buffer object that holds the shader binding table data for the ray generation shader stage.

-> ("raygenShaderBindingOffset" ::: DeviceSize)

raygenShaderBindingOffset is the offset in bytes (relative to raygenShaderBindingTableBuffer) of the ray generation shader being used for the trace.

-> ("missShaderBindingTableBuffer" ::: Buffer)

missShaderBindingTableBuffer is the buffer object that holds the shader binding table data for the miss shader stage.

-> ("missShaderBindingOffset" ::: DeviceSize)

missShaderBindingOffset is the offset in bytes (relative to missShaderBindingTableBuffer) of the miss shader being used for the trace.

-> ("missShaderBindingStride" ::: DeviceSize)

missShaderBindingStride is the size in bytes of each shader binding table record in missShaderBindingTableBuffer.

-> ("hitShaderBindingTableBuffer" ::: Buffer)

hitShaderBindingTableBuffer is the buffer object that holds the shader binding table data for the hit shader stages.

-> ("hitShaderBindingOffset" ::: DeviceSize)

hitShaderBindingOffset is the offset in bytes (relative to hitShaderBindingTableBuffer) of the hit shader group being used for the trace.

-> ("hitShaderBindingStride" ::: DeviceSize)

hitShaderBindingStride is the size in bytes of each shader binding table record in hitShaderBindingTableBuffer.

-> ("callableShaderBindingTableBuffer" ::: Buffer)

callableShaderBindingTableBuffer is the buffer object that holds the shader binding table data for the callable shader stage.

-> ("callableShaderBindingOffset" ::: DeviceSize)

callableShaderBindingOffset is the offset in bytes (relative to callableShaderBindingTableBuffer) of the callable shader being used for the trace.

-> ("callableShaderBindingStride" ::: DeviceSize)

callableShaderBindingStride is the size in bytes of each shader binding table record in callableShaderBindingTableBuffer.

-> ("width" ::: Word32)

width is the width of the ray trace query dimensions.

-> ("height" ::: Word32)

height is height of the ray trace query dimensions.

-> ("depth" ::: Word32)

depth is depth of the ray trace query dimensions.

-> io () 

vkCmdTraceRaysNV - Initialize a ray tracing dispatch

Description

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

Valid Usage

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

Valid Usage (Implicit)

  • raygenShaderBindingTableBuffer must be a valid Buffer handle
  • If missShaderBindingTableBuffer is not NULL_HANDLE, missShaderBindingTableBuffer must be a valid Buffer handle
  • If hitShaderBindingTableBuffer is not NULL_HANDLE, hitShaderBindingTableBuffer must be a valid Buffer handle
  • If callableShaderBindingTableBuffer is not NULL_HANDLE, callableShaderBindingTableBuffer must be a valid Buffer handle
  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support compute operations
  • This command must only be called outside of a render pass instance
  • Each of callableShaderBindingTableBuffer, commandBuffer, hitShaderBindingTableBuffer, missShaderBindingTableBuffer, and raygenShaderBindingTableBuffer that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same Device

Host Synchronization

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

Command Properties

'

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

See Also

Buffer, CommandBuffer, DeviceSize

getAccelerationStructureHandleNV Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device that owns the acceleration structures.

device must be a valid Device handle

-> AccelerationStructureNV

accelerationStructure is the acceleration structure.

accelerationStructure must be bound completely and contiguously to a single DeviceMemory object via bindAccelerationStructureMemoryNV

accelerationStructure must be a valid AccelerationStructureNV handle

accelerationStructure must have been created, allocated, or retrieved from device

-> ("dataSize" ::: Word64)

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

dataSize must be large enough to contain the result of the query, as described above

dataSize must be greater than 0

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

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

pData must be a valid pointer to an array of dataSize bytes

-> io () 

vkGetAccelerationStructureHandleNV - Get opaque acceleration structure handle

Return Codes

Success
Failure

See Also

AccelerationStructureNV, Device

createRayTracingPipelinesNV Source #

Arguments

:: forall io. MonadIO io 
=> Device

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

-> PipelineCache

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

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

pCreateInfos is a pointer to an array of RayTracingPipelineCreateInfoNV structures.

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

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

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

vkCreateRayTracingPipelinesNV - Creates a new ray tracing pipeline object

Valid Usage

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

Valid Usage (Implicit)

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

Return Codes

Success
Failure

See Also

AllocationCallbacks, Device, Pipeline, PipelineCache, RayTracingPipelineCreateInfoNV

withRayTracingPipelinesNV :: forall io r. MonadIO io => Device -> PipelineCache -> Vector (SomeStruct RayTracingPipelineCreateInfoNV) -> Maybe AllocationCallbacks -> (io (Result, Vector Pipeline) -> ((Result, Vector Pipeline) -> io ()) -> r) -> r Source #

A convenience wrapper to make a compatible pair of calls to createRayTracingPipelinesNV and destroyPipeline

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

getRayTracingShaderGroupHandlesNV :: MonadIO io => Device -> Pipeline -> ("firstGroup" ::: Word32) -> ("groupCount" ::: Word32) -> ("dataSize" ::: Word64) -> ("data" ::: Ptr ()) -> io () Source #

data RayTracingShaderGroupCreateInfoNV Source #

VkRayTracingShaderGroupCreateInfoNV - Structure specifying shaders in a shader group

Valid Usage

Valid Usage (Implicit)

See Also

RayTracingPipelineCreateInfoNV, RayTracingShaderGroupTypeKHR, StructureType

Constructors

RayTracingShaderGroupCreateInfoNV 

Fields

Instances

Instances details
Eq RayTracingShaderGroupCreateInfoNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing

Show RayTracingShaderGroupCreateInfoNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing

Storable RayTracingShaderGroupCreateInfoNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing

FromCStruct RayTracingShaderGroupCreateInfoNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing

ToCStruct RayTracingShaderGroupCreateInfoNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing

Zero RayTracingShaderGroupCreateInfoNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing

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

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

Description

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

Valid Usage

Valid Usage (Implicit)

  • pNext must be NULL or a pointer to a valid instance of PipelineCreationFeedbackCreateInfoEXT
  • The sType value of each struct in the pNext chain must be unique
  • flags must be a valid combination of PipelineCreateFlagBits values
  • pStages must be a valid pointer to an array of stageCount valid PipelineShaderStageCreateInfo structures
  • pGroups must be a valid pointer to an array of groupCount valid RayTracingShaderGroupCreateInfoNV structures
  • layout must be a valid PipelineLayout handle
  • stageCount must be greater than 0
  • groupCount must be greater than 0
  • Both of basePipelineHandle, and layout that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same Device

See Also

Pipeline, PipelineCreateFlags, PipelineLayout, PipelineShaderStageCreateInfo, RayTracingShaderGroupCreateInfoNV, StructureType, createRayTracingPipelinesNV

Constructors

RayTracingPipelineCreateInfoNV 

Fields

Instances

Instances details
Extensible RayTracingPipelineCreateInfoNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing

Methods

extensibleTypeName :: String Source #

getNext :: forall (es :: [Type]). RayTracingPipelineCreateInfoNV es -> Chain es Source #

setNext :: forall (ds :: [Type]) (es :: [Type]). RayTracingPipelineCreateInfoNV ds -> Chain es -> RayTracingPipelineCreateInfoNV es Source #

extends :: forall e b proxy. Typeable e => proxy e -> (Extends RayTracingPipelineCreateInfoNV e => b) -> Maybe b Source #

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

Defined in Vulkan.Extensions.VK_NV_ray_tracing

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

Defined in Vulkan.Extensions.VK_NV_ray_tracing

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

Defined in Vulkan.Extensions.VK_NV_ray_tracing

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

Defined in Vulkan.Extensions.VK_NV_ray_tracing

data GeometryTrianglesNV Source #

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

Description

If indexType is INDEX_TYPE_NONE_NV, then this structure describes a set of triangles determined by vertexCount. Otherwise, this structure describes a set of indexed triangles determined by indexCount.

Valid Usage

  • vertexOffset must be less than the size of vertexData

Valid Usage (Implicit)

  • pNext must be NULL
  • If vertexData is not NULL_HANDLE, vertexData must be a valid Buffer handle
  • vertexFormat must be a valid Format value
  • If indexData is not NULL_HANDLE, indexData must be a valid Buffer handle
  • indexType must be a valid IndexType value
  • If transformData is not NULL_HANDLE, transformData must be a valid Buffer handle
  • Each of indexData, transformData, and vertexData that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same Device

See Also

Buffer, DeviceSize, Format, GeometryDataNV, IndexType, StructureType

Constructors

GeometryTrianglesNV 

Fields

Instances

Instances details
Eq GeometryTrianglesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing

Show GeometryTrianglesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing

Storable GeometryTrianglesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing

FromCStruct GeometryTrianglesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing

ToCStruct GeometryTrianglesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing

Zero GeometryTrianglesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing

data GeometryAABBNV Source #

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

Description

The AABB data in memory is six 32-bit floats consisting of the minimum x, y, and z values followed by the maximum x, y, and z values.

Valid Usage

  • offset must be less than the size of aabbData
  • offset must be a multiple of 8
  • stride must be a multiple of 8

Valid Usage (Implicit)

  • pNext must be NULL
  • If aabbData is not NULL_HANDLE, aabbData must be a valid Buffer handle

See Also

Buffer, DeviceSize, GeometryDataNV, StructureType

Constructors

GeometryAABBNV 

Fields

  • aabbData :: Buffer

    aabbData is the buffer containing axis-aligned bounding box data.

  • numAABBs :: Word32

    numAABBs is the number of AABBs in this geometry.

  • stride :: Word32

    stride is the stride in bytes between AABBs in aabbData.

  • offset :: DeviceSize

    offset is the offset in bytes of the first AABB in aabbData.

Instances

Instances details
Eq GeometryAABBNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing

Show GeometryAABBNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing

Storable GeometryAABBNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing

FromCStruct GeometryAABBNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing

ToCStruct GeometryAABBNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing

Zero GeometryAABBNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing

data GeometryDataNV Source #

VkGeometryDataNV - Structure specifying geometry in a bottom-level acceleration structure

Valid Usage (Implicit)

See Also

GeometryAABBNV, GeometryNV, GeometryTrianglesNV

Constructors

GeometryDataNV 

Fields

Instances

Instances details
Show GeometryDataNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing

Storable GeometryDataNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing

FromCStruct GeometryDataNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing

ToCStruct GeometryDataNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing

Zero GeometryDataNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing

data GeometryNV Source #

VkGeometryNV - Structure specifying a geometry in a bottom-level acceleration structure

Valid Usage (Implicit)

See Also

AccelerationStructureInfoNV, GeometryDataNV, GeometryFlagsKHR, GeometryTypeKHR, StructureType

Constructors

GeometryNV 

Fields

data AccelerationStructureInfoNV Source #

VkAccelerationStructureInfoNV - Structure specifying the parameters of acceleration structure object

Description

AccelerationStructureInfoNV contains information that is used both for acceleration structure creation with createAccelerationStructureNV and in combination with the actual geometric data to build the acceleration structure with cmdBuildAccelerationStructureNV.

Valid Usage

Valid Usage (Implicit)

See Also

AccelerationStructureCreateInfoNV, AccelerationStructureTypeNV, BuildAccelerationStructureFlagsNV, GeometryNV, StructureType, cmdBuildAccelerationStructureNV

Constructors

AccelerationStructureInfoNV 

Fields

data AccelerationStructureCreateInfoNV Source #

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

Valid Usage

  • If compactedSize is not 0 then both info.geometryCount and info.instanceCount must be 0

Valid Usage (Implicit)

See Also

AccelerationStructureInfoNV, DeviceSize, StructureType, createAccelerationStructureNV

Constructors

AccelerationStructureCreateInfoNV 

Fields

data BindAccelerationStructureMemoryInfoNV Source #

VkBindAccelerationStructureMemoryInfoNV - Structure specifying acceleration structure memory binding

Valid Usage

  • accelerationStructure must not already be backed by a memory object

Valid Usage (Implicit)

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

See Also

AccelerationStructureNV, DeviceMemory, DeviceSize, StructureType, bindAccelerationStructureMemoryNV

Constructors

BindAccelerationStructureMemoryInfoNV 

Fields

data WriteDescriptorSetAccelerationStructureNV Source #

VkWriteDescriptorSetAccelerationStructureNV - Structure specifying acceleration structure descriptor info

Valid Usage

  • accelerationStructureCount must be equal to descriptorCount in the extended structure

Valid Usage (Implicit)

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

See Also

AccelerationStructureNV, StructureType

Constructors

WriteDescriptorSetAccelerationStructureNV 

Fields

data AccelerationStructureMemoryRequirementsInfoNV Source #

VkAccelerationStructureMemoryRequirementsInfoNV - Structure specifying acceleration to query for memory requirements

Valid Usage (Implicit)

See Also

AccelerationStructureMemoryRequirementsTypeNV, AccelerationStructureNV, StructureType, getAccelerationStructureMemoryRequirementsNV

Constructors

AccelerationStructureMemoryRequirementsInfoNV 

Fields

Instances

Instances details
Eq AccelerationStructureMemoryRequirementsInfoNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing

Show AccelerationStructureMemoryRequirementsInfoNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing

Storable AccelerationStructureMemoryRequirementsInfoNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing

FromCStruct AccelerationStructureMemoryRequirementsInfoNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing

ToCStruct AccelerationStructureMemoryRequirementsInfoNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing

Zero AccelerationStructureMemoryRequirementsInfoNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing

data PhysicalDeviceRayTracingPropertiesNV Source #

VkPhysicalDeviceRayTracingPropertiesNV - Properties of the physical device for ray tracing

Description

If the PhysicalDeviceRayTracingPropertiesNV 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 PhysicalDeviceAccelerationStructurePropertiesKHR and PhysicalDeviceRayTracingPipelinePropertiesKHR.

Valid Usage (Implicit)

See Also

StructureType

Constructors

PhysicalDeviceRayTracingPropertiesNV 

Fields

Instances

Instances details
Eq PhysicalDeviceRayTracingPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing

Show PhysicalDeviceRayTracingPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing

Storable PhysicalDeviceRayTracingPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing

FromCStruct PhysicalDeviceRayTracingPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing

ToCStruct PhysicalDeviceRayTracingPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing

Zero PhysicalDeviceRayTracingPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing

newtype AccelerationStructureMemoryRequirementsTypeNV Source #

VkAccelerationStructureMemoryRequirementsTypeNV - Acceleration structure memory requirement type

See Also

AccelerationStructureMemoryRequirementsInfoNV

Instances

Instances details
Eq AccelerationStructureMemoryRequirementsTypeNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing

Ord AccelerationStructureMemoryRequirementsTypeNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing

Read AccelerationStructureMemoryRequirementsTypeNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing

Show AccelerationStructureMemoryRequirementsTypeNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing

Storable AccelerationStructureMemoryRequirementsTypeNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing

Zero AccelerationStructureMemoryRequirementsTypeNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing

pattern NV_RAY_TRACING_SPEC_VERSION :: forall a. Integral a => a Source #

type NV_RAY_TRACING_EXTENSION_NAME = "VK_NV_ray_tracing" Source #

pattern NV_RAY_TRACING_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a Source #

newtype AccelerationStructureNV Source #

Instances

Instances details
Eq AccelerationStructureNV Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Ord AccelerationStructureNV Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Show AccelerationStructureNV Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Storable AccelerationStructureNV Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Zero AccelerationStructureNV Source # 
Instance details

Defined in Vulkan.Extensions.Handles

HasObjectType AccelerationStructureNV Source # 
Instance details

Defined in Vulkan.Extensions.Handles

IsHandle AccelerationStructureNV Source # 
Instance details

Defined in Vulkan.Extensions.Handles

data AabbPositionsKHR Source #

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

Valid Usage

See Also

No cross-references are available

Constructors

AabbPositionsKHR 

Fields

  • minX :: Float

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

    minX must be less than or equal to maxX

  • minY :: Float

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

    minY must be less than or equal to maxY

  • minZ :: Float

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

    minZ must be less than or equal to maxZ

  • maxX :: Float

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

  • maxY :: Float

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

  • maxZ :: Float

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

Instances

Instances details
Eq AabbPositionsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Show AabbPositionsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Storable AabbPositionsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

FromCStruct AabbPositionsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

ToCStruct AabbPositionsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Zero AabbPositionsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

data TransformMatrixKHR Source #

VkTransformMatrixKHR - Structure specifying a 3x4 affine transformation matrix

Valid Usage

  • The first three columns of matrix must define an invertible 3x3 matrix

See Also

AccelerationStructureInstanceKHR

Instances

Instances details
Eq TransformMatrixKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Show TransformMatrixKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Storable TransformMatrixKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

FromCStruct TransformMatrixKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

ToCStruct TransformMatrixKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Zero TransformMatrixKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

data AccelerationStructureInstanceKHR Source #

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

Description

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

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

Valid Usage (Implicit)

See Also

GeometryInstanceFlagsKHR, TransformMatrixKHR

Constructors

AccelerationStructureInstanceKHR 

Fields

Instances

Instances details
Show AccelerationStructureInstanceKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Storable AccelerationStructureInstanceKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

FromCStruct AccelerationStructureInstanceKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

ToCStruct AccelerationStructureInstanceKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Zero AccelerationStructureInstanceKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

getRayTracingShaderGroupHandlesKHR Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device containing the ray tracing pipeline.

-> Pipeline

pipeline is the ray tracing pipeline object containing the shaders.

-> ("firstGroup" ::: Word32)

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

-> ("groupCount" ::: Word32)

groupCount is the number of shader handles to retrieve.

-> ("dataSize" ::: Word64)

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

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

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

-> io () 

vkGetRayTracingShaderGroupHandlesKHR - Query ray tracing pipeline shader group handles

Valid Usage

  • pipeline must be a ray tracing pipeline

Valid Usage (Implicit)

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

Return Codes

Success
Failure

See Also

Device, Pipeline

newtype DebugReportObjectTypeEXT Source #

VkDebugReportObjectTypeEXT - Specify the type of an object handle

Description

'

DebugReportObjectTypeEXT Vulkan Handle Type
DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT Unknown/Undefined Handle
DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT Instance
DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT PhysicalDevice
DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT Device
DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT Queue
DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT Semaphore
DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT CommandBuffer
DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT Fence
DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT DeviceMemory
DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT Buffer
DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT Image
DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT Event
DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT QueryPool
DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT BufferView
DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT ImageView
DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT ShaderModule
DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT PipelineCache
DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT PipelineLayout
DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT RenderPass
DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT Pipeline
DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT DescriptorSetLayout
DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT Sampler
DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT DescriptorPool
DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT DescriptorSet
DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT Framebuffer
DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT CommandPool
DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT SurfaceKHR
DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT SwapchainKHR
DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT DebugReportCallbackEXT
DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT DisplayKHR
DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT DisplayModeKHR
DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT DescriptorUpdateTemplate

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

Bundled Patterns

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_ACCELERATION_STRUCTURE_NV_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 

Instances

Instances details
Eq DebugReportObjectTypeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_debug_report

Ord DebugReportObjectTypeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_debug_report

Read DebugReportObjectTypeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_debug_report

Show DebugReportObjectTypeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_debug_report

Storable DebugReportObjectTypeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_debug_report

Zero DebugReportObjectTypeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_debug_report

newtype GeometryInstanceFlagBitsKHR Source #

VkGeometryInstanceFlagBitsKHR - Instance flag bits

Description

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

See Also

GeometryInstanceFlagsKHR

Bundled Patterns

pattern GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR :: GeometryInstanceFlagBitsKHR

GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR disables face culling for this instance.

pattern GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR :: GeometryInstanceFlagBitsKHR

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

pattern GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR :: GeometryInstanceFlagBitsKHR

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

pattern GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR :: GeometryInstanceFlagBitsKHR

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

Instances

Instances details
Eq GeometryInstanceFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Ord GeometryInstanceFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Read GeometryInstanceFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Show GeometryInstanceFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Storable GeometryInstanceFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Bits GeometryInstanceFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Methods

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

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

xor :: GeometryInstanceFlagBitsKHR -> GeometryInstanceFlagBitsKHR -> GeometryInstanceFlagBitsKHR #

complement :: GeometryInstanceFlagBitsKHR -> GeometryInstanceFlagBitsKHR #

shift :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

rotate :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

zeroBits :: GeometryInstanceFlagBitsKHR #

bit :: Int -> GeometryInstanceFlagBitsKHR #

setBit :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

clearBit :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

complementBit :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

testBit :: GeometryInstanceFlagBitsKHR -> Int -> Bool #

bitSizeMaybe :: GeometryInstanceFlagBitsKHR -> Maybe Int #

bitSize :: GeometryInstanceFlagBitsKHR -> Int #

isSigned :: GeometryInstanceFlagBitsKHR -> Bool #

shiftL :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

unsafeShiftL :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

shiftR :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

unsafeShiftR :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

rotateL :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

rotateR :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

popCount :: GeometryInstanceFlagBitsKHR -> Int #

FiniteBits GeometryInstanceFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Zero GeometryInstanceFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

newtype GeometryFlagBitsKHR Source #

VkGeometryFlagBitsKHR - Bitmask specifying additional parameters for a geometry

See Also

GeometryFlagsKHR

Bundled Patterns

pattern GEOMETRY_OPAQUE_BIT_KHR :: GeometryFlagBitsKHR

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

pattern GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR :: GeometryFlagBitsKHR

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

Instances

Instances details
Eq GeometryFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Ord GeometryFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Read GeometryFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Show GeometryFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Storable GeometryFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Bits GeometryFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

FiniteBits GeometryFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Zero GeometryFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

newtype BuildAccelerationStructureFlagBitsKHR Source #

VkBuildAccelerationStructureFlagBitsKHR - Bitmask specifying additional parameters for acceleration structure builds

Description

Note

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

See Also

BuildAccelerationStructureFlagsKHR

Bundled Patterns

pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR :: BuildAccelerationStructureFlagBitsKHR

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

pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR :: BuildAccelerationStructureFlagBitsKHR

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

pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR :: BuildAccelerationStructureFlagBitsKHR

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

pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR :: BuildAccelerationStructureFlagBitsKHR

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

pattern BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR :: BuildAccelerationStructureFlagBitsKHR

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

Instances

Instances details
Eq BuildAccelerationStructureFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Ord BuildAccelerationStructureFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Read BuildAccelerationStructureFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Show BuildAccelerationStructureFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Storable BuildAccelerationStructureFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Bits BuildAccelerationStructureFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Methods

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

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

xor :: BuildAccelerationStructureFlagBitsKHR -> BuildAccelerationStructureFlagBitsKHR -> BuildAccelerationStructureFlagBitsKHR #

complement :: BuildAccelerationStructureFlagBitsKHR -> BuildAccelerationStructureFlagBitsKHR #

shift :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

rotate :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

zeroBits :: BuildAccelerationStructureFlagBitsKHR #

bit :: Int -> BuildAccelerationStructureFlagBitsKHR #

setBit :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

clearBit :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

complementBit :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

testBit :: BuildAccelerationStructureFlagBitsKHR -> Int -> Bool #

bitSizeMaybe :: BuildAccelerationStructureFlagBitsKHR -> Maybe Int #

bitSize :: BuildAccelerationStructureFlagBitsKHR -> Int #

isSigned :: BuildAccelerationStructureFlagBitsKHR -> Bool #

shiftL :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

unsafeShiftL :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

shiftR :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

unsafeShiftR :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

rotateL :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

rotateR :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

popCount :: BuildAccelerationStructureFlagBitsKHR -> Int #

FiniteBits BuildAccelerationStructureFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Zero BuildAccelerationStructureFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

newtype CopyAccelerationStructureModeKHR Source #

Bundled Patterns

pattern COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR :: CopyAccelerationStructureModeKHR

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

pattern COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR :: CopyAccelerationStructureModeKHR

COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR creates a more compact version of an acceleration structure src into dst. The acceleration structure dst must have been created with a size at least as large as that returned by cmdWriteAccelerationStructuresPropertiesKHR or writeAccelerationStructuresPropertiesKHR after the build of the acceleration structure specified by src.

pattern COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR :: CopyAccelerationStructureModeKHR

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

pattern COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR :: CopyAccelerationStructureModeKHR

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

Instances

Instances details
Eq CopyAccelerationStructureModeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Ord CopyAccelerationStructureModeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Read CopyAccelerationStructureModeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Show CopyAccelerationStructureModeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Storable CopyAccelerationStructureModeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Zero CopyAccelerationStructureModeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

newtype AccelerationStructureTypeKHR Source #

VkAccelerationStructureTypeKHR - Type of acceleration structure

See Also

AccelerationStructureBuildGeometryInfoKHR, AccelerationStructureCreateInfoKHR

Bundled Patterns

pattern ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR :: AccelerationStructureTypeKHR

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

pattern ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR :: AccelerationStructureTypeKHR

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

pattern ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR :: AccelerationStructureTypeKHR

ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR is an acceleration structure whose type is determined at build time used for special circumstances.

Instances

Instances details
Eq AccelerationStructureTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Ord AccelerationStructureTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Read AccelerationStructureTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Show AccelerationStructureTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Storable AccelerationStructureTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Zero AccelerationStructureTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

newtype GeometryTypeKHR Source #

VkGeometryTypeKHR - Enum specifying which type of geometry is provided

See Also

AccelerationStructureGeometryKHR, GeometryNV

Constructors

GeometryTypeKHR Int32 

Bundled Patterns

pattern GEOMETRY_TYPE_TRIANGLES_KHR :: GeometryTypeKHR

GEOMETRY_TYPE_TRIANGLES_KHR specifies a geometry type consisting of triangles.

pattern GEOMETRY_TYPE_AABBS_KHR :: GeometryTypeKHR

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

pattern GEOMETRY_TYPE_INSTANCES_KHR :: GeometryTypeKHR

GEOMETRY_TYPE_INSTANCES_KHR specifies a geometry type consisting of acceleration structure instances.

Instances

Instances details
Eq GeometryTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Ord GeometryTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Read GeometryTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Show GeometryTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Storable GeometryTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Zero GeometryTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

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

Bundled Patterns

pattern RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR :: RayTracingShaderGroupTypeKHR

RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR indicates a shader group with a single SHADER_STAGE_RAYGEN_BIT_KHR, SHADER_STAGE_MISS_BIT_KHR, or SHADER_STAGE_CALLABLE_BIT_KHR shader in it.

pattern RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR :: RayTracingShaderGroupTypeKHR

RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR specifies a shader group that only hits triangles and must not contain an intersection shader, only closest hit and any-hit shaders.

pattern RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR :: RayTracingShaderGroupTypeKHR

RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR specifies a shader group that only intersects with custom geometry and must contain an intersection shader and may contain closest hit and any-hit shaders.

Instances

Instances details
Eq RayTracingShaderGroupTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing_pipeline

Ord RayTracingShaderGroupTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing_pipeline

Read RayTracingShaderGroupTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing_pipeline

Show RayTracingShaderGroupTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing_pipeline

Storable RayTracingShaderGroupTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing_pipeline

Zero RayTracingShaderGroupTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_ray_tracing_pipeline

type SHADER_UNUSED_KHR = 4294967295 Source #