ID3D12StateObjectProperties::GetShaderStackSize メソッド (d3d12.h)

HLSL でレイトレーシング シェーダーを呼び出すために必要なスタック メモリの量を取得します。

構文

UINT64 GetShaderStackSize(
  LPCWSTR pExportName
);

パラメーター

pExportName

スタック サイズを取得する状態オブジェクト内のシェーダー エントリポイント。 ヒット グループの場合は、次の構文を使用して、ヒット グループ内の個々のシェーダーを指定する必要があります。

hitGroupName::shaderType

ここで、hitGroupName はヒット グループのエントリポイント名であり、shaderType は次のいずれかです。

  • intersection
  • anyhit
  • closesthit
これらの値はすべて大文字と小文字が区別されます。

値の例は、"myTreeLeafHitGroup::anyhit" です。

戻り値

シェーダーを呼び出すために必要なスタック メモリの量 (バイト単位)。 シェーダーが状態オブジェクトで完全に解決されていない場合、またはシェーダーが不明な場合、またはスタック サイズが関連しない型 (ヒット グループなど) の場合、戻り値は0xffffffff。 UINT64 戻り値には 32 ビットの0xffffffff値が使用され、パイプライン スタックの全体的なサイズを計算する一環として、他の値と合計したときに不適切な戻り値が失われるのを確実にします。

解説

このメソッドは、保守的な既定のスタック サイズに依存するのではなく、 SetPipelineStackSize を呼び出してスタック サイズを構成する場合にのみ呼び出す必要があります。 このメソッドは、レイ生成シェーダー、ヒット グループ、ミス シェーダー、呼び出し可能シェーダーに対してのみ有効です。 レイ生成シェーダーでも、スタックの下部にあるにもかかわらず、0 以外の値が返される場合があります。

ヒット グループの場合、スタック サイズは、それぞれが異なるスタック サイズ要件を持つ可能性があるため、それを構成する個々のシェーダー (交差シェーダー、ヒット シェーダー、最も近いヒット シェーダー) に対してクエリを実行する必要があります。 これらの個々のシェーダーに対してスタック サイズを直接照会することはできません。これらのシェーダーのコンパイル方法は、それらを含む全体的なヒット グループの影響を受ける可能性があるためです。 pExportName パラメーターには、ヒット グループ内の個々のシェーダーを識別するための構文が含まれています。

この API は、コレクション状態オブジェクトまたはレイトレーシング パイプライン状態オブジェクトのいずれかで呼び出すことができます。

要件

   
対象プラットフォーム Windows
ヘッダー d3d12.h
Library D3D12.lib
[DLL] D3D12.dll

関連項目

ID3D12StateObjectProperties