Valeur de référence du gabarit spécifié du nuanceur (Graphiques Direct3D 12)

L’activation des nuanceurs de pixels pour générer la valeur de référence du gabarit, plutôt que d’utiliser celle spécifiée par l’API, permet un contrôle granulaire très fin sur les opérations de gabarit.

La valeur de référence du gabarit est normalement spécifiée par la méthode ID3D12GraphicsCommandList::OMSetStencilRef . Cette méthode définit la valeur de référence du gabarit sur une granularité par dessin. Toutefois, cette valeur peut être remplacée par le nuanceur de pixels.

Cette fonctionnalité D3D12 (et D3D11.3) permet aux développeurs de lire et d’utiliser la valeur de référence du gabarit (SV_StencilRef) qui est sortie d’un nuanceur de pixels, ce qui permet une granularité par pixel ou par échantillon.

La valeur spécifiée par le nuanceur remplace la valeur de référence spécifiée par l’API pour cet appel, ce qui signifie que la modification affecte à la fois le test de gabarit et lorsque l’opération de gabarit D3D12_STENCIL_OP_REPLACE (un membre de D3D12_STENCIL_OP) est utilisée pour écrire la valeur de référence dans la mémoire tampon de gabarit.

Cette fonctionnalité est facultative dans D3D12 et D3D11.3. Pour tester sa prise en charge, case activée le champ booléen PSSpecifiedStencilRefSupported de D3D12_FEATURE_DATA_D3D12_OPTIONS à l’aide de CheckFeatureSupport.

Voici un exemple d’utilisation de SV_StencilRef dans un nuanceur de pixels :

uint main2(float4 c : COORD) : SV_StencilRef
{
    return uint(c.x);
}

Rendu

Liaison de ressources dans HLSL

Modèle de nuanceur 5.1

Spécification de signatures racine en langage HLSL