Método ID3D12StateObjectProperties::GetShaderStackSize (d3d12.h)
Obtém a quantidade de memória de pilha necessária para invocar um sombreador de raytracing no HLSL.
Sintaxe
UINT64 GetShaderStackSize(
LPCWSTR pExportName
);
Parâmetros
pExportName
O ponto de entrada do sombreador no objeto de estado para o qual recuperar o tamanho da pilha. Para grupos de ocorrências, um sombreador individual dentro do grupo de ocorrências deve ser especificado usando a sintaxe :
hitGroupName::shaderType
Em que hitGroupName é o nome do ponto de entrada para o grupo de ocorrências e shaderType é um dos seguintes:
- interseção
- anyhit
- closesthit
Um valor de exemplo é: "myTreeLeafHitGroup::anyhit".
Valor retornado
Quantidade de memória de pilha, em bytes, necessária para invocar o sombreador. Se o sombreador não for totalmente resolvido no objeto de estado ou o sombreador for desconhecido ou de um tipo para o qual um tamanho de pilha não seja relevante, como um grupo de ocorrências, o valor retornado será 0xffffffff. O valor de 0xffffffff de 32 bits é usado para o valor retornado UINT64 para garantir que os valores retornados inválidos não sejam perdidos quando somados com outros valores como parte do cálculo de um tamanho geral da pilha do pipeline.
Comentários
Esse método só precisará ser chamado se o aplicativo quiser configurar o tamanho da pilha chamando SetPipelineStackSize, em vez de depender do tamanho de pilha padrão conservador. Esse método só é válido para sombreadores de geração de raios, grupos de ocorrências, sombreadores incorretos e sombreadores chamáveis. Mesmo sombreadores de geração de raios podem retornar um valor diferente de zero, apesar de estarem na parte inferior da pilha.
Para grupos de ocorrências, o tamanho da pilha deve ser consultado para os sombreadores individuais que o compõem (sombreadores de interseção, sombreadores de ocorrência, sombreadores de ocorrência mais próximos), pois cada um provavelmente tem um requisito de tamanho de pilha diferente. O tamanho da pilha não pode ser consultado diretamente nesses sombreadores individuais, pois a maneira como eles são compilados pode ser influenciada pelo grupo de ocorrências geral que os contém. O parâmetro pExportName inclui sintaxe para identificar sombreadores individuais dentro de um grupo de ocorrências.
Essa API pode ser chamada em objetos de estado de coleção ou objetos de estado do pipeline de raytracing.
Requisitos
Plataforma de Destino | Windows |
Cabeçalho | d3d12.h |
Biblioteca | D3D12.lib |
DLL | D3D12.dll |