Win32 API 日本語リファレンス
ホームGraphics.Direct3D12 › ID3D12ShaderReflection

ID3D12ShaderReflection

COM
IID5a58797d-a72c-478d-8ba2-efc6b0efe88e継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

シェーダーリフレクション インターフェイスは、シェーダーの情報にアクセスします。(ID3D12ShaderReflection)

解説(Remarks)

シェーダーの ID3D12ShaderReflection インターフェイスは、D3DReflect を使用して取得できます。

メモ

d3dcompiler.dll のこの関数がサポートするのは Shader Model 2 ~ 5.1 です。Shader Model 6 のシェーダーリフレクションについては、dxcompiler.dll および dxc.exe と dxcompiler.dll の使用 を参照してください。

メソッド 19

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT GetDesc(D3D12_SHADER_DESC* pDesc)

シェーダーの記述を取得します。

pDescD3D12_SHADER_DESC*outシェーダーの記述。D3D12_SHADER_DESC 構造体へのポインターとして返されます。

戻り値

型: HRESULT

Direct3D 12 の戻り値コードのいずれかを返します。

解説(Remarks)

このメソッドのインターフェイスは、単体配布の DLL である D3DCompiler_xx.dll でホストされています。

vtbl 4 ID3D12ShaderReflectionConstantBuffer* GetConstantBufferByIndex(DWORD Index)

インデックスを指定して定数バッファーを取得します。

IndexDWORDin0 から始まるインデックス。

戻り値

型: ID3D12ShaderReflectionConstantBuffer*

定数バッファーへのポインター(ID3D12ShaderReflectionConstantBuffer インターフェイスを参照)。

解説(Remarks)

定数バッファーは、スカラー定数またはテクスチャ定数をシェーダーに供給します。シェーダーは 1 つ以上の定数バッファーを使用できます。最適なパフォーマンスを得るには、更新頻度に応じて定数をバッファーに分けてください。

このメソッドのインターフェイスは、単体配布の DLL である D3DCompiler_xx.dll でホストされています。

vtbl 5 ID3D12ShaderReflectionConstantBuffer* GetConstantBufferByName(LPSTR Name)

名前を指定して定数バッファーを取得します。

NameLPSTRin定数バッファーの名前。

戻り値

型: ID3D12ShaderReflectionConstantBuffer*

定数バッファーへのポインター(ID3D12ShaderReflectionConstantBuffer インターフェイスを参照)。

解説(Remarks)

定数バッファーは、スカラー定数またはテクスチャ定数をシェーダーに供給します。 シェーダーは 1 つ以上の定数バッファーを使用できます。 最適なパフォーマンスを得るには、更新頻度に応じて定数をバッファーに分けてください。

このメソッドのインターフェイスは、単体配布の DLL である D3DCompiler_xx.dll でホストされています。

vtbl 6 HRESULT GetResourceBindingDesc(DWORD ResourceIndex, D3D12_SHADER_INPUT_BIND_DESC* pDesc)

リソースがシェーダーにどのようにバインドされているかを示す記述を取得します。(ID3D12ShaderReflection.GetResourceBindingDesc)

ResourceIndexDWORDin0 から始まるリソースのインデックス。
pDescD3D12_SHADER_INPUT_BIND_DESC*out入力バインディングの記述へのポインター。D3D12_SHADER_INPUT_BIND_DESC を参照してください。

戻り値

型: HRESULT

Direct3D 12 の戻り値コードのいずれかを返します。

解説(Remarks)

シェーダーは、実行可能コード(コンパイル済みの HLSL 関数)と、シェーダーに入力データを供給する一連のリソースで構成されます。GetResourceBindingDesc は、その中の 1 つのリソースがシェーダーへの入力としてどのようにバインドされているかについての情報を取得します。ResourceIndex パラメーターでリソースのインデックスを指定します。

このメソッドのインターフェイスは、単体配布の DLL である D3DCompiler_xx.dll でホストされています。

