ID3D12StateObjectProperties::GetShaderStackSize 方法 (d3d12.h)

获取在 HLSL 中调用光线追踪着色器所需的堆栈内存量。

语法

UINT64 GetShaderStackSize(
  LPCWSTR pExportName
);

参数

pExportName

要为其检索堆栈大小的状态对象中的着色器入口点。 对于命中组,必须使用语法指定命中组中的单个着色器:

hitGroupName::shaderType

其中 hitGroupName 是命中组的入口点名称, shaderType 是以下项之一:

  • intersection
  • anyhit
  • closesthit
这些值都区分大小写。

示例值为:“myTreeLeafHitGroup::anyhit”。

返回值

调用着色器所需的堆栈内存量(以字节为单位)。 如果状态对象中未完全解析着色器,或者着色器未知或属于与堆栈大小无关的类型(如命中组),则返回值0xffffffff。 32 位0xffffffff值用于 UINT64 返回值,以确保在计算整体管道堆栈大小的一部分时,与其他值求和时不会丢失错误的返回值。

备注

仅当应用想要通过调用 SetPipelineStackSize 而不是依赖保守的默认堆栈大小来配置堆栈大小时,才需要调用此方法。 此方法仅适用于光线生成着色器、命中组、未命中着色器和可调用着色器。 即使光线生成着色器位于堆栈的底部,也可能返回非零值。

对于命中组,必须查询单个着色器的大小,这些着色器 (交集着色器、任何命中着色器、最近的命中着色器) ,因为每个着色器都有不同的堆栈大小要求。 堆栈大小不能直接在这些单独的着色器上查询,因为它们的编译方式可能会受到包含这些着色器的总体命中组的影响。 pExportName 参数包含用于标识命中组中各个着色器的语法。

可以对集合状态对象或光线跟踪管道状态对象调用此 API。

要求

   
目标平台 Windows
标头 d3d12.h
Library D3D12.lib
DLL D3D12.dll

另请参阅

ID3D12StateObjectProperties