Metodo ID3D12StateObjectProperties::GetShaderStackSize (d3d12.h)
Ottiene la quantità di memoria dello stack necessaria per richiamare uno shader raytracing in HLSL.
Sintassi
UINT64 GetShaderStackSize(
LPCWSTR pExportName
);
Parametri
pExportName
Punto di ingresso dello shader nell'oggetto stato per il quale recuperare le dimensioni dello stack. Per i gruppi di hit, è necessario specificare un singolo shader all'interno del gruppo di hit usando la sintassi :
hitGroupName::shaderType
Dove hitGroupName è il nome del punto di ingresso per il gruppo di hit e shaderType è uno dei seguenti:
- intersezione
- anyhit
- closesthit
Un valore di esempio è: "myTreeLeafHitGroup::anyhit".
Valore restituito
Quantità di memoria dello stack, in byte, necessaria per richiamare lo shader. Se lo shader non è completamente risolto nell'oggetto stato o lo shader è sconosciuto o di un tipo per cui le dimensioni dello stack non sono rilevanti, ad esempio un gruppo di passaggi, il valore restituito è 0xffffffff. Il valore di 0xffffffff a 32 bit viene usato per il valore restituito UINT64 per garantire che i valori restituiti non validi non vengano persi quando sommati ad altri valori come parte del calcolo di una dimensione complessiva dello stack di pipeline.
Commenti
Questo metodo deve essere chiamato solo se l'app vuole configurare le dimensioni dello stack chiamando SetPipelineStackSize, invece di basarsi sulle dimensioni dello stack predefinite conservativo. Questo metodo è valido solo per gli shader di generazione di ray, i gruppi di hit, gli shader senza errori e gli shader chiamabili. Anche gli shader di generazione di raggi possono restituire un valore diverso da zero nonostante si trova nella parte inferiore dello stack.
Per i gruppi di hit, è necessario eseguire query sulle dimensioni dello stack per i singoli shader che lo comprendono (shader di intersezione, eventuali hit shader, hit shader più vicini), perché ognuno di essi probabilmente ha un requisito di dimensioni dello stack diverso. Le dimensioni dello stack non possono essere eseguite direttamente su questi singoli shader, perché il modo in cui vengono compilati può essere influenzato dal gruppo di hit generale che li contiene. Il parametro pExportName include la sintassi per identificare singoli shader all'interno di un hit group.
Questa API può essere chiamata su oggetti di stato della raccolta o oggetti di stato della pipeline raytracing.
Requisiti
Piattaforma di destinazione | Windows |
Intestazione | d3d12.h |
Libreria | D3D12.lib |
DLL | D3D12.dll |