vtbl 7 HRESULT GetInputParameterDesc(DWORD ParameterIndex, D3D12_SIGNATURE_PARAMETER_DESC* pDesc)

シェーダーの入力パラメーターの記述を取得します。

ParameterIndexDWORDin0 から始まるパラメーターのインデックス。
pDescD3D12_SIGNATURE_PARAMETER_DESC*outシェーダーの入力シグネチャの記述へのポインター。D3D12_SIGNATURE_PARAMETER_DESC を参照してください。

戻り値

型: HRESULT

Direct3D 12 の戻り値コードのいずれかを返します。

解説(Remarks)

入力パラメーターの記述は、シェーダーシグネチャとも呼ばれます。 シェーダーシグネチャには、パラメーターの順序、データ型、セマンティクスなど、入力パラメーターに関する情報が含まれます。

このメソッドのインターフェイスは、単体配布の DLL である D3DCompiler_xx.dll でホストされています。

vtbl 8 HRESULT GetOutputParameterDesc(DWORD ParameterIndex, D3D12_SIGNATURE_PARAMETER_DESC* pDesc)

シェーダーの出力パラメーターの記述を取得します。

ParameterIndexDWORDin0 から始まるパラメーターのインデックス。
pDescD3D12_SIGNATURE_PARAMETER_DESC*outシェーダーの出力パラメーターの記述。D3D12_SIGNATURE_PARAMETER_DESC 構造体へのポインターとして返されます。

戻り値

型: HRESULT

Direct3D 12 の戻り値コードのいずれかを返します。

解説(Remarks)

出力パラメーターの記述は、シェーダーシグネチャとも呼ばれます。シェーダーシグネチャには、パラメーターの順序、データ型、セマンティクスなど、出力パラメーターに関する情報が含まれます。

このメソッドのインターフェイスは、単体配布の DLL である D3DCompiler_xx.dll でホストされています。

vtbl 9 HRESULT GetPatchConstantParameterDesc(DWORD ParameterIndex, D3D12_SIGNATURE_PARAMETER_DESC* pDesc)

シェーダーのパッチ定数パラメーターの記述を取得します。

ParameterIndexDWORDin0 から始まるパラメーターのインデックス。
pDescD3D12_SIGNATURE_PARAMETER_DESC*outシェーダーの入力シグネチャの記述へのポインター。D3D12_SIGNATURE_PARAMETER_DESC を参照してください。

戻り値

型: HRESULT

Direct3D 12 の戻り値コードのいずれかを返します。

解説(Remarks)

このメソッドのインターフェイスは、単体配布の DLL である D3DCompiler_xx.dll でホストされています。

vtbl 10 ID3D12ShaderReflectionVariable* GetVariableByName(LPSTR Name)

名前を指定して変数を取得します。(ID3D12ShaderReflection.GetVariableByName)

NameLPSTRin変数名を含む文字列へのポインター。

戻り値

型: ID3D12ShaderReflectionVariable*

ID3D12ShaderReflectionVariable インターフェイスを返します。

解説(Remarks)

このメソッドのインターフェイスは、単体配布の DLL である D3DCompiler_xx.dll でホストされています。

vtbl 11 HRESULT GetResourceBindingDescByName(LPSTR Name, D3D12_SHADER_INPUT_BIND_DESC* pDesc)

リソースがシェーダーにどのようにバインドされているかを示す記述を取得します。(ID3D12ShaderReflection.GetResourceBindingDescByName)

NameLPSTRinリソースの定数バッファー名。
pDescD3D12_SHADER_INPUT_BIND_DESC*out入力バインディングの記述へのポインター。D3D12_SHADER_INPUT_BIND_DESC を参照してください。

戻り値

型: HRESULT

Direct3D 12 の戻り値コードのいずれかを返します。

解説(Remarks)

シェーダーは、実行可能コード(コンパイル済みの HLSL 関数)と、シェーダーに入力データを供給する一連のリソースで構成されます。GetResourceBindingDescByName は、その中の 1 つのリソースがシェーダーへの入力としてどのようにバインドされているかについての情報を取得します。Name パラメーターでリソースの名前を指定します。

