VkRayTracingShaderGroupCreateInfoNV(3)

# VkRayTracingShaderGroupCreateInfoNV(3) Manual Page

## Name

VkRayTracingShaderGroupCreateInfoNV - Structure specifying shaders in a shader group

## C Specification

The `VkRayTracingShaderGroupCreateInfoNV` structure is defined as:

    typedef struct VkRayTracingShaderGroupCreateInfoNV {
        VkStructureType                  sType;
        const void*                      pNext;
        VkRayTracingShaderGroupTypeNV    type;
        uint32_t                         generalShader;
        uint32_t                         closestHitShader;
        uint32_t                         anyHitShader;
        uint32_t                         intersectionShader;
    } VkRayTracingShaderGroupCreateInfoNV;

## Members

- `sType` is the type of this structure.

- `pNext` is `NULL` or a pointer to an extension-specific structure.

- `type` is the type of hit group specified in this structure.

- `generalShader` is the index of the ray generation, miss, or callable shader from `VkRayTracingPipelineCreateInfoNV`::`pStages` in the group if the shader group has `type` of `VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV` and `VK_SHADER_UNUSED_NV` otherwise.

- `closestHitShader` is the optional index of the closest hit shader from `VkRayTracingPipelineCreateInfoNV`::`pStages` in the group if the shader group has `type` of `VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV` or `VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV` and `VK_SHADER_UNUSED_NV` otherwise.

- `anyHitShader` is the optional index of the any-hit shader from `VkRayTracingPipelineCreateInfoNV`::`pStages` in the group if the shader group has `type` of `VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV` or `VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV` and `VK_SHADER_UNUSED_NV` otherwise.

- `intersectionShader` is the index of the intersection shader from `VkRayTracingPipelineCreateInfoNV`::`pStages` in the group if the shader group has `type` of `VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV` and `VK_SHADER_UNUSED_NV` otherwise.

## Description

Valid Usage

- If `type` is `VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV` then `generalShader` must be a valid index into `pStages` referring to a shader of `VK_SHADER_STAGE_RAYGEN_BIT_NV`, `VK_SHADER_STAGE_MISS_BIT_NV`, or `VK_SHADER_STAGE_CALLABLE_BIT_NV`

- If `type` is `VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV` then `closestHitShader`, `anyHitShader`, and `intersectionShader` must be `VK_SHADER_UNUSED_NV`

- If `type` is `VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV` then `intersectionShader` must be a valid index into `pStages` referring to a shader of `VK_SHADER_STAGE_INTERSECTION_BIT_NV`

- If `type` is `VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV` then `intersectionShader` must be `VK_SHADER_UNUSED_NV`

- `closestHitShader` must be either `VK_SHADER_UNUSED_NV` or a valid index into `pStages` referring to a shader of `VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV`

- `anyHitShader` must be either `VK_SHADER_UNUSED_NV` or a valid index into `pStages` referring to a shader of `VK_SHADER_STAGE_ANY_HIT_BIT_NV`

Valid Usage (Implicit)

- `sType` must be `VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV`

- `pNext` must be `NULL`

- `type` must be a valid VkRayTracingShaderGroupTypeNV value

## See Also

VkRayTracingPipelineCreateInfoNV, VkRayTracingShaderGroupTypeNV, 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-2019 Khronos Group. This work is licensed under a Creative Commons Attribution 4.0 International License.