131 lines
4.8 KiB
Plaintext
131 lines
4.8 KiB
Plaintext
|
// This section is included inside the Pipelines chapter (pipelines.txt)
|
||
|
|
||
|
[[pipelines-raytracing]]
|
||
|
== Raytracing Pipeline
|
||
|
|
||
|
Raytracing pipelines consist of multiple shader stages, fixed-function
|
||
|
traversal stages, and a pipeline layout.
|
||
|
|
||
|
[open,refpage='vkCreateRaytracingPipelinesNVX',desc='Creates a new raytracing pipeline object',type='protos']
|
||
|
--
|
||
|
|
||
|
To create raytracing pipelines, call:
|
||
|
|
||
|
include::../../api/protos/vkCreateRaytracingPipelinesNVX.txt[]
|
||
|
|
||
|
* pname:device is the logical device that creates the raytracing
|
||
|
pipelines.
|
||
|
* pname:pipelineCache is either dlink:VK_NULL_HANDLE, indicating that
|
||
|
pipeline caching is disabled; or the handle of a valid
|
||
|
<<pipelines-cache,pipeline cache>> object, in which case use of that
|
||
|
cache is enabled for the duration of the command.
|
||
|
* pname:createInfoCount is the length of the pname:pCreateInfos and
|
||
|
pname:pPipelines arrays.
|
||
|
* pname:pCreateInfos is an array of
|
||
|
sname:VkRaytracingPipelineCreateInfoNVX structures.
|
||
|
* pname:pAllocator controls host memory allocation as described in the
|
||
|
<<memory-allocation, Memory Allocation>> chapter.
|
||
|
* pname:pPipelines is a pointer to an array in which the resulting compute
|
||
|
pipeline objects are returned.
|
||
|
|
||
|
.Valid Usage
|
||
|
****
|
||
|
****
|
||
|
|
||
|
include::../../validity/protos/vkCreateRaytracingPipelinesNVX.txt[]
|
||
|
--
|
||
|
|
||
|
[open,refpage='VkRaytracingPipelineCreateInfoNVX',desc='Structure specifying parameters of a newly created raytracing pipeline',type='structs']
|
||
|
--
|
||
|
|
||
|
The sname:VkRaytracingPipelineCreateInfoNVX structure is defined as:
|
||
|
|
||
|
include::../../api/structs/VkRaytracingPipelineCreateInfoNVX.txt[]
|
||
|
|
||
|
* pname:sType is the type of this structure.
|
||
|
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||
|
* pname:flags is a bitmask of elink:VkPipelineCreateFlagBits specifying
|
||
|
how the pipeline will be generated.
|
||
|
* pname:stageCount is the number of entries in the pname:pStages and
|
||
|
pname:pGroupNumbers arrays.
|
||
|
* pname:pStages is an array of size pname:stageCount structures of type
|
||
|
slink:VkPipelineShaderStageCreateInfo describing the set of the shader
|
||
|
stages to be included in the raytracing pipeline.
|
||
|
* pname:pGroupNumbers is an array of size pname:stageCount integers, where
|
||
|
each integer indicates the hit group that the corresponding shader
|
||
|
belongs to.
|
||
|
* pname:maxRecursionDepth is the maximum recursion that will be called
|
||
|
from this pipeline.
|
||
|
* pname:layout is the description of binding locations used by both the
|
||
|
pipeline and descriptor sets used with the pipeline.
|
||
|
* pname:basePipelineHandle is a pipeline to derive from.
|
||
|
* pname:basePipelineIndex is an index into the pname:pCreateInfos
|
||
|
parameter to use as a pipeline to derive from.
|
||
|
|
||
|
The parameters pname:basePipelineHandle and pname:basePipelineIndex are
|
||
|
described in more detail in <<pipelines-pipeline-derivatives,Pipeline
|
||
|
Derivatives>>.
|
||
|
|
||
|
.Valid Usage
|
||
|
****
|
||
|
****
|
||
|
|
||
|
include::../../validity/structs/VkRaytracingPipelineCreateInfoNVX.txt[]
|
||
|
--
|
||
|
|
||
|
[open,refpage='vkGetRaytracingShaderHandlesNVX',desc='Query raytracing pipeline shader handles',type='protos']
|
||
|
--
|
||
|
|
||
|
To query the opaque handles of shaders in the raytracing pipeline, call:
|
||
|
|
||
|
include::../../api/protos/vkGetRaytracingShaderHandlesNVX.txt[]
|
||
|
|
||
|
* pname:device is the logical device that contains the raytracing
|
||
|
pipeline.
|
||
|
* pname:pipeline is the raytracing pipeline object that contains the
|
||
|
shaders.
|
||
|
* pname:firstShader is the index of the first shader to retrieve a handle
|
||
|
for from the pname:pStages array of
|
||
|
sname:VkPipelineShaderStageCreateInfo entries.
|
||
|
* pname:shaderCount is the number of shader handles to retrieve.
|
||
|
* pname:dataSize is the size in bytes of the buffer pointed to by pData.
|
||
|
* pname:pData is a pointer to a user-allocated buffer where the results
|
||
|
will be written.
|
||
|
|
||
|
.Valid Usage
|
||
|
****
|
||
|
****
|
||
|
|
||
|
include::../../validity/protos/vkGetRaytracingShaderHandlesNVX.txt[]
|
||
|
--
|
||
|
|
||
|
Raytracing pipelines can contain more shaders than a graphics or compute
|
||
|
pipeline, so to allow parallel compilation of shaders within a pipeline, an
|
||
|
application may: choose to defer compilation until a later point in time.
|
||
|
|
||
|
[open,refpage='vkCompileDeferredNVX',desc='Deferred compilation of shaders',type='protos']
|
||
|
--
|
||
|
|
||
|
To compile a deferred shader in a pipeline call:
|
||
|
|
||
|
include::../../api/protos/vkCompileDeferredNVX.txt[]
|
||
|
|
||
|
* pname:device is the logical device that contains the raytracing
|
||
|
pipeline.
|
||
|
* pname:pipeline is the raytracing pipeline object that contains the
|
||
|
shaders.
|
||
|
* pname:shader is the index of the shader to compile.
|
||
|
|
||
|
.Valid Usage
|
||
|
****
|
||
|
* [[VUID-vkCompileDeferredNVX-pipeline-02237]]
|
||
|
pname:pipeline must: have been created with
|
||
|
VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NVX.
|
||
|
* [[VUID-vkCompileDeferredNVX-shader-02238]]
|
||
|
pname:shader must: not have been called as a deferred compile before.
|
||
|
****
|
||
|
|
||
|
include::../../validity/protos/vkCompileDeferredNVX.txt[]
|
||
|
--
|
||
|
|