このメソッドのインターフェイスは、単体配布の DLL である D3DCompiler_xx.dll でホストされています。

vtbl 12 DWORD GetMovInstructionCount()

Mov 命令の数を取得します。(ID3D12ShaderReflection.GetMovInstructionCount)

戻り値

型: UINT

Mov 命令の数を返します。

解説(Remarks)

このメソッドのインターフェイスは、単体配布の DLL である D3DCompiler_xx.dll でホストされています。

vtbl 13 DWORD GetMovcInstructionCount()

Movc 命令の数を取得します。(ID3D12ShaderReflection.GetMovcInstructionCount)

戻り値

型: UINT

Movc 命令の数を返します。

解説(Remarks)

このメソッドのインターフェイスは、単体配布の DLL である D3DCompiler_xx.dll でホストされています。

vtbl 14 DWORD GetConversionInstructionCount()

変換命令の数を取得します。(ID3D12ShaderReflection.GetConversionInstructionCount)

戻り値

型: UINT

変換命令の数を返します。

解説(Remarks)

このメソッドのインターフェイスは、単体配布の DLL である D3DCompiler_xx.dll でホストされています。

vtbl 15 DWORD GetBitwiseInstructionCount()

ビット演算命令の数を取得します。(ID3D12ShaderReflection.GetBitwiseInstructionCount)

戻り値

型: UINT

ビット演算命令の数。

解説(Remarks)

このメソッドのインターフェイスは、単体配布の DLL である D3DCompiler_xx.dll でホストされています。

vtbl 16 D3D_PRIMITIVE GetGSInputPrimitive()

ジオメトリシェーダーの入力プリミティブの記述を取得します。(ID3D12ShaderReflection.GetGSInputPrimitive)

戻り値

型: D3D_PRIMITIVE

入力プリミティブの記述。 D3D_PRIMITIVE_TOPOLOGY を参照してください。

解説(Remarks)

このメソッドのインターフェイスは、単体配布の DLL である D3DCompiler_xx.dll でホストされています。

vtbl 17 BOOL IsSampleFrequencyShader()

シェーダーがサンプル周波数シェーダーかどうかを示します。(ID3D12ShaderReflection.IsSampleFrequencyShader)

戻り値

型: BOOL

シェーダーがサンプル周波数シェーダーの場合は true、それ以外の場合は false を返します。

解説(Remarks)

このメソッドのインターフェイスは、単体配布の DLL である D3DCompiler_xx.dll でホストされています。

vtbl 18 DWORD GetNumInterfaceSlots()

シェーダー内のインターフェイススロットの数を取得します。(ID3D12ShaderReflection.GetNumInterfaceSlots)

戻り値

型: UINT

シェーダー内のインターフェイススロットの数。

解説(Remarks)

このメソッドのインターフェイスは、単体配布の DLL である D3DCompiler_xx.dll でホストされています。

vtbl 19 HRESULT GetMinFeatureLevel(D3D_FEATURE_LEVEL* pLevel)

最小の機能レベルを取得します。(ID3D12ShaderReflection.GetMinFeatureLevel)

pLevelD3D_FEATURE_LEVEL*out最小の機能レベルを表す D3D_FEATURE_LEVEL の列挙値のいずれかへのポインター。

戻り値

型: HRESULT

Direct3D 12 の戻り値コードのいずれかを返します。

解説(Remarks)

このメソッドのインターフェイスは、単体配布の DLL である D3DCompiler_xx.dll でホストされています。

vtbl 20 DWORD GetThreadGroupSize(DWORD* pSizeX, DWORD* pSizeY, DWORD* pSizeZ)

シェーダーのスレッドグループグリッドの X、Y、Z 各次元のサイズを、スレッド数単位で取得します。(ID3D12ShaderReflection.GetThreadGroupSize)

