ID3D12StateObjectProperties::GetShaderStackSize 方法 (d3d12.h)
取得叫用 HLSL 中光線追蹤著色器所需的堆疊記憶體數量。
語法
UINT64 GetShaderStackSize(
LPCWSTR pExportName
);
參數
pExportName
要擷取堆疊大小的狀態物件中的著色器進入點。 對於點擊群組,必須使用語法來指定點擊群組內的個別著色器:
hitGroupName::shaderType
其中 hitGroupName 是點擊群組的進入點名稱, 而 shaderType 是下列其中一項:
- 交集
- anyhit
- closesthit
範例值為:「myTreeLeafHitGroup::anyhit」。
傳回值
叫用著色器所需的堆疊記憶體數量,以位元組為單位。 如果著色器未在狀態物件中完全解析,或著色器未知或堆疊大小不相關的類型,例如點擊群組,則會0xffffffff傳回值。 32 位0xffffffff值會用於 UINT64 傳回值,以確保在計算整體管線堆疊大小的一部分加總其他值時,不會遺失不正確的傳回值。
備註
只有在應用程式想要呼叫 SetPipelineStackSize來設定堆疊大小,而不是依賴保守的預設堆疊大小時,才需要呼叫這個方法。 這個方法只適用于光線產生著色器、點擊群組、遺漏著色器和可呼叫的著色器。 即使光線產生著色器在堆疊底部,仍可能會傳回非零值。
針對點擊群組,必須針對組成堆疊的個別著色器查詢堆疊大小 (交集著色器、任何點擊著色器、最接近的點擊著色器) ,因為每個著色器可能有不同的堆疊大小需求。 堆疊大小無法直接在這些個別著色器上查詢,因為編譯它們的方式可以受到包含它們的整體點擊群組所影響。 pExportName參數包含用來識別點擊群組內個別著色器的語法。
您可以在集合狀態物件或光線追蹤管線狀態物件上呼叫此 API。
需求
目標平台 | Windows |
標頭 | d3d12.h |
程式庫 | D3D12.lib |
Dll | D3D12.dll |