Share via


ID3D12StateObjectProperties::GetShaderStackSize-Methode (d3d12.h)

Ruft die Menge an Stapelspeicher ab, die zum Aufrufen eines Raytracing-Shaders in HLSL erforderlich ist.

Syntax

UINT64 GetShaderStackSize(
  LPCWSTR pExportName
);

Parameter

pExportName

Der Shadereinstiegspunkt im Zustandsobjekt, für das die Stapelgröße abgerufen werden soll. Für Treffergruppen muss ein einzelner Shader innerhalb der Treffergruppe mithilfe der Syntax angegeben werden:

hitGroupName::shaderType

Dabei ist hitGroupName der Eintragspunktname für die Treffergruppe und shaderType ist einer von:

  • Schnittmenge
  • anyhit
  • closesthit
Bei diesen Werten wird die Groß-/Kleinschreibung beachtet.

Ein Beispielwert ist "myTreeLeafHitGroup::anyhit".

Rückgabewert

Menge des Stapelspeichers in Bytes, der zum Aufrufen des Shaders erforderlich ist. Wenn der Shader im Zustandsobjekt nicht vollständig aufgelöst ist oder der Shader unbekannt oder von einem Typ ist, für den eine Stapelgröße nicht relevant ist, z. B. eine Treffergruppe, wird der Rückgabewert 0xffffffff. Der 32-Bit-0xffffffff-Wert wird für den UINT64-Rückgabewert verwendet, um sicherzustellen, dass schlechte Rückgabewerte nicht verloren gehen, wenn sie bei der Berechnung einer Gesamtpipelinestapelgröße mit anderen Werten zusammengefasst werden.

Hinweise

Diese Methode muss nur aufgerufen werden, wenn die App die Stapelgröße durch Aufrufen von SetPipelineStackSize konfigurieren möchte, anstatt sich auf die konservative Standardstapelgröße zu verlassen. Diese Methode ist nur für Raygenerierungs-Shader, Treffergruppen, Miss-Shader und aufrufbare Shader gültig. Selbst Ray generation Shader können einen Wert ungleich 0 zurückgeben, obwohl sie sich am unteren Rand des Stapels befinden.

Bei Treffergruppen muss die Stapelgröße nach den einzelnen Shadern abgefragt werden, die ihn enthalten (Schnittpunktshader, beliebige Treffer-Shader, nächstgelegene Treffer-Shader), da jeder eine andere Stapelgröße erfordert. Die Stapelgröße kann nicht direkt für diese einzelnen Shader abgefragt werden, da die Art und Weise, wie sie kompiliert werden, von der Gesamttreffergruppe beeinflusst werden kann, die sie enthält. Der Parameter pExportName enthält Syntax zum Identifizieren einzelner Shader innerhalb einer Treffergruppe.

Diese API kann für Auflistungsstatusobjekte oder Raytracing-Pipelinestatusobjekte aufgerufen werden.

Anforderungen

   
Zielplattform Windows
Kopfzeile d3d12.h
Bibliothek D3D12.lib
DLL D3D12.dll

Weitere Informationen

ID3D12StateObjectProperties