pSizeXDWORD*outoptionalスレッドグループグリッドの x 次元のサイズ(スレッド数単位)へのポインター。最大サイズは 1024 です。
pSizeYDWORD*outoptionalスレッドグループグリッドの y 次元のサイズ(スレッド数単位)へのポインター。最大サイズは 1024 です。
pSizeZDWORD*outoptionalスレッドグループグリッドの z 次元のサイズ(スレッド数単位)へのポインター。最大サイズは 64 です。

戻り値

型: UINT

各次元のサイズの積を計算して求めた、スレッドグループグリッドの合計サイズ(スレッド数単位)を返します。

*pSizeX * *pSizeY * *pSizeZ;

解説(Remarks)

このメソッドのインターフェイスは、単体配布の DLL である D3DCompiler_xx.dll でホストされています。

コンピュートシェーダーを記述する際に定義されるのは、単一のスレッドグループの動作のみです。複数のスレッドグループが必要な場合、それらを発行するのは ID3D12GraphicsCommandList::Dispatch の呼び出しの役割です。

vtbl 21 ULONGLONG GetRequiresFlags()

シェーダーの要件を示すフラグのグループを取得します。(ID3D12ShaderReflection.GetRequiresFlags)

戻り値

型: UINT64

シェーダー要件を示す 1 つ以上の #define フラグの組み合わせを含む値です。各フラグはシェーダーの要件を 1 つ指定します。既定値の 0 は、要件がないことを意味します。

D3D_SHADER_REQUIRES_DOUBLES。シェーダーは、グラフィックスドライバーとハードウェアが double データ型をサポートすることを要求します。

D3D_SHADER_REQUIRES_EARLY_DEPTH_STENCIL。シェーダーは early depth stencil を要求します。

D3D_SHADER_REQUIRES_UAVS_AT_EVERY_STAGE。シェーダーは、すべてのパイプラインステージでのアンオーダードアクセスビュー (UAV) を要求します。

D3D_SHADER_REQUIRES_64_UAVS。シェーダーは 64 個の UAV を要求します。

D3D_SHADER_REQUIRES_MINIMUM_PRECISION。シェーダーは、グラフィックスドライバーとハードウェアが最小精度をサポートすることを要求します。詳細については、HLSL の最小精度の使用 を参照してください。

D3D_SHADER_REQUIRES_11_1_DOUBLE_EXTENSIONS。シェーダーは、グラフィックスドライバーとハードウェアが拡張 double 命令をサポートすることを要求します。詳細については、D3D12_FEATURE_DATA_D3D12_OPTIONSExtendedDoublesShaderInstructions メンバーを参照してください。

D3D_SHADER_REQUIRES_11_1_SHADER_EXTENSIONS。シェーダーは、グラフィックスドライバーとハードウェアがシェーダー内の msad4 組み込み関数をサポートすることを要求します。詳細については、D3D12_FEATURE_DATA_D3D12_OPTIONSSAD4ShaderInstructions メンバーを参照してください。

D3D_SHADER_REQUIRES_LEVEL_9_COMPARISON_FILTERING。シェーダーは、グラフィックスドライバーとハードウェアが Direct3D 9 のシャドウ機能をサポートすることを要求します。

D3D_SHADER_REQUIRES_TILED_RESOURCES。シェーダーは、グラフィックスドライバーとハードウェアがタイル化リソースをサポートすることを要求します。

D3D_SHADER_REQUIRES_STENCIL_REF。シェーダーは、深度ステンシルテスト用の参照値を要求します。詳細については、D3D12_FEATURE_DATA_D3D12_OPTIONS 構造体の PSSpecifiedStencilRefSupported メンバー、および ID3D12GraphicsCommandList::OMSetStencilRef を参照してください。

D3D_SHADER_REQUIRES_INNER_COVERAGE。シェーダーは、グラフィックスドライバーとハードウェアが inner coverage をサポートすることを要求します。詳細については、D3D_NAME の列挙定数 D3D_NAME_INNER_COVERAGE および D3D11_NAME_INNER_COVERAGE を参照してください。

