ID3D12GraphicsCommandList5::RSSetShadingRateImage 메서드(d3d12.h)
VRS(가변 속도 음영)에 대한 화면 공간 음영 속도 이미지를 설정합니다. 자세한 내용은 VRS(가변 속도 음영)를 참조하세요. 이 방법을 사용하려면 Tier2 VRS(가변 속도 음영) 지원이 필요합니다. D3D12_FEATURE_DATA_D3D12_OPTIONS6 및 D3D12_VARIABLE_SHADING_RATE_TIER 참조하세요.
구문
void RSSetShadingRateImage(
ID3D12Resource *shadingRateImage
);
매개 변수
shadingRateImage
형식: ID3D12Resource*
화면 공간 음영 속도 이미지를 나타내는 ID3D12Resource 에 대한 선택적 포인터입니다. NULL인 경우 효과는 모든 값이 1x1의 음영 속도인 음영 속도 이미지를 갖는 것과 같습니다.
이 텍스처에는 D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE 상태가 적용되어야 합니다.
음영 속도 이미지의 타일 크기는 D3D12_FEATURE_DATA_D3D12_OPTIONS6 통해 확인할 수 있습니다. 따라서 음영 속도 이미지의 크기는 여야 합니다.
ceil((float)rtWidth / VRSTileSize), ceil((float)rtHeight / VRSTileSize)
음영 속도 이미지는 단일 밉이 있는 2D 텍스처여야 하며 DXGI_FORMAT_R8_UINT 서식을 지정해야 합니다. 각 텍셀은 D3D12_SHADING_RATE 해당하는 값이어야 합니다. 레이아웃 D3D12_TEXTURE_LAYOUT_UNKNOWN 있어야 하며 깊이 스텐실, 렌더링 대상, 동시 액세스 또는 어댑터 간 리소스일 수 없습니다.
(0, 0)이 DirectX의 왼쪽 위이므로 너무 작거나 큰 음영 속도 이미지가 있으면 아래쪽 또는 오른쪽에 음영 속도 이미지 영역이 없거나 이러한 방향으로 확장되는 이미지가 있습니다. 초과가 있는 경우 무시되고(그러나 법적) 이미지가 너무 작을 때 아래쪽과 오른쪽의 모든 바깥 경계 영역은 이미지에서 기본 음영 속도 1x1을 갖습니다(그러나 이것이 최종 음영 속도임을 의미하지는 않습니다.) 결합자는 이 1x1 기본값에 계속 적용됩니다.)
반환 값
없음
설명
화면 공간 음영 속도 이미지가 적용되려면 ID3D12GraphicsCommandList5::RSSetShadingRate 를 호출하여 음영을 위한 조합기를 설정해야 합니다. 그렇지 않으면 기본 결합자( 둘 다 D3D12_SHADING_RATE_COMBINER_PASSTHROUGH)를 사용하면 음영 세분성을 결정할 때 화면 공간 음영 속도 이미지가 무시됩니다.
[ID3D12GraphicsCommandList5::RSSetShadingRate]에 전달된 두 번째 결합기는 전역 음영 속도와 기본형별 음영 속도를 결합한 후에 발생하는 음영 속도 이미지에 적용되는 결합자입니다.
최종 음영 속도에 대한 알고리즘은 다음을 통해 결정됩니다.
postRasterizerRate = ApplyCombiner(Combiners[0], CommandListShadingRate, Primitive->PrimitiveSpecifiedShadingRate);
finalRate = ApplyCombiner(Combiners[1], postRasterizerRate, ScreenSpaceImage[xy]);
여기서 ApplyCombiner
는 입니다.
UINT ApplyCombiner(D3D12_SHADING_RATE_COMBINER combiner, UINT a, UINT b)
{
MaxShadingRate = options6.AdditionalShadingRatesSupported ? 4 : 2;
switch (combiner)
{
case D3D12_SHADING_RATE_COMBINER_PASSTHROUGH: // default
return a;
case D3D12_SHADING_RATE_COMBINER_OVERRIDE:
return b;
case D3D12_SHADING_RATE_COMBINER_MAX:
return max(a, b);
case D3D12_SHADING_RATE_COMBINER_MIN:
return min(a, b);
case D3D12_SHADING_RATE_COMBINER_SUM:
return min(MaxShadingRate, a + b);
case default:
return a;
}
}
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 10 빌드 20348 |
지원되는 최소 서버 | Windows 10 빌드 20348 |
머리글 | d3d12.h |