다음을 통해 공유


ID3D12GraphicsCommandList5::RSSetShadingRateImage 메서드(d3d12.h)

VRS(가변 속도 음영)에 대한 화면 공간 음영 속도 이미지를 설정합니다. 자세한 내용은 VRS(가변 속도 음영)를 참조하세요. 이 방법을 사용하려면 Tier2 VRS(가변 속도 음영) 지원이 필요합니다. D3D12_FEATURE_DATA_D3D12_OPTIONS6D3D12_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

추가 정보

VRS(Variable-Rate Shading)