D3D_SHADER_REQUIRES_TYPED_UAV_LOAD_ADDITIONAL_FORMATS。シェーダーは、グラフィックスドライバーとハードウェアが型付きアンオーダードアクセスビュー (UAV) に対する追加フォーマットの読み込みをサポートすることを要求します。D3D12_FEATURE_DATA_D3D12_OPTIONS 構造体の TypedUAVLoadAdditionalFormats メンバーを参照してください。

D3D_SHADER_REQUIRES_ROVS。シェーダーは、グラフィックスドライバーとハードウェアがラスタライザーオーダードビュー (ROV) をサポートすることを要求します。Rasterizer Ordered Views を参照してください。

D3D_SHADER_REQUIRES_VIEWPORT_AND_RT_ARRAY_INDEX_FROM_ANY_SHADER_FEEDING_RASTERIZER。 シェーダーは、グラフィックスドライバーとハードウェアが、ラスタライザーに入力を与える任意のシェーダーからのビューポートおよびレンダーターゲット配列インデックス値をサポートすることを要求します。詳細については、D3D12_FEATURE_DATA_D3D12_OPTIONS 構造体の VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation メンバーを参照してください。

D3D_SHADER_REQUIRES_WAVE_OPS。シェーダーは、グラフィックスドライバーとハードウェアが wave 演算をサポートすることを要求します。詳細については、D3D12_FEATURE_DATA_D3D12_OPTIONS1 構造体の WaveOps メンバーを参照してください。

D3D_SHADER_REQUIRES_INT64_OPS。シェーダーは、グラフィックスドライバーとハードウェアが 64 ビット整数演算をサポートすることを要求します。詳細については、D3D12_FEATURE_DATA_D3D12_OPTIONS1 構造体の Int64ShaderOps メンバーを参照してください。

D3D_SHADER_REQUIRES_VIEW_ID。シェーダーは、グラフィックスドライバーとハードウェアが SV_ViewID を用いたビューインスタンシングをサポートすることを要求します。詳細については、D3D12_FEATURE_DATA_D3D12_OPTIONS3 構造体の ViewInstancingTier メンバーを参照してください。

D3D_SHADER_REQUIRES_BARYCENTRICS。シェーダーは、グラフィックスドライバーとハードウェアが SV_Barycentrics を用いた重心座標 (barycentrics) をサポートすることを要求します。詳細については、D3D12_FEATURE_DATA_D3D12_OPTIONS3 構造体の BarycentricsSupported メンバーを参照してください。

D3D_SHADER_REQUIRES_NATIVE_16BIT_OPS。シェーダーは、グラフィックスドライバーとハードウェアがネイティブの 16 ビット演算をサポートすることを要求します。詳細については、D3D12_FEATURE_DATA_D3D12_OPTIONS4 構造体の Native16BitShaderOpsSupported メンバーを参照してください。

D3D_SHADER_REQUIRES_SHADING_RATE。シェーダーは、グラフィックスドライバーとハードウェアが可変レートシェーディング (VRS) 機能をサポートすることを要求します。詳細については、D3D12_FEATURE_DATA_D3D12_OPTIONS6 構造体の VariableShadingRateTier メンバーを参照してください。

D3D_SHADER_REQUIRES_RAYTRACING_TIER_1_1。シェーダーは、グラフィックスドライバーとハードウェアが DXR tier 1.1 をサポートすることを要求します。詳細については、D3D12_FEATURE_DATA_D3D12_OPTIONS5 構造体の RaytracingTier メンバーを参照してください。

D3D_SHADER_REQUIRES_SAMPLER_FEEDBACK。シェーダーは、グラフィックスドライバーとハードウェアが Sampler Feedback をサポートすることを要求します。詳細については、D3D12_FEATURE_DATA_D3D12_OPTIONS7 構造体の SamplerFeedbackTier メンバーを参照してください。

