# VkPhysicalDeviceRayTracingFeaturesKHR(3) Manual Page

## Name

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

## C Specification

The `VkPhysicalDeviceRayTracingFeaturesKHR` structure is defined as:

    typedef struct VkPhysicalDeviceRayTracingFeaturesKHR {
        VkStructureType    sType;
        void*              pNext;
        VkBool32           rayTracing;
        VkBool32           rayTracingShaderGroupHandleCaptureReplay;
        VkBool32           rayTracingShaderGroupHandleCaptureReplayMixed;
        VkBool32           rayTracingAccelerationStructureCaptureReplay;
        VkBool32           rayTracingIndirectTraceRays;
        VkBool32           rayTracingIndirectAccelerationStructureBuild;
        VkBool32           rayTracingHostAccelerationStructureCommands;
        VkBool32           rayQuery;
        VkBool32           rayTracingPrimitiveCulling;
    } VkPhysicalDeviceRayTracingFeaturesKHR;

## Members

The members of the `VkPhysicalDeviceRayTracingFeaturesKHR` structure describe the following features:

## Description

- `rayTracing` indicates whether the implementation supports ray tracing functionality. See Ray Tracing.

- `rayTracingShaderGroupHandleCaptureReplay` indicates whether the implementation supports saving and reusing shader group handles, e.g. for trace capture and replay.

- `rayTracingShaderGroupHandleCaptureReplayMixed` indicates whether the implementation supports reuse of shader group handles being arbitrarily mixed with creation of non-reused shader group handles. If this is `VK_FALSE`, all reused shader group handles must be specified before any non-reused handles may be created.

- `rayTracingAccelerationStructureCaptureReplay` indicates whether the implementation supports saving and reusing acceleration structure device addresses, e.g. for trace capture and replay.

- `rayTracingIndirectTraceRays` indicates whether the implementation supports indirect trace ray commands, e.g. vkCmdTraceRaysIndirectKHR.

- `rayTracingIndirectAccelerationStructureBuild` indicates whether the implementation supports indirect acceleration structure build commands, e.g. vkCmdBuildAccelerationStructureIndirectKHR.

- `rayTracingHostAccelerationStructureCommands` indicates whether the implementation supports host side acceleration structure commands, e.g. vkBuildAccelerationStructureKHR, vkCopyAccelerationStructureKHR, vkCopyAccelerationStructureToMemoryKHR, vkCopyMemoryToAccelerationStructureKHR, vkWriteAccelerationStructuresPropertiesKHR.

- `rayQuery` indicates whether the implementation supports ray query (`OpRayQueryProceedKHR`) functionality.

- `rayTracingPrimitiveCulling` indicates whether the implementation supports primitive culling during ray traversal.

If the `VkPhysicalDeviceRayTracingFeaturesKHR` structure is included in the `pNext` chain of VkPhysicalDeviceFeatures2, it is filled with values indicating whether the feature is supported. `VkPhysicalDeviceRayTracingFeaturesKHR` can also be used in the `pNext` chain of VkDeviceCreateInfo to enable the features.

Valid Usage

- If `rayTracingShaderGroupHandleCaptureReplayMixed` is `VK_TRUE`, `rayTracingShaderGroupHandleCaptureReplay` must also be `VK_TRUE`

Valid Usage (Implicit)

- `sType` must be `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR`

## See Also

`VkBool32`, VkStructureType

## Document Notes

For more information, see the Vulkan Specification

This page is extracted from the Vulkan Specification. Fixes and changes should be made to the Specification, not directly.

## Copyright

Copyright (c) 2014-2020 Khronos Group. This work is licensed under a Creative Commons Attribution 4.0 International License.