ID3D12GraphicsCommandList5 ::RSSetShadingRateImage, méthode (d3d12.h)
Définit l’image de taux d’ombrage de l’espace d’écran pour l’ombrage à taux variable (VRS). Pour plus d’informations, consultez Trame de fond à taux variable (VRS). Cette méthode nécessite la prise en charge de l’ombrage à taux variable (VRS) tier2. Voir D3D12_FEATURE_DATA_D3D12_OPTIONS6 et D3D12_VARIABLE_SHADING_RATE_TIER.
Syntaxe
void RSSetShadingRateImage(
ID3D12Resource *shadingRateImage
);
Paramètres
shadingRateImage
Type : ID3D12Resource*
Pointeur facultatif vers une source ID3D12Resource représentant une image de taux d’ombrage de l’espace d’écran. Si la valeur est NULL, l’effet est le même que d’avoir une image de taux d’ombrage où toutes les valeurs sont un taux d’ombrage de 1x1.
L’état D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE doit être appliqué à cette texture.
La taille de la vignette de l’image de taux d’ombrage peut être déterminée via D3D12_FEATURE_DATA_D3D12_OPTIONS6. La taille de l’image de taux d’ombrage doit donc être
ceil((float)rtWidth / VRSTileSize), ceil((float)rtHeight / VRSTileSize)
L’image de taux d’ombrage doit être une texture 2D avec un seul mip et mettre en forme DXGI_FORMAT_R8_UINT. Chaque texel doit être une valeur correspondant à D3D12_SHADING_RATE. Il doit avoir une disposition D3D12_TEXTURE_LAYOUT_UNKNOWN et ne peut pas être une ressource de profondeur-gabarit, de cible de rendu, d’accès simultané ou de ressource inter-adaptateurs.
Étant donné que (0, 0) est le haut à gauche dans DirectX, une image de taux d’ombrage trop petit ou grand entraîne l’absence de zone d’image de taux d’ombrage en bas ou à droite, ou l’image s’étend dans ces directions. En cas d’excès, il est ignoré (mais légal) et lorsque l’image est trop petite, toutes les zones hors limites en bas et à droite ont le taux d’ombrage par défaut de 1x1 par rapport à l’image (toutefois, cela ne signifie pas qu’il s’agit du taux d’ombrage final. Les combinateurs sont toujours appliqués à cette valeur par défaut 1x1).
Valeur de retour
None
Remarques
Pour que l’image de taux d’ombrage de l’espace d’écran prenne effet, ID3D12GraphicsCommandList5 ::RSSetShadingRate doit avoir été appelé pour définir les combinateurs pour l’ombrage. Sinon, avec les combiners par défaut ( les deux D3D12_SHADING_RATE_COMBINER_PASSTHROUGH), l’image de taux d’ombrage de l’espace d’écran est ignorée pour déterminer la granularité de l’ombrage.
Le deuxième combinateur passé à [ID3D12GraphicsCommandList5 ::RSSetShadingRate] est celui qui s’applique à l’image de taux d’ombrage, qui se produit après la combinaison du taux d’ombrage global et du taux d’ombrage par primitive.
L’algorithme pour le taux d’ombrage final est déterminé par
postRasterizerRate = ApplyCombiner(Combiners[0], CommandListShadingRate, Primitive->PrimitiveSpecifiedShadingRate);
finalRate = ApplyCombiner(Combiners[1], postRasterizerRate, ScreenSpaceImage[xy]);
où ApplyCombiner
est
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;
}
}
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 10 Build 20348 |
Serveur minimal pris en charge | Windows 10 Build 20348 |
En-tête | d3d12.h |