D3D_SHADER_REQUIRES_ATOMIC_INT64_ON_TYPED_RESOURCE。シェーダーは、グラフィックスドライバーとハードウェアが型付きリソースに対する int64 アトミック演算をサポートすることを要求します。詳細については、D3D12_FEATURE_DATA_D3D12_OPTIONS9 構造体の AtomicInt64OnTypedResourceSupported メンバーを参照してください。

D3D_SHADER_REQUIRES_ATOMIC_INT64_ON_GROUP_SHARED。シェーダーは、グラフィックスドライバーとハードウェアが groupshared メモリに対する int64 アトミック演算をサポートすることを要求します。詳細については、D3D12_FEATURE_DATA_D3D12_OPTIONS9 構造体の AtomicInt64OnGroupSharedSupported メンバーを参照してください。

D3D_SHADER_REQUIRES_DERIVATIVES_IN_MESH_AND_AMPLIFICATION_SHADERS。シェーダーは、グラフィックスドライバーとハードウェアがメッシュシェーダーおよびアンプリフィケーションシェーダーでの微分値をサポートすることを要求します。詳細については、D3D12_FEATURE_DATA_D3D12_OPTIONS9 構造体の DerivativesInMeshAndAmplificationShadersSupported メンバーを参照してください。

D3D_SHADER_REQUIRES_RESOURCE_DESCRIPTOR_HEAP_INDEXING。シェーダーは、グラフィックスドライバーとハードウェアが Dynamic Resources(Shader Model 6.6 の要件)、特に ResourceDescriptorHeap をサポートすることを要求します。詳細については、GitHub の HLSL dynamic resources 仕様を参照してください。

D3D_SHADER_REQUIRES_SAMPLER_DESCRIPTOR_HEAP_INDEXING。シェーダーは、グラフィックスドライバーとハードウェアが Dynamic Resources(Shader Model 6.6 の要件)、特に SamplerDescriptorHeap をサポートすることを要求します。詳細については、GitHub の HLSL dynamic resources 仕様を参照してください。

D3D_SHADER_REQUIRES_WAVE_MMA。シェーダーは、グラフィックスドライバーとハードウェアが Wave MMA をサポートすることを要求します。詳細については、D3D12_FEATURE_DATA_D3D12_OPTIONS9 構造体の WaveMMATier メンバーを参照してください。

D3D_SHADER_REQUIRES_ATOMIC_INT64_ON_DESCRIPTOR_HEAP_RESOURCE。シェーダーは、グラフィックスドライバーとハードウェアが記述子ヒープ上のリソースに対する int64 アトミック演算をサポートすることを要求します。詳細については、D3D12_FEATURE_DATA_D3D12_OPTIONS11 構造体の AtomicInt64OnDescriptorHeapResourceSupported メンバーを参照してください。

解説(Remarks)

d3d12shader.h ヘッダーファイルでは、シェーダー要件フラグは次のように定義されています。

