Método ID3D12GraphicsCommandList5::RSSetShadingRateImage (d3d12.h)

Establece la imagen de sombreado de espacio de pantalla para el sombreado de velocidad variable (VRS). Para obtener más información, consulta Sombreado de velocidad variable (VRS). Este método requiere compatibilidad con sombreado de velocidad variable tier2 (VRS ). Consulte D3D12_FEATURE_DATA_D3D12_OPTIONS6 y D3D12_VARIABLE_SHADING_RATE_TIER.

Sintaxis

void RSSetShadingRateImage(
  ID3D12Resource *shadingRateImage
);

Parámetros

shadingRateImage

Tipo: ID3D12Resource*

Puntero opcional a un id3D12Resource que representa una imagen de sombreado de espacio de pantalla. Si es NULL, el efecto es el mismo que tener una imagen de frecuencia de sombreado donde todos los valores son una velocidad de sombreado de 1x1.

Esta textura debe tener aplicado el estado D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE .

El tamaño de mosaico de la imagen de sombreado se puede determinar a través de D3D12_FEATURE_DATA_D3D12_OPTIONS6. Por lo tanto, el tamaño de la imagen de frecuencia de sombreado debe ser

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

La imagen de frecuencia de sombreado debe ser una textura 2D con un solo mip y dar formato a DXGI_FORMAT_R8_UINT. Cada elemento de textura debe ser un valor correspondiente a D3D12_SHADING_RATE. Debe tener D3D12_TEXTURE_LAYOUT_UNKNOWN de diseño y no puede ser una galería de símbolos de profundidad, un destino de representación, un acceso simultáneo o un recurso de adaptador cruzado.

Como (0, 0) es la parte superior izquierda de DirectX, una imagen de frecuencia de sombreado demasiado pequeña o grande da como resultado que la parte inferior o derecha no tenga ningún área de imagen de frecuencia de sombreado, o la imagen que se extiende en estas direcciones. Cuando hay exceso, se omite (pero legal) y cuando la imagen es demasiado pequeña, todas las áreas fuera de límite en la parte inferior y derecha tendrán la velocidad de sombreado predeterminada de 1x1 de la imagen (sin embargo, esto no significa que sea la velocidad de sombreado final. Los combinadores se seguirán aplicando a este valor predeterminado 1x1).

Valor devuelto

None

Observaciones

Para que la imagen de sombreado de espacio de pantalla tenga efecto, se debe haber llamado a ID3D12GraphicsCommandList5::RSSetShadingRate para establecer los combinadores para sombreado. De lo contrario, con los combinadores predeterminados (ambos D3D12_SHADING_RATE_COMBINER_PASSTHROUGH), la imagen de sombreado de espacio de pantalla se omite para determinar la granularidad del sombreado.

El segundo combinador pasado a [ID3D12GraphicsCommandList5::RSSetShadingRate] es el que se aplica a la imagen de frecuencia de sombreado, que se produce después de la velocidad de sombreado global y la velocidad de sombreado por primitivo se han combinado.

El algoritmo para la velocidad de sombreado final viene determinado por

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

donde ApplyCombiner es

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;
    }
}

Requisitos

Requisito Value
Cliente mínimo compatible compilación 20348 de Windows 10
Servidor mínimo compatible compilación 20348 de Windows 10
Encabezado d3d12.h

Consulte también

Sombreado de velocidad variable (VRS)