다음을 통해 공유


ID3D12StateObjectProperties::GetShaderStackSize 메서드(d3d12.h)

HLSL에서 광선 추적 셰이더를 호출하는 데 필요한 스택 메모리 양을 가져옵니다.

구문

UINT64 GetShaderStackSize(
  LPCWSTR pExportName
);

매개 변수

pExportName

스택 크기를 검색할 상태 개체의 셰이더 진입점입니다. 적중 그룹의 경우 구문을 사용하여 적중 그룹 내의 개별 셰이더를 지정해야 합니다.

hitGroupName::shaderType

여기서 hitGroupName은 적중 그룹의 진입점 이름이고 shaderType은 다음 중 하나입니다.

  • 교집합
  • anyhit
  • closesthit
이러한 값은 모두 대/소문자를 구분합니다.

예제 값은 "myTreeLeafHitGroup::anyhit"입니다.

반환 값

셰이더를 호출하는 데 필요한 스택 메모리 양(바이트)입니다. 셰이더가 상태 개체에서 완전히 확인되지 않거나 셰이더를 알 수 없거나 스택 크기가 적중 그룹과 관련이 없는 형식인 경우 반환 값은 0xffffffff. 32비트 0xffffffff 값은 UINT64 반환 값에 사용되어 전체 파이프라인 스택 크기를 계산하는 과정의 일부로 다른 값으로 합산할 때 잘못된 반환 값이 손실되지 않도록 합니다.

설명

이 메서드는 앱이 보수적인 기본 스택 크기에 의존하지 않고 SetPipelineStackSize를 호출하여 스택 크기를 구성하려는 경우에만 호출해야 합니다. 이 메서드는 광선 생성 셰이더, 적중 그룹, 누락된 셰이더 및 호출 가능한 셰이더에만 유효합니다. 광선 생성 셰이더도 스택의 맨 아래에 있음에도 불구하고 0이 아닌 값을 반환할 수 있습니다.

적중 그룹의 경우 스택 크기가 각기 다른 스택 크기 요구 사항이 있을 수 있으므로 스택 크기를 구성하는 개별 셰이더(교차 셰이더, 적중 셰이더, 가장 가까운 적중 셰이더)에 대해 쿼리해야 합니다. 스택 크기는 이러한 개별 셰이더에서 직접 쿼리할 수 없습니다. 이러한 셰이더가 컴파일되는 방식은 해당 셰이더를 포함하는 전체 적중 그룹의 영향을 받을 수 있기 때문에 이러한 셰이더에 대해 직접 쿼리할 수 없습니다. pExportName 매개 변수에는 적중 그룹 내에서 개별 셰이더를 식별하기 위한 구문이 포함되어 있습니다.

이 API는 컬렉션 상태 개체 또는 광선 추적 파이프라인 상태 개체에서 호출할 수 있습니다.

요구 사항

   
대상 플랫폼 Windows
헤더 d3d12.h
라이브러리 D3D12.lib
DLL D3D12.dll

추가 정보

ID3D12StateObjectProperties