Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
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
- Ratification Status
- Not ratified
- Extension and Version Dependencies
- VK_KHR_get_physical_device_properties2 and VK_KHR_get_memory_requirements2
- Contact
Other Extension Metadata
- Last Modified Date
- 2018-11-20
- Interactions and External Dependencies
- This extension requires SPV_NV_ray_tracing
- This extension provides API support for GL_NV_ray_tracing
- 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
cmdBuildAccelerationStructureNV
cmdCopyAccelerationStructureNV
cmdTraceRaysNV
cmdWriteAccelerationStructuresPropertiesNV
compileDeferredNV
createAccelerationStructureNV
createRayTracingPipelinesNV
destroyAccelerationStructureNV
getAccelerationStructureHandleNV
getAccelerationStructureMemoryRequirementsNV
getRayTracingShaderGroupHandlesNV
New Structures
AccelerationStructureCreateInfoNV
AccelerationStructureInfoNV
AccelerationStructureInstanceNV
AccelerationStructureMemoryRequirementsInfoNV
BindAccelerationStructureMemoryInfoNV
GeometryAABBNV
GeometryDataNV
GeometryNV
GeometryTrianglesNV
RayTracingPipelineCreateInfoNV
RayTracingShaderGroupCreateInfoNV
TransformMatrixNV
Extending
PhysicalDeviceProperties2
:Extending
WriteDescriptorSet
:
If VK_KHR_get_memory_requirements2 is supported:
New Enums
AccelerationStructureTypeNV
BuildAccelerationStructureFlagBitsNV
CopyAccelerationStructureModeNV
GeometryFlagBitsNV
GeometryInstanceFlagBitsNV
GeometryTypeNV
RayTracingShaderGroupTypeNV
New Bitmasks
New Enum Constants
NV_RAY_TRACING_SPEC_VERSION
SHADER_UNUSED_NV
Extending
AccelerationStructureTypeKHR
:Extending
AccessFlagBits
:Extending
BufferUsageFlagBits
:Extending
BuildAccelerationStructureFlagBitsKHR
:Extending
CopyAccelerationStructureModeKHR
:Extending
DescriptorType
:Extending
GeometryFlagBitsKHR
:Extending
GeometryInstanceFlagBitsKHR
:Extending
GeometryTypeKHR
:Extending
IndexType
:Extending
ObjectType
:Extending
PipelineBindPoint
:Extending
PipelineCreateFlagBits
:Extending
PipelineStageFlagBits
:Extending
QueryType
:Extending
RayTracingShaderGroupTypeKHR
:Extending
ShaderStageFlagBits
:Extending
StructureType
:STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV
STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV
STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV
STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV
STRUCTURE_TYPE_GEOMETRY_AABB_NV
STRUCTURE_TYPE_GEOMETRY_NV
STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV
STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV
STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV
STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV
STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV
If VK_EXT_debug_report is supported:
New or Modified Built-In Variables
- LaunchSizeNV
- WorldRayOriginNV
- WorldRayDirectionNV
- ObjectRayOriginNV
- ObjectRayDirectionNV
- RayTminNV
- RayTmaxNV
- InstanceCustomIndexNV
- InstanceId
- ObjectToWorldNV
- WorldToObjectNV
- HitTNV
- HitKindNV
- IncomingRayFlagsNV
- (modified)
PrimitiveId
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
, 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
- compileDeferredNV :: forall io. MonadIO io => Device -> Pipeline -> ("shader" ::: Word32) -> io ()
- createAccelerationStructureNV :: forall a io. (Extendss AccelerationStructureCreateInfoNV a, PokeChain a, MonadIO io) => Device -> AccelerationStructureCreateInfoNV a -> ("allocator" ::: Maybe AllocationCallbacks) -> io AccelerationStructureNV
- withAccelerationStructureNV :: forall a io r. (Extendss AccelerationStructureCreateInfoNV a, PokeChain a, MonadIO io) => Device -> AccelerationStructureCreateInfoNV a -> Maybe AllocationCallbacks -> (io AccelerationStructureNV -> (AccelerationStructureNV -> io ()) -> r) -> r
- destroyAccelerationStructureNV :: forall io. MonadIO io => Device -> AccelerationStructureNV -> ("allocator" ::: Maybe AllocationCallbacks) -> io ()
- getAccelerationStructureMemoryRequirementsNV :: forall a io. (Extendss MemoryRequirements2KHR a, PokeChain a, PeekChain a, MonadIO io) => Device -> AccelerationStructureMemoryRequirementsInfoNV -> io (MemoryRequirements2KHR a)
- bindAccelerationStructureMemoryNV :: forall io. MonadIO io => Device -> ("bindInfos" ::: Vector BindAccelerationStructureMemoryInfoNV) -> io ()
- cmdCopyAccelerationStructureNV :: forall io. MonadIO io => CommandBuffer -> ("dst" ::: AccelerationStructureNV) -> ("src" ::: AccelerationStructureNV) -> CopyAccelerationStructureModeKHR -> io ()
- cmdWriteAccelerationStructuresPropertiesNV :: forall io. MonadIO io => CommandBuffer -> ("accelerationStructures" ::: Vector AccelerationStructureNV) -> QueryType -> QueryPool -> ("firstQuery" ::: Word32) -> io ()
- cmdBuildAccelerationStructureNV :: forall io. MonadIO io => CommandBuffer -> AccelerationStructureInfoNV -> ("instanceData" ::: Buffer) -> ("instanceOffset" ::: DeviceSize) -> ("update" ::: Bool) -> ("dst" ::: AccelerationStructureNV) -> ("src" ::: AccelerationStructureNV) -> ("scratch" ::: Buffer) -> ("scratchOffset" ::: DeviceSize) -> io ()
- cmdTraceRaysNV :: forall io. MonadIO io => CommandBuffer -> ("raygenShaderBindingTableBuffer" ::: Buffer) -> ("raygenShaderBindingOffset" ::: DeviceSize) -> ("missShaderBindingTableBuffer" ::: Buffer) -> ("missShaderBindingOffset" ::: DeviceSize) -> ("missShaderBindingStride" ::: DeviceSize) -> ("hitShaderBindingTableBuffer" ::: Buffer) -> ("hitShaderBindingOffset" ::: DeviceSize) -> ("hitShaderBindingStride" ::: DeviceSize) -> ("callableShaderBindingTableBuffer" ::: Buffer) -> ("callableShaderBindingOffset" ::: DeviceSize) -> ("callableShaderBindingStride" ::: DeviceSize) -> ("width" ::: Word32) -> ("height" ::: Word32) -> ("depth" ::: Word32) -> io ()
- getAccelerationStructureHandleNV :: forall io. MonadIO io => Device -> AccelerationStructureNV -> ("dataSize" ::: Word64) -> ("data" ::: Ptr ()) -> io ()
- createRayTracingPipelinesNV :: forall io. MonadIO io => Device -> PipelineCache -> ("createInfos" ::: Vector (SomeStruct RayTracingPipelineCreateInfoNV)) -> ("allocator" ::: Maybe AllocationCallbacks) -> io (Result, "pipelines" ::: Vector Pipeline)
- withRayTracingPipelinesNV :: forall io r. MonadIO io => Device -> PipelineCache -> Vector (SomeStruct RayTracingPipelineCreateInfoNV) -> Maybe AllocationCallbacks -> (io (Result, Vector Pipeline) -> ((Result, Vector Pipeline) -> io ()) -> r) -> r
- pattern SHADER_STAGE_RAYGEN_BIT_NV :: ShaderStageFlagBits
- pattern SHADER_STAGE_ANY_HIT_BIT_NV :: ShaderStageFlagBits
- pattern SHADER_STAGE_CLOSEST_HIT_BIT_NV :: ShaderStageFlagBits
- pattern SHADER_STAGE_MISS_BIT_NV :: ShaderStageFlagBits
- pattern SHADER_STAGE_INTERSECTION_BIT_NV :: ShaderStageFlagBits
- pattern SHADER_STAGE_CALLABLE_BIT_NV :: ShaderStageFlagBits
- pattern PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV :: PipelineStageFlagBits
- pattern PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV :: PipelineStageFlagBits
- pattern BUFFER_USAGE_RAY_TRACING_BIT_NV :: BufferUsageFlagBits
- pattern PIPELINE_BIND_POINT_RAY_TRACING_NV :: PipelineBindPoint
- pattern ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV :: AccessFlagBits
- pattern ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV :: AccessFlagBits
- pattern INDEX_TYPE_NONE_NV :: IndexType
- pattern RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV :: RayTracingShaderGroupTypeKHR
- pattern RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV :: RayTracingShaderGroupTypeKHR
- pattern RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV :: RayTracingShaderGroupTypeKHR
- pattern GEOMETRY_TYPE_TRIANGLES_NV :: GeometryTypeKHR
- pattern GEOMETRY_TYPE_AABBS_NV :: GeometryTypeKHR
- pattern ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV :: AccelerationStructureTypeKHR
- pattern ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV :: AccelerationStructureTypeKHR
- pattern GEOMETRY_OPAQUE_BIT_NV :: GeometryFlagBitsKHR
- pattern GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV :: GeometryFlagBitsKHR
- pattern GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV :: GeometryInstanceFlagBitsKHR
- pattern GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV :: GeometryInstanceFlagBitsKHR
- pattern GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV :: GeometryInstanceFlagBitsKHR
- pattern GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV :: GeometryInstanceFlagBitsKHR
- pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV :: BuildAccelerationStructureFlagBitsKHR
- pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV :: BuildAccelerationStructureFlagBitsKHR
- pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV :: BuildAccelerationStructureFlagBitsKHR
- pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV :: BuildAccelerationStructureFlagBitsKHR
- pattern BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV :: BuildAccelerationStructureFlagBitsKHR
- pattern COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV :: CopyAccelerationStructureModeKHR
- pattern COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV :: CopyAccelerationStructureModeKHR
- pattern SHADER_UNUSED_NV :: Word32
- getRayTracingShaderGroupHandlesNV :: MonadIO io => Device -> Pipeline -> ("firstGroup" ::: Word32) -> ("groupCount" ::: Word32) -> ("dataSize" ::: Word64) -> ("data" ::: Ptr ()) -> io ()
- data RayTracingShaderGroupCreateInfoNV = RayTracingShaderGroupCreateInfoNV {}
- data RayTracingPipelineCreateInfoNV (es :: [Type]) = RayTracingPipelineCreateInfoNV {}
- data GeometryTrianglesNV = GeometryTrianglesNV {}
- data GeometryAABBNV = GeometryAABBNV {}
- data GeometryDataNV = GeometryDataNV {}
- data GeometryNV = GeometryNV {}
- data AccelerationStructureInfoNV = AccelerationStructureInfoNV {}
- data AccelerationStructureCreateInfoNV (es :: [Type]) = AccelerationStructureCreateInfoNV {}
- data BindAccelerationStructureMemoryInfoNV = BindAccelerationStructureMemoryInfoNV {}
- data WriteDescriptorSetAccelerationStructureNV = WriteDescriptorSetAccelerationStructureNV {}
- data AccelerationStructureMemoryRequirementsInfoNV = AccelerationStructureMemoryRequirementsInfoNV {}
- data PhysicalDeviceRayTracingPropertiesNV = PhysicalDeviceRayTracingPropertiesNV {}
- newtype AccelerationStructureMemoryRequirementsTypeNV where
- AccelerationStructureMemoryRequirementsTypeNV Int32
- pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV :: AccelerationStructureMemoryRequirementsTypeNV
- pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV :: AccelerationStructureMemoryRequirementsTypeNV
- pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV :: AccelerationStructureMemoryRequirementsTypeNV
- type GeometryFlagsNV = GeometryFlagsKHR
- type GeometryInstanceFlagsNV = GeometryInstanceFlagsKHR
- type BuildAccelerationStructureFlagsNV = BuildAccelerationStructureFlagsKHR
- type GeometryFlagBitsNV = GeometryFlagBitsKHR
- type GeometryInstanceFlagBitsNV = GeometryInstanceFlagBitsKHR
- type BuildAccelerationStructureFlagBitsNV = BuildAccelerationStructureFlagBitsKHR
- type CopyAccelerationStructureModeNV = CopyAccelerationStructureModeKHR
- type AccelerationStructureTypeNV = AccelerationStructureTypeKHR
- type GeometryTypeNV = GeometryTypeKHR
- type RayTracingShaderGroupTypeNV = RayTracingShaderGroupTypeKHR
- type AabbPositionsNV = AabbPositionsKHR
- type TransformMatrixNV = TransformMatrixKHR
- type AccelerationStructureInstanceNV = AccelerationStructureInstanceKHR
- type NV_RAY_TRACING_SPEC_VERSION = 3
- pattern NV_RAY_TRACING_SPEC_VERSION :: forall a. Integral a => a
- type NV_RAY_TRACING_EXTENSION_NAME = "VK_NV_ray_tracing"
- pattern NV_RAY_TRACING_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
- newtype AccelerationStructureNV = AccelerationStructureNV Word64
- data AabbPositionsKHR = AabbPositionsKHR {}
- data TransformMatrixKHR = TransformMatrixKHR {
- matrixRow0 :: (Float, Float, Float, Float)
- matrixRow1 :: (Float, Float, Float, Float)
- matrixRow2 :: (Float, Float, Float, Float)
- data AccelerationStructureInstanceKHR = AccelerationStructureInstanceKHR {}
- getRayTracingShaderGroupHandlesKHR :: forall io. MonadIO io => Device -> Pipeline -> ("firstGroup" ::: Word32) -> ("groupCount" ::: Word32) -> ("dataSize" ::: Word64) -> ("data" ::: Ptr ()) -> io ()
- 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_BUFFER_COLLECTION_FUCHSIA_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_CUDA_FUNCTION_NV :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_CUDA_MODULE_NV :: 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_CU_FUNCTION_NVX_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_CU_MODULE_NVX_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT :: DebugReportObjectTypeEXT
- newtype GeometryInstanceFlagBitsKHR where
- GeometryInstanceFlagBitsKHR Flags
- pattern GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR :: GeometryInstanceFlagBitsKHR
- pattern GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR :: GeometryInstanceFlagBitsKHR
- pattern GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR :: GeometryInstanceFlagBitsKHR
- pattern GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR :: GeometryInstanceFlagBitsKHR
- pattern GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT :: GeometryInstanceFlagBitsKHR
- pattern GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_EXT :: 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
- pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_KHR :: BuildAccelerationStructureFlagBitsKHR
- pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_DISPLACEMENT_MICROMAP_UPDATE_NV :: BuildAccelerationStructureFlagBitsKHR
- pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT :: BuildAccelerationStructureFlagBitsKHR
- pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT :: BuildAccelerationStructureFlagBitsKHR
- pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT :: BuildAccelerationStructureFlagBitsKHR
- pattern BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV :: 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 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 MemoryRequirements2KHR = MemoryRequirements2
- pattern GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR :: GeometryInstanceFlagBitsKHR
- type SHADER_UNUSED_KHR = 4294967295
- pattern SHADER_UNUSED_KHR :: Word32
Documentation
:: forall io. MonadIO io | |
=> Device |
|
-> Pipeline |
|
-> ("shader" ::: Word32) |
|
-> io () |
vkCompileDeferredNV - Deferred compilation of shaders
Return Codes
See Also
createAccelerationStructureNV Source #
:: forall a io. (Extendss AccelerationStructureCreateInfoNV a, PokeChain a, MonadIO io) | |
=> Device |
|
-> AccelerationStructureCreateInfoNV a |
|
-> ("allocator" ::: Maybe AllocationCallbacks) |
|
-> io AccelerationStructureNV |
vkCreateAccelerationStructureNV - Create a new acceleration structure object
Description
Similarly 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
.
Once memory has been bound to the acceleration structure using
bindAccelerationStructureMemoryNV
, that memory is populated by calls
to 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 validDevice
handle
-
pCreateInfo
must be a valid pointer to a validAccelerationStructureCreateInfoNV
structure - If
pAllocator
is notNULL
,pAllocator
must be a valid pointer to a validAllocationCallbacks
structure -
pAccelerationStructure
must be a valid pointer to aAccelerationStructureNV
handle
Return Codes
See Also
VK_NV_ray_tracing,
AccelerationStructureCreateInfoNV
,
AccelerationStructureNV
,
AllocationCallbacks
,
Device
withAccelerationStructureNV :: forall a io r. (Extendss AccelerationStructureCreateInfoNV a, PokeChain a, MonadIO io) => Device -> AccelerationStructureCreateInfoNV a -> 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 #
:: forall io. MonadIO io | |
=> Device |
|
-> AccelerationStructureNV |
|
-> ("allocator" ::: Maybe AllocationCallbacks) |
|
-> io () |
vkDestroyAccelerationStructureNV - Destroy an acceleration structure object
Valid Usage
-
If
AllocationCallbacks
were provided whenaccelerationStructure
was created, a compatible set of callbacks must be provided here -
If no
AllocationCallbacks
were provided whenaccelerationStructure
was created,pAllocator
must beNULL
Valid Usage (Implicit)
-
device
must be a validDevice
handle
-
If
accelerationStructure
is notNULL_HANDLE
,accelerationStructure
must be a validAccelerationStructureNV
handle - If
pAllocator
is notNULL
,pAllocator
must be a valid pointer to a validAllocationCallbacks
structure -
If
accelerationStructure
is a valid handle, it must have been created, allocated, or retrieved fromdevice
Host Synchronization
- Host access to
accelerationStructure
must be externally synchronized
See Also
VK_NV_ray_tracing,
AccelerationStructureNV
,
AllocationCallbacks
,
Device
getAccelerationStructureMemoryRequirementsNV Source #
:: forall a io. (Extendss MemoryRequirements2KHR a, PokeChain a, PeekChain a, MonadIO io) | |
=> Device |
|
-> AccelerationStructureMemoryRequirementsInfoNV |
|
-> io (MemoryRequirements2KHR a) |
vkGetAccelerationStructureMemoryRequirementsNV - Get acceleration structure memory requirements
Valid Usage (Implicit)
See Also
VK_NV_ray_tracing,
AccelerationStructureMemoryRequirementsInfoNV
,
Device
,
MemoryRequirements2KHR
bindAccelerationStructureMemoryNV Source #
:: forall io. MonadIO io | |
=> Device |
|
-> ("bindInfos" ::: Vector BindAccelerationStructureMemoryInfoNV) |
|
-> io () |
vkBindAccelerationStructureMemoryNV - Bind acceleration structure memory
Return Codes
See Also
VK_NV_ray_tracing,
BindAccelerationStructureMemoryInfoNV
, Device
cmdCopyAccelerationStructureNV Source #
:: forall io. MonadIO io | |
=> CommandBuffer |
|
-> ("dst" ::: AccelerationStructureNV) |
|
-> ("src" ::: AccelerationStructureNV) |
|
-> CopyAccelerationStructureModeKHR |
|
-> io () |
vkCmdCopyAccelerationStructureNV - Copy an acceleration structure
Description
Accesses to src
and dst
must be
synchronized
with the
PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR
pipeline stage
or 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
-
mode
must beCOPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR
orCOPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR
- The source
acceleration structure
src
must have been constructed prior to the execution of this command - If
mode
isCOPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR
,src
must have been constructed withBUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR
in the build - The
buffer
used to createsrc
must be bound to device memory - The
buffer
used to createdst
must be bound to device memory - The range of
memory backing
dst
that is accessed by this command must not overlap the memory backingsrc
that is accessed by this command -
dst
must be bound completely and contiguously to a singleDeviceMemory
object viabindAccelerationStructureMemoryNV
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
dst
must be a validAccelerationStructureNV
handle -
src
must be a validAccelerationStructureNV
handle -
mode
must be a validCopyAccelerationStructureModeKHR
value -
commandBuffer
must be in the recording state - The
CommandPool
thatcommandBuffer
was allocated from must support compute operations - This command must only be called outside of a render pass instance
- This command must only be called outside of a video coding scope
- Each of
commandBuffer
,dst
, andsrc
must have been created, allocated, or retrieved from the sameDevice
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was allocated from must be externally synchronized
Command Properties
'
Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
---|---|---|---|---|
Primary Secondary | Outside | Outside | Compute | Action |
See Also
VK_NV_ray_tracing,
AccelerationStructureNV
,
CommandBuffer
,
CopyAccelerationStructureModeKHR
cmdWriteAccelerationStructuresPropertiesNV Source #
:: forall io. MonadIO io | |
=> CommandBuffer |
|
-> ("accelerationStructures" ::: Vector AccelerationStructureNV) |
|
-> QueryType |
|
-> QueryPool |
|
-> ("firstQuery" ::: Word32) |
|
-> 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
-
The queries identified by
queryPool
andfirstQuery
must be unavailable -
accelerationStructure
must be bound completely and contiguously to a singleDeviceMemory
object viabindAccelerationStructureMemoryNV
-
All acceleration structures in
pAccelerationStructures
must have been built prior to the execution of this command -
All acceleration structures in
pAccelerationStructures
must have been built withBUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR
ifqueryType
isQUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV
-
queryType
must beQUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
pAccelerationStructures
must be a valid pointer to an array ofaccelerationStructureCount
validAccelerationStructureNV
handles -
queryType
must be a validQueryType
value -
queryPool
must be a validQueryPool
handle -
commandBuffer
must be in the recording state -
The
CommandPool
thatcommandBuffer
was allocated from must support compute operations - This command must only be called outside of a render pass instance
- This command must only be called outside of a video coding scope
-
accelerationStructureCount
must be greater than0
-
Each of
commandBuffer
,queryPool
, and the elements ofpAccelerationStructures
must have been created, allocated, or retrieved from the sameDevice
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was allocated from must be externally synchronized
Command Properties
'
Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
---|---|---|---|---|
Primary Secondary | Outside | Outside | Compute | Action |
See Also
VK_NV_ray_tracing,
AccelerationStructureNV
,
CommandBuffer
,
QueryPool
,
QueryType
cmdBuildAccelerationStructureNV Source #
:: forall io. MonadIO io | |
=> CommandBuffer |
|
-> AccelerationStructureInfoNV |
|
-> ("instanceData" ::: Buffer) |
|
-> ("instanceOffset" ::: DeviceSize) |
|
-> ("update" ::: Bool) |
|
-> ("dst" ::: AccelerationStructureNV) |
|
-> ("src" ::: AccelerationStructureNV) |
|
-> ("scratch" ::: Buffer) |
|
-> ("scratchOffset" ::: DeviceSize) |
|
-> 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
-
geometryCount
must be less than or equal toPhysicalDeviceRayTracingPropertiesNV
::maxGeometryCount
-
dst
must have been created with compatibleAccelerationStructureInfoNV
whereAccelerationStructureInfoNV
::type
andAccelerationStructureInfoNV
::flags
are identical,AccelerationStructureInfoNV
::instanceCount
andAccelerationStructureInfoNV
::geometryCount
fordst
are greater than or equal to the build size and each geometry inAccelerationStructureInfoNV
::pGeometries
fordst
has greater than or equal to the number of vertices, indices, and AABBs - If
update
isTRUE
,src
must not beNULL_HANDLE
- If
update
isTRUE
,src
must have previously been constructed withBUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV
set inAccelerationStructureInfoNV
::flags
in the original build - If
update
isFALSE
, thesize
member of theMemoryRequirements
structure returned from a call togetAccelerationStructureMemoryRequirementsNV
withAccelerationStructureMemoryRequirementsInfoNV
::accelerationStructure
set todst
andAccelerationStructureMemoryRequirementsInfoNV
::type
set toACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV
must be less than or equal to the size ofscratch
minusscratchOffset
- If
update
isTRUE
, thesize
member of theMemoryRequirements
structure returned from a call togetAccelerationStructureMemoryRequirementsNV
withAccelerationStructureMemoryRequirementsInfoNV
::accelerationStructure
set todst
andAccelerationStructureMemoryRequirementsInfoNV
::type
set toACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV
must be less than or equal to the size ofscratch
minusscratchOffset
-
scratch
must have been created withBUFFER_USAGE_RAY_TRACING_BIT_NV
usage flag - If
instanceData
is notNULL_HANDLE
,instanceData
must have been created withBUFFER_USAGE_RAY_TRACING_BIT_NV
usage flag -
Each
AccelerationStructureInstanceKHR
::accelerationStructureReference
value ininstanceData
must be a valid device address containing a value obtained fromgetAccelerationStructureHandleNV
- If
update
isTRUE
, then objects that were previously active must not be made inactive as per https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#acceleration-structure-inactive-prims - If
update
isTRUE
, then objects that were previously inactive must not be made active as per https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#acceleration-structure-inactive-prims - If
update
isTRUE
, thesrc
anddst
objects must either be the same object or not have any memory aliasing -
dst
must be bound completely and contiguously to a singleDeviceMemory
object viabindAccelerationStructureMemoryNV
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
pInfo
must be a valid pointer to a validAccelerationStructureInfoNV
structure - If
instanceData
is notNULL_HANDLE
,instanceData
must be a validBuffer
handle -
dst
must be a validAccelerationStructureNV
handle - If
src
is notNULL_HANDLE
,src
must be a validAccelerationStructureNV
handle -
scratch
must be a validBuffer
handle -
commandBuffer
must be in the recording state - The
CommandPool
thatcommandBuffer
was allocated from must support compute operations - This command must only be called outside of a render pass instance
- This command must only be called outside of a video coding scope
- Each of
commandBuffer
,dst
,instanceData
,scratch
, andsrc
that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the sameDevice
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was allocated from must be externally synchronized
Command Properties
'
Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
---|---|---|---|---|
Primary Secondary | Outside | Outside | Compute | Action |
See Also
VK_NV_ray_tracing,
AccelerationStructureInfoNV
,
AccelerationStructureNV
,
Bool32
, Buffer
,
CommandBuffer
,
DeviceSize
:: forall io. MonadIO io | |
=> CommandBuffer |
|
-> ("raygenShaderBindingTableBuffer" ::: Buffer) |
|
-> ("raygenShaderBindingOffset" ::: DeviceSize) |
|
-> ("missShaderBindingTableBuffer" ::: Buffer) |
|
-> ("missShaderBindingOffset" ::: DeviceSize) |
|
-> ("missShaderBindingStride" ::: DeviceSize) |
|
-> ("hitShaderBindingTableBuffer" ::: Buffer) |
|
-> ("hitShaderBindingOffset" ::: DeviceSize) |
|
-> ("hitShaderBindingStride" ::: DeviceSize) |
|
-> ("callableShaderBindingTableBuffer" ::: Buffer) |
|
-> ("callableShaderBindingOffset" ::: DeviceSize) |
|
-> ("callableShaderBindingStride" ::: DeviceSize) |
|
-> ("width" ::: Word32) |
|
-> ("height" ::: Word32) |
|
-> ("depth" ::: Word32) |
|
-> 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
Sampler
created withmagFilter
orminFilter
equal toFILTER_LINEAR
andcompareEnable
equal toFALSE
is used to sample aImageView
as a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
- If a
Sampler
created withmipmapMode
equal toSAMPLER_MIPMAP_MODE_LINEAR
andcompareEnable
equal toFALSE
is used to sample aImageView
as a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
- If a
ImageView
is sampled with depth comparison, the image view’s format features must containFORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT
- If a
ImageView
is 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
DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
descriptor is accessed using atomic operations as a result of this command, then the storage texel buffer’s format features must containFORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT
- If a
ImageView
is sampled withFILTER_CUBIC_EXT
as a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
- If the
VK_EXT_filter_cubic
extension is not enabled and any
ImageView
is sampled withFILTER_CUBIC_EXT
as a result of this command, it must not have aImageViewType
ofIMAGE_VIEW_TYPE_3D
,IMAGE_VIEW_TYPE_CUBE
, orIMAGE_VIEW_TYPE_CUBE_ARRAY
- Any
ImageView
being sampled withFILTER_CUBIC_EXT
as a result of this command must have aImageViewType
and format that supports cubic filtering, as specified byFilterCubicImageViewImageFormatPropertiesEXT
::filterCubic
returned bygetPhysicalDeviceImageFormatProperties2
- Any
ImageView
being sampled withFILTER_CUBIC_EXT
with a reduction mode of eitherSAMPLER_REDUCTION_MODE_MIN
orSAMPLER_REDUCTION_MODE_MAX
as a result of this command must have aImageViewType
and format that supports cubic filtering together with minmax filtering, as specified byFilterCubicImageViewImageFormatPropertiesEXT
::filterCubicMinmax
returned bygetPhysicalDeviceImageFormatProperties2
- If the
cubicRangeClamp
feature is not enabled, then any
ImageView
being sampled withFILTER_CUBIC_EXT
as a result of this command must not have aSamplerReductionModeCreateInfo
::reductionMode
equal toSAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM
- Any
ImageView
being sampled with aSamplerReductionModeCreateInfo
::reductionMode
equal toSAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM
as a result of this command must sample withFILTER_CUBIC_EXT
- If the
selectableCubicWeights
feature is not enabled, then any
ImageView
being sampled withFILTER_CUBIC_EXT
as a result of this command must haveSamplerCubicWeightsCreateInfoQCOM
::cubicWeights
equal toCUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM
- Any
Image
created with aImageCreateInfo
::flags
containingIMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using aSamplerAddressMode
ofSAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
- For any
ImageView
being written as a storage image where the image format field of theOpTypeImage
isUnknown
, the view’s format features must containFORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
- For any
ImageView
being read as a storage image where the image format field of theOpTypeImage
isUnknown
, the view’s format features must containFORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
- For any
BufferView
being written as a storage texel buffer where the image format field of theOpTypeImage
isUnknown
, the view’s buffer features must containFORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
- Any
BufferView
being read as a storage texel buffer where the image format field of theOpTypeImage
isUnknown
then the view’s buffer features must containFORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
- For each set n that is
statically used by
a bound shader,
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 thePipelineLayout
orDescriptorSetLayout
array that was used to create the currentPipeline
orShaderEXT
, as described in ??? - For each push constant that is
statically used by
a bound shader,
a push constant value must have been set for the same pipeline
bind point, with a
PipelineLayout
that is compatible for push constants, with thePipelineLayout
orDescriptorSetLayout
andPushConstantRange
arrays used to create the currentPipeline
orShaderEXT
, as described in ??? - If the
maintenance4
feature is not enabled, then for each push constant that is
statically used by
a bound shader,
a push constant value must have been set for the same pipeline
bind point, with a
PipelineLayout
that is compatible for push constants, with thePipelineLayout
orDescriptorSetLayout
andPushConstantRange
arrays used to create the currentPipeline
orShaderEXT
, as described in ??? - Descriptors in each bound
descriptor set, specified via
cmdBindDescriptorSets
, must be valid if they are statically used by thePipeline
bound to the pipeline bind point used by this command and the boundPipeline
was not created withPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
- If the descriptors used by the
Pipeline
bound to the pipeline bind point were specified viacmdBindDescriptorSets
, the boundPipeline
must have been created withoutPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
- Descriptors in bound descriptor
buffers, specified via
cmdSetDescriptorBufferOffsetsEXT
, must be valid if they are dynamically used by thePipeline
bound to the pipeline bind point used by this command and the boundPipeline
was created withPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
- Descriptors in bound descriptor
buffers, specified via
cmdSetDescriptorBufferOffsetsEXT
, must be valid if they are dynamically used by anyShaderEXT
bound to a stage corresponding to the pipeline bind point used by this command - If the descriptors used by the
Pipeline
bound to the pipeline bind point were specified viacmdSetDescriptorBufferOffsetsEXT
, the boundPipeline
must have been created withPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
- If a descriptor is dynamically
used with a
Pipeline
created withPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
, the descriptor memory must be resident - If a descriptor is dynamically
used with a
ShaderEXT
created with aDescriptorSetLayout
that was created withDESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
, the descriptor memory must be resident - If the shaderObject feature is not enabled, a valid pipeline must be bound to the pipeline bind point used by this command
- If the
shaderObject
is enabled, either a valid pipeline must be bound to the pipeline
bind point used by this command, or a valid combination of valid and
NULL_HANDLE
shader objects must be bound to every supported shader stage corresponding to the pipeline bind point used by this command - If a pipeline is bound to the
pipeline bind point used by this command, 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 or anyShaderEXT
bound to a stage corresponding to the pipeline bind point used by this command accesses aSampler
object that uses unnormalized coordinates, that sampler must not be used to sample from anyImage
with aImageView
of the typeIMAGE_VIEW_TYPE_3D
,IMAGE_VIEW_TYPE_CUBE
,IMAGE_VIEW_TYPE_1D_ARRAY
,IMAGE_VIEW_TYPE_2D_ARRAY
orIMAGE_VIEW_TYPE_CUBE_ARRAY
, in any shader stage - If the
Pipeline
object bound to the pipeline bind point used by this command or anyShaderEXT
bound to a stage corresponding to the pipeline bind point used by this command accesses aSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-VOpImageSample*
orOpImageSparseSample*
instructions withImplicitLod
,Dref
orProj
in their name, in any shader stage - If the
Pipeline
object bound to the pipeline bind point used by this command or anyShaderEXT
bound to a stage corresponding to the pipeline bind point used by this command accesses aSampler
object 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 any stage of the
Pipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling eitherPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
orPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
foruniformBuffers
, and the robustBufferAccess feature is not enabled, that stage 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
robustBufferAccess
feature is not enabled, and any
ShaderEXT
bound to a stage corresponding 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 any stage of the
Pipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling eitherPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
orPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
forstorageBuffers
, and the robustBufferAccess feature is not enabled, that stage 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
robustBufferAccess
feature is not enabled, and any
ShaderEXT
bound to a stage corresponding 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 and protectedNoFault is not supported, any resource accessed by bound shaders must not be a protected resource - If
a bound shader
accesses a
Sampler
orImageView
object that enables sampler Y′CBCR conversion, that object must only be used withOpImageSample*
orOpImageSparseSample*
instructions - If
a bound shader
accesses a
Sampler
orImageView
object that enables sampler Y′CBCR conversion, that object must not use theConstOffset
andOffset
operands - If a
ImageView
is accessed as a result of this command, then the image view’sviewType
must match theDim
operand of theOpTypeImage
as described in ??? - If a
ImageView
is accessed as a result of this command, then the numeric type of the image view’sformat
and theSampled
Type
operand of theOpTypeImage
must match - If a
ImageView
created with a format other thanFORMAT_A8_UNORM_KHR
is accessed usingOpImageWrite
as a result of this command, then theType
of theTexel
operand of that instruction must have at least as many components as the image view’s format - If a
ImageView
created with the formatFORMAT_A8_UNORM_KHR
is accessed usingOpImageWrite
as a result of this command, then theType
of theTexel
operand of that instruction must have four components - If a
BufferView
is accessed usingOpImageWrite
as a result of this command, then theType
of theTexel
operand of that instruction must have at least as many components as the buffer view’s format - If a
ImageView
with aFormat
that has a 64-bit component width is accessed as a result of this command, theSampledType
of theOpTypeImage
operand of that instruction must have aWidth
of 64 - If a
ImageView
with aFormat
that has a component width less than 64-bit is accessed as a result of this command, theSampledType
of theOpTypeImage
operand of that instruction must have aWidth
of 32 - If a
BufferView
with aFormat
that has a 64-bit component width is accessed as a result of this command, theSampledType
of theOpTypeImage
operand of that instruction must have aWidth
of 64 - If a
BufferView
with aFormat
that has a component width less than 64-bit is accessed as a result of this command, theSampledType
of theOpTypeImage
operand of that instruction must have aWidth
of 32 - If the
sparseImageInt64Atomics
feature is not enabled,
Image
objects created with theIMAGE_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through anOpTypeImage
with aSampledType
with aWidth
of 64 by this command - If the
sparseImageInt64Atomics
feature is not enabled,
Buffer
objects created with theBUFFER_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through anOpTypeImage
with aSampledType
with aWidth
of 64 by this command - If
OpImageWeightedSampleQCOM
is used to sample aImageView
as a result of this command, then the image view’s format features must containFORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM
- If
OpImageWeightedSampleQCOM
uses aImageView
as a sample weight image as a result of this command, then the image view’s format features must containFORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM
- If
OpImageBoxFilterQCOM
is used to sample aImageView
as a result of this command, then the image view’s format features must containFORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM
- If
OpImageBlockMatchSSDQCOM
is used to read from anImageView
as a result of this command, then the image view’s format features must containFORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
- If
OpImageBlockMatchSADQCOM
is used to read from anImageView
as a result of this command, then the image view’s format features must containFORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
- If
OpImageBlockMatchSADQCOM
or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation - If
OpImageWeightedSampleQCOM
,OpImageBoxFilterQCOM
,OpImageBlockMatchWindowSSDQCOM
,OpImageBlockMatchWindowSADQCOM
,OpImageBlockMatchGatherSSDQCOM
,OpImageBlockMatchGatherSADQCOM
,OpImageBlockMatchSSDQCOM
, orOpImageBlockMatchSADQCOM
uses aSampler
as a result of this command, then the sampler must have been created withSAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
- If any
command other than
OpImageWeightedSampleQCOM
,OpImageBoxFilterQCOM
,OpImageBlockMatchWindowSSDQCOM
,OpImageBlockMatchWindowSADQCOM
,OpImageBlockMatchGatherSSDQCOM
,OpImageBlockMatchGatherSADQCOM
,OpImageBlockMatchSSDQCOM
, orOpImageBlockMatchSADQCOM
uses aSampler
as a result of this command, then the sampler must not have been created withSAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
- If a
OpImageBlockMatchWindow*QCOM
orOpImageBlockMatchGather*QCOM
instruction is used to read from anImageView
as a result of this command, then the image view’s format features must containFORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
- If a
OpImageBlockMatchWindow*QCOM
orOpImageBlockMatchGather*QCOM
instruction is used to read from anImageView
as a result of this command, then the image view’s format must be a single-component format. - If a
OpImageBlockMatchWindow*QCOM
orOpImageBlockMatchGather*QCOM
read from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation - Any shader invocation executed by this command must terminate
- Any shader group handle referenced by this call must have been queried from the currently bound ray tracing pipeline
-
commandBuffer
must not be a protected command buffer - This command must
not cause a pipeline 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 singleDeviceMemory
object -
raygenShaderBindingOffset
must be less than the size ofraygenShaderBindingTableBuffer
-
raygenShaderBindingOffset
must be a multiple ofPhysicalDeviceRayTracingPropertiesNV
::shaderGroupBaseAlignment
- If
missShaderBindingTableBuffer
is non-sparse then it must be bound completely and contiguously to a singleDeviceMemory
object -
missShaderBindingOffset
must be less than the size ofmissShaderBindingTableBuffer
-
missShaderBindingOffset
must be a multiple ofPhysicalDeviceRayTracingPropertiesNV
::shaderGroupBaseAlignment
- If
hitShaderBindingTableBuffer
is non-sparse then it must be bound completely and contiguously to a singleDeviceMemory
object -
hitShaderBindingOffset
must be less than the size ofhitShaderBindingTableBuffer
-
hitShaderBindingOffset
must be a multiple ofPhysicalDeviceRayTracingPropertiesNV
::shaderGroupBaseAlignment
- If
callableShaderBindingTableBuffer
is non-sparse then it must be bound completely and contiguously to a singleDeviceMemory
object -
callableShaderBindingOffset
must be less than the size ofcallableShaderBindingTableBuffer
-
callableShaderBindingOffset
must be a multiple ofPhysicalDeviceRayTracingPropertiesNV
::shaderGroupBaseAlignment
-
missShaderBindingStride
must be a multiple ofPhysicalDeviceRayTracingPropertiesNV
::shaderGroupHandleSize
-
hitShaderBindingStride
must be a multiple ofPhysicalDeviceRayTracingPropertiesNV
::shaderGroupHandleSize
-
callableShaderBindingStride
must be a multiple ofPhysicalDeviceRayTracingPropertiesNV
::shaderGroupHandleSize
-
missShaderBindingStride
must be less than or equal toPhysicalDeviceRayTracingPropertiesNV
::maxShaderGroupStride
-
hitShaderBindingStride
must be less than or equal toPhysicalDeviceRayTracingPropertiesNV
::maxShaderGroupStride
-
callableShaderBindingStride
must be less than or equal toPhysicalDeviceRayTracingPropertiesNV
::maxShaderGroupStride
-
width
must be less than or equal toPhysicalDeviceLimits
::maxComputeWorkGroupCount
[0] -
height
must be less than or equal toPhysicalDeviceLimits
::maxComputeWorkGroupCount
[1] -
depth
must be less than or equal toPhysicalDeviceLimits
::maxComputeWorkGroupCount
[2]
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
raygenShaderBindingTableBuffer
must be a validBuffer
handle - If
missShaderBindingTableBuffer
is notNULL_HANDLE
,missShaderBindingTableBuffer
must be a validBuffer
handle - If
hitShaderBindingTableBuffer
is notNULL_HANDLE
,hitShaderBindingTableBuffer
must be a validBuffer
handle -
If
callableShaderBindingTableBuffer
is notNULL_HANDLE
,callableShaderBindingTableBuffer
must be a validBuffer
handle -
commandBuffer
must be in the recording state - The
CommandPool
thatcommandBuffer
was allocated from must support compute operations - This command must only be called outside of a render pass instance
- This command must only be called outside of a video coding scope
- Each of
callableShaderBindingTableBuffer
,commandBuffer
,hitShaderBindingTableBuffer
,missShaderBindingTableBuffer
, andraygenShaderBindingTableBuffer
that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the sameDevice
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was allocated from must be externally synchronized
Command Properties
'
Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
---|---|---|---|---|
Primary Secondary | Outside | Outside | Compute | Action |
See Also
getAccelerationStructureHandleNV Source #
:: forall io. MonadIO io | |
=> Device |
|
-> AccelerationStructureNV |
|
-> ("dataSize" ::: Word64) |
|
-> ("data" ::: Ptr ()) |
|
-> io () |
vkGetAccelerationStructureHandleNV - Get opaque acceleration structure handle
Return Codes
See Also
createRayTracingPipelinesNV Source #
:: forall io. MonadIO io | |
=> Device |
|
-> PipelineCache |
|
-> ("createInfos" ::: Vector (SomeStruct RayTracingPipelineCreateInfoNV)) |
|
-> ("allocator" ::: Maybe AllocationCallbacks) |
|
-> io (Result, "pipelines" ::: Vector Pipeline) |
vkCreateRayTracingPipelinesNV - Creates a new ray tracing pipeline object
Valid Usage
- If the
flags
member of any element ofpCreateInfos
contains thePIPELINE_CREATE_DERIVATIVE_BIT
flag, and thebasePipelineIndex
member of that same element is not-1
,basePipelineIndex
must be less than the index intopCreateInfos
that corresponds to that element
- If the
flags
member of any element ofpCreateInfos
contains thePIPELINE_CREATE_DERIVATIVE_BIT
flag, the base pipeline must have been created with thePIPELINE_CREATE_ALLOW_DERIVATIVES_BIT
flag set -
flags
must not contain thePIPELINE_CREATE_DISPATCH_BASE
flag - If
pipelineCache
was created withPIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT
, host access topipelineCache
must be externally synchronized
Valid Usage (Implicit)
-
device
must be a validDevice
handle
- If
pipelineCache
is notNULL_HANDLE
,pipelineCache
must be a validPipelineCache
handle -
pCreateInfos
must be a valid pointer to an array ofcreateInfoCount
validRayTracingPipelineCreateInfoNV
structures - If
pAllocator
is notNULL
,pAllocator
must be a valid pointer to a validAllocationCallbacks
structure -
pPipelines
must be a valid pointer to an array ofcreateInfoCount
Pipeline
handles -
createInfoCount
must be greater than0
- If
pipelineCache
is a valid handle, it must have been created, allocated, or retrieved fromdevice
Return Codes
See Also
VK_NV_ray_tracing,
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.
pattern SHADER_STAGE_RAYGEN_BIT_NV :: ShaderStageFlagBits Source #
pattern SHADER_STAGE_ANY_HIT_BIT_NV :: ShaderStageFlagBits Source #
pattern SHADER_STAGE_MISS_BIT_NV :: ShaderStageFlagBits Source #
pattern SHADER_STAGE_CALLABLE_BIT_NV :: ShaderStageFlagBits Source #
pattern INDEX_TYPE_NONE_NV :: IndexType Source #
pattern RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV :: RayTracingShaderGroupTypeKHR Source #
pattern RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV :: RayTracingShaderGroupTypeKHR Source #
pattern GEOMETRY_TYPE_TRIANGLES_NV :: GeometryTypeKHR Source #
pattern GEOMETRY_TYPE_AABBS_NV :: GeometryTypeKHR Source #
pattern GEOMETRY_OPAQUE_BIT_NV :: GeometryFlagBitsKHR Source #
pattern GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV :: GeometryInstanceFlagBitsKHR Source #
pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV :: BuildAccelerationStructureFlagBitsKHR Source #
pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV :: BuildAccelerationStructureFlagBitsKHR Source #
pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV :: BuildAccelerationStructureFlagBitsKHR Source #
pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV :: BuildAccelerationStructureFlagBitsKHR Source #
pattern BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV :: BuildAccelerationStructureFlagBitsKHR Source #
pattern SHADER_UNUSED_NV :: Word32 Source #
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
- If
type
isRAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV
thengeneralShader
must be a valid index intoRayTracingPipelineCreateInfoNV
::pStages
referring to a shader ofSHADER_STAGE_RAYGEN_BIT_NV
,SHADER_STAGE_MISS_BIT_NV
, orSHADER_STAGE_CALLABLE_BIT_NV
- If
type
isRAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV
thenclosestHitShader
,anyHitShader
, andintersectionShader
must beSHADER_UNUSED_NV
- If
type
isRAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV
thenintersectionShader
must be a valid index intoRayTracingPipelineCreateInfoNV
::pStages
referring to a shader ofSHADER_STAGE_INTERSECTION_BIT_NV
- If
type
isRAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV
thenintersectionShader
must beSHADER_UNUSED_NV
-
closestHitShader
must be eitherSHADER_UNUSED_NV
or a valid index intoRayTracingPipelineCreateInfoNV
::pStages
referring to a shader ofSHADER_STAGE_CLOSEST_HIT_BIT_NV
-
anyHitShader
must be eitherSHADER_UNUSED_NV
or a valid index intoRayTracingPipelineCreateInfoNV
::pStages
referring to a shader ofSHADER_STAGE_ANY_HIT_BIT_NV
Valid Usage (Implicit)
-
sType
must beSTRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV
-
pNext
must beNULL
-
type
must be a validRayTracingShaderGroupTypeKHR
value
See Also
VK_NV_ray_tracing,
RayTracingPipelineCreateInfoNV
,
RayTracingShaderGroupTypeKHR
,
StructureType
RayTracingShaderGroupCreateInfoNV | |
|
Instances
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.
If a
PipelineCreateFlags2CreateInfoKHR
structure is present in the pNext
chain,
PipelineCreateFlags2CreateInfoKHR
::flags
from that structure is used instead of flags
from this structure.
Valid Usage
- If
flags
contains thePIPELINE_CREATE_DERIVATIVE_BIT
flag, andbasePipelineIndex
is -1,basePipelineHandle
must be a valid ray tracingPipeline
handle
- If
flags
contains thePIPELINE_CREATE_DERIVATIVE_BIT
flag, andbasePipelineHandle
isNULL_HANDLE
,basePipelineIndex
must be a valid index into the calling command’spCreateInfos
parameter - If
flags
contains thePIPELINE_CREATE_DERIVATIVE_BIT
flag,basePipelineIndex
must be -1 orbasePipelineHandle
must beNULL_HANDLE
- If a push
constant block is declared in a shader, a push constant range in
layout
must match both the shader stage and range - If a
resource variables
is declared in a shader, a descriptor slot in
layout
must match the shader stage - If a
resource variables
is declared in a shader, and the descriptor type is not
DESCRIPTOR_TYPE_MUTABLE_EXT
, a descriptor slot inlayout
must match the descriptor type - If a
resource variables
is declared in a shader as an array, a descriptor slot in
layout
must match the descriptor count - 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 - The number of
resources in
layout
accessible to each shader stage that is used by the pipeline must be less than or equal toPhysicalDeviceLimits
::maxPerStageResources
-
flags
must not includePIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV
-
If the
pipelineCreationCacheControl
feature is not enabled,
flags
must not includePIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT
orPIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT
- The
stage
member of at least one element ofpStages
must beSHADER_STAGE_RAYGEN_BIT_KHR
-
flags
must not includePIPELINE_CREATE_LIBRARY_BIT_KHR
-
maxRecursionDepth
must be less than or equal toPhysicalDeviceRayTracingPropertiesNV
::maxRecursionDepth
-
flags
must not includePIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR
-
flags
must not includePIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR
-
flags
must not includePIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR
-
flags
must not includePIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR
-
flags
must not includePIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR
-
flags
must not includePIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR
-
flags
must not includePIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR
-
flags
must not includePIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV
-
flags
must not include bothPIPELINE_CREATE_DEFER_COMPILE_BIT_NV
andPIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT
at the same time -
If
PipelineCreationFeedbackCreateInfo
::pipelineStageCreationFeedbackCount
is not0
, it must be equal tostageCount
- The
stage
value in allpStages
elements must be one ofSHADER_STAGE_RAYGEN_BIT_KHR
,SHADER_STAGE_ANY_HIT_BIT_KHR
,SHADER_STAGE_CLOSEST_HIT_BIT_KHR
,SHADER_STAGE_MISS_BIT_KHR
,SHADER_STAGE_INTERSECTION_BIT_KHR
, orSHADER_STAGE_CALLABLE_BIT_KHR
-
flags
must not includePIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT
-
flags
must not includePIPELINE_CREATE_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV
Valid Usage (Implicit)
-
sType
must beSTRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV
- Each
pNext
member of any structure (including this one) in thepNext
chain must be eitherNULL
or a pointer to a valid instance ofPipelineCreateFlags2CreateInfoKHR
orPipelineCreationFeedbackCreateInfo
- The
sType
value of each struct in thepNext
chain must be unique -
flags
must be a valid combination ofPipelineCreateFlagBits
values -
pStages
must be a valid pointer to an array ofstageCount
validPipelineShaderStageCreateInfo
structures -
pGroups
must be a valid pointer to an array ofgroupCount
validRayTracingShaderGroupCreateInfoNV
structures -
layout
must be a validPipelineLayout
handle -
stageCount
must be greater than0
-
groupCount
must be greater than0
- Both of
basePipelineHandle
, andlayout
that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the sameDevice
See Also
VK_NV_ray_tracing,
Pipeline
,
PipelineCreateFlags
,
PipelineLayout
,
PipelineShaderStageCreateInfo
,
RayTracingShaderGroupCreateInfoNV
,
StructureType
,
createRayTracingPipelinesNV
RayTracingPipelineCreateInfoNV | |
|
Instances
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 a multiple of the component size ofvertexFormat
-
vertexFormat
must be one ofFORMAT_R32G32B32_SFLOAT
,FORMAT_R32G32_SFLOAT
,FORMAT_R16G16B16_SFLOAT
,FORMAT_R16G16_SFLOAT
,FORMAT_R16G16_SNORM
, orFORMAT_R16G16B16_SNORM
-
vertexStride
must be less than or equal to 232-1 -
indexOffset
must be less than the size ofindexData
-
indexOffset
must be a multiple of the element size ofindexType
-
indexType
must beINDEX_TYPE_UINT16
,INDEX_TYPE_UINT32
, orINDEX_TYPE_NONE_NV
-
indexData
must beNULL_HANDLE
ifindexType
isINDEX_TYPE_NONE_NV
-
indexData
must be a validBuffer
handle ifindexType
is notINDEX_TYPE_NONE_NV
-
indexCount
must be0
ifindexType
isINDEX_TYPE_NONE_NV
-
transformOffset
must be less than the size oftransformData
-
transformOffset
must be a multiple of16
Valid Usage (Implicit)
-
sType
must beSTRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV
-
pNext
must beNULL
- If
vertexData
is notNULL_HANDLE
,vertexData
must be a validBuffer
handle -
vertexFormat
must be a validFormat
value - If
indexData
is notNULL_HANDLE
,indexData
must be a validBuffer
handle -
indexType
must be a validIndexType
value - If
transformData
is notNULL_HANDLE
,transformData
must be a validBuffer
handle - Each of
indexData
,transformData
, andvertexData
that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the sameDevice
See Also
VK_NV_ray_tracing,
Buffer
,
DeviceSize
,
Format
, GeometryDataNV
,
IndexType
,
StructureType
GeometryTrianglesNV | |
|
Instances
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
Valid Usage (Implicit)
-
sType
must beSTRUCTURE_TYPE_GEOMETRY_AABB_NV
-
pNext
must beNULL
- If
aabbData
is notNULL_HANDLE
,aabbData
must be a validBuffer
handle
See Also
VK_NV_ray_tracing,
Buffer
,
DeviceSize
, GeometryDataNV
,
StructureType
GeometryAABBNV | |
|
Instances
data GeometryDataNV Source #
VkGeometryDataNV - Structure specifying geometry in a bottom-level acceleration structure
Valid Usage (Implicit)
See Also
VK_NV_ray_tracing,
GeometryAABBNV
, GeometryNV
, GeometryTrianglesNV
GeometryDataNV | |
|
Instances
data GeometryNV Source #
VkGeometryNV - Structure specifying a geometry in a bottom-level acceleration structure
Valid Usage (Implicit)
See Also
VK_NV_ray_tracing,
AccelerationStructureInfoNV
, GeometryDataNV
,
GeometryFlagsKHR
,
GeometryTypeKHR
,
StructureType
GeometryNV | |
|
Instances
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
-
geometryCount
must be less than or equal toPhysicalDeviceRayTracingPropertiesNV
::maxGeometryCount
-
instanceCount
must be less than or equal toPhysicalDeviceRayTracingPropertiesNV
::maxInstanceCount
- The
total number of triangles in all geometries must be less than or
equal to
PhysicalDeviceRayTracingPropertiesNV
::maxTriangleCount
- If
type
isACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV
thengeometryCount
must be0
- If
type
isACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV
theninstanceCount
must be0
- If
type
isACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV
then thegeometryType
member of each geometry inpGeometries
must be the same -
type
must not beACCELERATION_STRUCTURE_TYPE_GENERIC_KHR
- If
flags
has theBUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV
bit set, then it must not have theBUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV
bit set -
scratch
must have been created withBUFFER_USAGE_RAY_TRACING_BIT_NV
usage flag - If
instanceData
is notNULL_HANDLE
,instanceData
must have been created withBUFFER_USAGE_RAY_TRACING_BIT_NV
usage flag
Valid Usage (Implicit)
-
sType
must beSTRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV
-
pNext
must beNULL
-
type
must be a validAccelerationStructureTypeNV
value -
flags
must be a valid combination ofBuildAccelerationStructureFlagBitsNV
values - If
geometryCount
is not0
,pGeometries
must be a valid pointer to an array ofgeometryCount
validGeometryNV
structures
See Also
VK_NV_ray_tracing,
AccelerationStructureCreateInfoNV
, AccelerationStructureTypeNV
,
BuildAccelerationStructureFlagsNV
, GeometryNV
,
StructureType
,
cmdBuildAccelerationStructureNV
AccelerationStructureInfoNV | |
|
Instances
Show AccelerationStructureInfoNV Source # | |
Defined in Vulkan.Extensions.VK_NV_ray_tracing showsPrec :: Int -> AccelerationStructureInfoNV -> ShowS # show :: AccelerationStructureInfoNV -> String # showList :: [AccelerationStructureInfoNV] -> ShowS # | |
FromCStruct AccelerationStructureInfoNV Source # | |
ToCStruct AccelerationStructureInfoNV Source # | |
Defined in Vulkan.Extensions.VK_NV_ray_tracing withCStruct :: AccelerationStructureInfoNV -> (Ptr AccelerationStructureInfoNV -> IO b) -> IO b Source # pokeCStruct :: Ptr AccelerationStructureInfoNV -> AccelerationStructureInfoNV -> IO b -> IO b Source # withZeroCStruct :: (Ptr AccelerationStructureInfoNV -> IO b) -> IO b Source # pokeZeroCStruct :: Ptr AccelerationStructureInfoNV -> IO b -> IO b Source # cStructSize :: Int Source # | |
Zero AccelerationStructureInfoNV Source # | |
data AccelerationStructureCreateInfoNV (es :: [Type]) Source #
VkAccelerationStructureCreateInfoNV - Structure specifying the parameters of a newly created acceleration structure object
Valid Usage
Valid Usage (Implicit)
-
sType
must beSTRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV
-
pNext
must beNULL
or a pointer to a valid instance ofOpaqueCaptureDescriptorDataCreateInfoEXT
- The
sType
value of each struct in thepNext
chain must be unique -
info
must be a validAccelerationStructureInfoNV
structure
See Also
VK_NV_ray_tracing,
AccelerationStructureInfoNV
,
DeviceSize
,
StructureType
,
createAccelerationStructureNV
AccelerationStructureCreateInfoNV | |
|
Instances
data BindAccelerationStructureMemoryInfoNV Source #
VkBindAccelerationStructureMemoryInfoNV - Structure specifying acceleration structure memory binding
Valid Usage
-
memoryOffset
must be less than the size ofmemory
-
memory
must have been allocated using one of the memory types allowed in thememoryTypeBits
member of theMemoryRequirements
structure returned from a call togetAccelerationStructureMemoryRequirementsNV
withaccelerationStructure
andtype
ofACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV
-
memoryOffset
must be an integer multiple of thealignment
member of theMemoryRequirements
structure returned from a call togetAccelerationStructureMemoryRequirementsNV
withaccelerationStructure
andtype
ofACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV
- The
size
member of theMemoryRequirements
structure returned from a call togetAccelerationStructureMemoryRequirementsNV
withaccelerationStructure
andtype
ofACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV
must be less than or equal to the size ofmemory
minusmemoryOffset
Valid Usage (Implicit)
-
pNext
must beNULL
-
accelerationStructure
must be a validAccelerationStructureNV
handle -
memory
must be a validDeviceMemory
handle -
If
deviceIndexCount
is not0
,pDeviceIndices
must be a valid pointer to an array ofdeviceIndexCount
uint32_t
values - Both of
accelerationStructure
, andmemory
must have been created, allocated, or retrieved from the sameDevice
See Also
VK_NV_ray_tracing,
AccelerationStructureNV
,
DeviceMemory
,
DeviceSize
,
StructureType
,
bindAccelerationStructureMemoryNV
BindAccelerationStructureMemoryInfoNV | |
|
Instances
data WriteDescriptorSetAccelerationStructureNV Source #
VkWriteDescriptorSetAccelerationStructureNV - Structure specifying acceleration structure descriptor information
Valid Usage
-
Each acceleration structure in
pAccelerationStructures
must have been created withACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR
-
If the
nullDescriptor
feature is not enabled, each member of
pAccelerationStructures
must not beNULL_HANDLE
Valid Usage (Implicit)
-
pAccelerationStructures
must be a valid pointer to an array ofaccelerationStructureCount
valid orNULL_HANDLE
AccelerationStructureNV
handles -
accelerationStructureCount
must be greater than0
See Also
WriteDescriptorSetAccelerationStructureNV | |
|
Instances
data AccelerationStructureMemoryRequirementsInfoNV Source #
VkAccelerationStructureMemoryRequirementsInfoNV - Structure specifying acceleration to query for memory requirements
Valid Usage (Implicit)
See Also
VK_NV_ray_tracing,
AccelerationStructureMemoryRequirementsTypeNV
,
AccelerationStructureNV
,
StructureType
,
getAccelerationStructureMemoryRequirementsNV
AccelerationStructureMemoryRequirementsInfoNV | |
|
Instances
data PhysicalDeviceRayTracingPropertiesNV Source #
VkPhysicalDeviceRayTracingPropertiesNV - Properties of the physical device for ray tracing
Description
Due to the fact that the geometry, instance, and triangle counts are
specified at acceleration structure creation as 32-bit values,
maxGeometryCount
, maxInstanceCount
, and maxTriangleCount
must
not exceed 232-1.
If the PhysicalDeviceRayTracingPropertiesNV
structure is included in
the pNext
chain of the
PhysicalDeviceProperties2
structure passed to
getPhysicalDeviceProperties2
,
it is filled in with each corresponding implementation-dependent
property.
Limits specified by this structure must match those specified with the
same name in
PhysicalDeviceAccelerationStructurePropertiesKHR
and
PhysicalDeviceRayTracingPipelinePropertiesKHR
.
Valid Usage (Implicit)
See Also
PhysicalDeviceRayTracingPropertiesNV | |
|
Instances
newtype AccelerationStructureMemoryRequirementsTypeNV Source #
VkAccelerationStructureMemoryRequirementsTypeNV - Acceleration structure memory requirement type
See Also
VK_NV_ray_tracing,
AccelerationStructureMemoryRequirementsInfoNV
pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV :: AccelerationStructureMemoryRequirementsTypeNV |
|
pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV :: AccelerationStructureMemoryRequirementsTypeNV |
|
pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV :: AccelerationStructureMemoryRequirementsTypeNV |
|
Instances
type GeometryFlagsNV = GeometryFlagsKHR Source #
type GeometryTypeNV = GeometryTypeKHR Source #
type AabbPositionsNV = AabbPositionsKHR Source #
type NV_RAY_TRACING_SPEC_VERSION = 3 Source #
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 #
VkAccelerationStructureNV - Opaque handle to an acceleration structure object
See Also
VK_NV_ray_tracing,
AccelerationStructureCaptureDescriptorDataInfoEXT
,
AccelerationStructureMemoryRequirementsInfoNV
,
BindAccelerationStructureMemoryInfoNV
,
WriteDescriptorSetAccelerationStructureNV
,
cmdBuildAccelerationStructureNV
,
cmdCopyAccelerationStructureNV
,
cmdWriteAccelerationStructuresPropertiesNV
,
createAccelerationStructureNV
,
destroyAccelerationStructureNV
,
getAccelerationStructureHandleNV
Instances
data AabbPositionsKHR Source #
VkAabbPositionsKHR - Structure specifying two opposing corners of an axis-aligned bounding box
Valid Usage
See Also
Instances
data TransformMatrixKHR Source #
VkTransformMatrixKHR - Structure specifying a 3x4 affine transformation matrix
Valid Usage
See Also
VK_KHR_acceleration_structure,
VK_NV_ray_tracing,
AccelerationStructureInstanceKHR
,
AccelerationStructureMatrixMotionInstanceNV
TransformMatrixKHR | |
|
Instances
data AccelerationStructureInstanceKHR Source #
VkAccelerationStructureInstanceKHR - Structure specifying a single acceleration structure instance for building into an acceleration structure geometry
Description
The C language specification 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
VK_KHR_acceleration_structure,
VK_NV_ray_tracing,
AccelerationStructureMotionInstanceDataNV
,
GeometryInstanceFlagsKHR
, TransformMatrixKHR
AccelerationStructureInstanceKHR | |
|
Instances
getRayTracingShaderGroupHandlesKHR Source #
:: forall io. MonadIO io | |
=> Device |
|
-> Pipeline |
|
-> ("firstGroup" ::: Word32) |
|
-> ("groupCount" ::: Word32) |
|
-> ("dataSize" ::: Word64) |
|
-> ("data" ::: Ptr ()) |
|
-> io () |
vkGetRayTracingShaderGroupHandlesKHR - Query ray tracing pipeline shader group handles
Description
If pipeline
was created with
PIPELINE_CREATE_LIBRARY_BIT_KHR
and the
pipelineLibraryGroupHandles
feature is enabled applications can query group handles from that
pipeline, even if the pipeline is a library and is never bound to a
command buffer. These group handles remain bitwise identical for any
pipeline
which references the pipeline library. Group indices are
assigned as-if the pipeline was created without
PIPELINE_CREATE_LIBRARY_BIT_KHR
.
Valid Usage
-
firstGroup
must be less than the number of shader groups inpipeline
- The sum
of
firstGroup
andgroupCount
must be less than or equal to the number of shader groups inpipeline
-
dataSize
must be at leastPhysicalDeviceRayTracingPipelinePropertiesKHR
::shaderGroupHandleSize
×groupCount
- If the
pipelineLibraryGroupHandles
feature is not enabled,
pipeline
must not have been created withPIPELINE_CREATE_LIBRARY_BIT_KHR
Valid Usage (Implicit)
-
device
must be a validDevice
handle
-
pipeline
must be a validPipeline
handle -
pData
must be a valid pointer to an array ofdataSize
bytes -
dataSize
must be greater than0
-
pipeline
must have been created, allocated, or retrieved fromdevice
Return Codes
See Also
VK_KHR_ray_tracing_pipeline,
VK_NV_ray_tracing,
Device
, Pipeline
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
VK_EXT_debug_marker,
VK_EXT_debug_report,
DebugMarkerObjectNameInfoEXT
,
DebugMarkerObjectTagInfoEXT
,
debugReportMessageEXT
Instances
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
VK_KHR_acceleration_structure,
VK_NV_ray_tracing,
GeometryInstanceFlagsKHR
Instances
newtype GeometryFlagBitsKHR Source #
VkGeometryFlagBitsKHR - Bitmask specifying additional parameters for a geometry
See Also
VK_KHR_acceleration_structure,
VK_NV_ray_tracing,
GeometryFlagsKHR
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
VK_KHR_acceleration_structure,
VK_NV_ray_tracing,
BuildAccelerationStructureFlagsKHR
Instances
newtype CopyAccelerationStructureModeKHR Source #
VkCopyAccelerationStructureModeKHR - Acceleration structure copy mode
See Also
VK_KHR_acceleration_structure,
VK_NV_ray_tracing,
CopyAccelerationStructureInfoKHR
,
CopyAccelerationStructureToMemoryInfoKHR
,
CopyMemoryToAccelerationStructureInfoKHR
,
cmdCopyAccelerationStructureNV
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
VK_KHR_acceleration_structure,
VK_NV_ray_tracing,
AccelerationStructureBuildGeometryInfoKHR
,
AccelerationStructureCreateInfoKHR
,
AccelerationStructureInfoNV
pattern ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR :: AccelerationStructureTypeKHR |
|
pattern ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR :: AccelerationStructureTypeKHR |
|
pattern ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR :: AccelerationStructureTypeKHR |
|
Instances
newtype GeometryTypeKHR Source #
VkGeometryTypeKHR - Enum specifying which type of geometry is provided
See Also
VK_KHR_acceleration_structure,
VK_NV_ray_tracing,
AccelerationStructureGeometryKHR
,
GeometryNV
pattern GEOMETRY_TYPE_TRIANGLES_KHR :: GeometryTypeKHR |
|
pattern GEOMETRY_TYPE_AABBS_KHR :: GeometryTypeKHR |
|
pattern GEOMETRY_TYPE_INSTANCES_KHR :: GeometryTypeKHR |
|
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
VK_KHR_ray_tracing_pipeline,
VK_NV_ray_tracing,
RayTracingShaderGroupCreateInfoKHR
,
RayTracingShaderGroupCreateInfoNV
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
pattern GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR :: GeometryInstanceFlagBitsKHR Source #
type SHADER_UNUSED_KHR = 4294967295 Source #
pattern SHADER_UNUSED_KHR :: Word32 Source #
VK_SHADER_UNUSED_KHR - Sentinel for an unused shader index