ID3D12GraphicsCommandList5::RSSetShadingRateImage-Methode (d3d12.h)

Legt das Bild für die Schattierungsrate des Bildschirmraums für die Schattierung mit variabler Rate (VRS) fest. Weitere Informationen finden Sie unter Schattierung mit variabler Rate (VRS). Für diese Methode ist die Unterstützung von Tier2-Schattierung mit variabler Rate (VRS) erforderlich. Weitere Informationen finden Sie unter D3D12_FEATURE_DATA_D3D12_OPTIONS6 und D3D12_VARIABLE_SHADING_RATE_TIER.

Syntax

void RSSetShadingRateImage(
  ID3D12Resource *shadingRateImage
);

Parameter

shadingRateImage

Typ: ID3D12Resource*

Ein optionaler Zeiger auf eine ID3D12Resource , die ein Bild mit Schattierungsrate im Bildschirmbereich darstellt. Wenn NULL, ist der Effekt identisch mit einem Bild mit der Schattierungsrate, bei dem alle Werte eine Schattierungsrate von 1x1 aufweisen.

Für diese Textur muss der D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE Zustand angewendet werden.

Die Kachelgröße des Schattierungsbilds kann über D3D12_FEATURE_DATA_D3D12_OPTIONS6 bestimmt werden. Die Größe des Schattierungsbilds sollte daher

ceil((float)rtWidth / VRSTileSize), ceil((float)rtHeight / VRSTileSize)

Das Bild mit der Schattierungsrate muss eine 2D-Textur mit einem einzelnen Mip sein und DXGI_FORMAT_R8_UINT formatieren. Jedes Texel muss ein Wert sein, der D3D12_SHADING_RATE entspricht. Es muss layout-D3D12_TEXTURE_LAYOUT_UNKNOWN und darf keine Tiefenschablone, Renderziel, gleichzeitiger Zugriff oder adapterübergreifende Ressource sein.

Da (0, 0) in DirectX oben links ist, führt ein zu kleines oder großes Bild mit Schattierungsrate dazu, dass der bildbezogene Bereich unten oder rechts keinen Bildbereich mit Schattierungsrate aufweist oder das Bild in diese Richtungen erweitert wird. Wenn ein Übermaß vorhanden ist, wird es ignoriert (aber legal), und wenn das Bild zu klein ist, haben alle außerhalb der Grenzen stehenden Bereiche unten und rechts die Standardschattierungsrate von 1x1 vom Bild (dies bedeutet jedoch nicht, dass die endgültige Schattierungsrate ist. Die Kombinatoren werden weiterhin auf diesen 1x1-Standardwert angewendet.

Rückgabewert

Keine

Bemerkungen

Damit sich das Bild für die Schattierungsrate des Bildschirmraums auswirkt, muss ID3D12GraphicsCommandList5::RSSetShadingRate aufgerufen worden sein, um die Kombinatoren für die Schattierung festzulegen. Andernfalls wird bei den Standardkombinatoren (beide D3D12_SHADING_RATE_COMBINER_PASSTHROUGH) das Bild mit der Schattierungsrate des Bildschirmraums bei der Bestimmung der Schattierungsgranularität ignoriert.

Der zweite Combiner, der an [ID3D12GraphicsCommandList5::RSSetShadingRate] übergeben wird, ist der, der für das Schattierungsratenbild gilt, das auftritt, nachdem die globale Schattierungsrate und die Schattierungsrate pro Primitive kombiniert wurden.

Der Algorithmus für die endgültige Schattierungsrate wird durch

postRasterizerRate = ApplyCombiner(Combiners[0], CommandListShadingRate, Primitive->PrimitiveSpecifiedShadingRate);
finalRate = ApplyCombiner(Combiners[1], postRasterizerRate, ScreenSpaceImage[xy]);

wobei ist,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;
    }
}

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 10 Build 20348
Unterstützte Mindestversion (Server) Windows 10 Build 20348
Kopfzeile d3d12.h

Weitere Informationen

Schattierung mit variabler Rate (VRS)