#define D3D_SHADER_REQUIRES_DOUBLES                                                         0x00000001
#define D3D_SHADER_REQUIRES_EARLY_DEPTH_STENCIL                                             0x00000002
#define D3D_SHADER_REQUIRES_UAVS_AT_EVERY_STAGE                                             0x00000004
#define D3D_SHADER_REQUIRES_64_UAVS                                                         0x00000008
#define D3D_SHADER_REQUIRES_MINIMUM_PRECISION                                               0x00000010
#define D3D_SHADER_REQUIRES_11_1_DOUBLE_EXTENSIONS                                          0x00000020
#define D3D_SHADER_REQUIRES_11_1_SHADER_EXTENSIONS                                          0x00000040
#define D3D_SHADER_REQUIRES_LEVEL_9_COMPARISON_FILTERING                                    0x00000080
#define D3D_SHADER_REQUIRES_TILED_RESOURCES                                                 0x00000100
#define D3D_SHADER_REQUIRES_STENCIL_REF                                                     0x00000200
#define D3D_SHADER_REQUIRES_INNER_COVERAGE                                                  0x00000400
#define D3D_SHADER_REQUIRES_TYPED_UAV_LOAD_ADDITIONAL_FORMATS                               0x00000800
#define D3D_SHADER_REQUIRES_ROVS                                                            0x00001000
#define D3D_SHADER_REQUIRES_VIEWPORT_AND_RT_ARRAY_INDEX_FROM_ANY_SHADER_FEEDING_RASTERIZER  0x00002000
#define D3D_SHADER_REQUIRES_WAVE_OPS                                                        0x00004000
#define D3D_SHADER_REQUIRES_INT64_OPS                                                       0x00008000
#define D3D_SHADER_REQUIRES_VIEW_ID                                                         0x00010000
#define D3D_SHADER_REQUIRES_BARYCENTRICS                                                    0x00020000
#define D3D_SHADER_REQUIRES_NATIVE_16BIT_OPS                                                0x00040000
#define D3D_SHADER_REQUIRES_SHADING_RATE                                                    0x00080000
#define D3D_SHADER_REQUIRES_RAYTRACING_TIER_1_1                                             0x00100000
#define D3D_SHADER_REQUIRES_SAMPLER_FEEDBACK                                                0x00200000
#define D3D_SHADER_REQUIRES_ATOMIC_INT64_ON_TYPED_RESOURCE                                  0x00400000
#define D3D_SHADER_REQUIRES_ATOMIC_INT64_ON_GROUP_SHARED                                    0x00800000
#define D3D_SHADER_REQUIRES_DERIVATIVES_IN_MESH_AND_AMPLIFICATION_SHADERS                   0x01000000
#define D3D_SHADER_REQUIRES_RESOURCE_DESCRIPTOR_HEAP_INDEXING                               0x02000000
#define D3D_SHADER_REQUIRES_SAMPLER_DESCRIPTOR_HEAP_INDEXING                                0x04000000
#define D3D_SHADER_REQUIRES_WAVE_MMA                                                        0x08000000
#define D3D_SHADER_REQUIRES_ATOMIC_INT64_ON_DESCRIPTOR_HEAP_RESOURCE                        0x10000000
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_ID3D12ShaderReflection "{5A58797D-A72C-478D-8BA2-EFC6B0EFE88E}"
#usecom global ID3D12ShaderReflection IID_ID3D12ShaderReflection "{}"
#comfunc global ID3D12ShaderReflection_GetDesc                        3 var
#comfunc global ID3D12ShaderReflection_GetConstantBufferByIndex       4 int
#comfunc global ID3D12ShaderReflection_GetConstantBufferByName        5 str
#comfunc global ID3D12ShaderReflection_GetResourceBindingDesc         6 int,var
#comfunc global ID3D12ShaderReflection_GetInputParameterDesc          7 int,var
#comfunc global ID3D12ShaderReflection_GetOutputParameterDesc         8 int,var
#comfunc global ID3D12ShaderReflection_GetPatchConstantParameterDesc  9 int,var
#comfunc global ID3D12ShaderReflection_GetVariableByName              10 str
#comfunc global ID3D12ShaderReflection_GetResourceBindingDescByName   11 str,var
#comfunc global ID3D12ShaderReflection_GetMovInstructionCount         12
#comfunc global ID3D12ShaderReflection_GetMovcInstructionCount        13
#comfunc global ID3D12ShaderReflection_GetConversionInstructionCount  14
#comfunc global ID3D12ShaderReflection_GetBitwiseInstructionCount     15
#comfunc global ID3D12ShaderReflection_GetGSInputPrimitive            16
#comfunc global ID3D12ShaderReflection_IsSampleFrequencyShader        17
#comfunc global ID3D12ShaderReflection_GetNumInterfaceSlots           18
#comfunc global ID3D12ShaderReflection_GetMinFeatureLevel             19 var
#comfunc global ID3D12ShaderReflection_GetThreadGroupSize             20 var,var,var
#comfunc global ID3D12ShaderReflection_GetRequiresFlags               21
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。