Exposition des ressources de diffusion en continu HLSL

Une syntaxe HLSL (High Level Shader Language) microsoft spécifique est requise pour prendre en charge les ressources de diffusion en continu dans le modèle de nuanceur 5.

La syntaxe HLSL pour le nuanceur modèle 5 est autorisée uniquement sur les appareils avec prise en charge des ressources de streaming. Chaque méthode HLSL pertinente pour la diffusion en continu des ressources dans le tableau suivant accepte un (feedback) ou deux paramètres facultatifs supplémentaires (clamp et feedback dans cet ordre). Par exemple, une méthode Sample est :

Sample(sampler, location [, offset [, clamp [, feedback] ])

Texture2D.Sample(S,float,int,float,uint) est un exemple de méthode Sample.

Les paramètres offset, clamp et feedback sont facultatifs. Vous devez spécifier tous les paramètres facultatifs jusqu’à ceux dont vous avez besoin, ce qui est cohérent avec les règles C++ pour les arguments de fonction par défaut. Par exemple, si le status de commentaires est nécessaire, les paramètres de décalage et de pince doivent être fournis explicitement à Sample, même s’ils ne sont pas logiquement nécessaires.

Le paramètre clamp est une valeur float scalaire. La valeur littérale clamp=0.0f indique que l’opération de serrage n’est pas effectuée.

Le paramètre de commentaires est une variable uint que vous pouvez fournir à la fonction checkAccessFullyMapped intrinsèque d’interrogation d’accès à la mémoire. Vous ne devez pas modifier ou interpréter la valeur du paramètre de commentaires ; mais, le compilateur ne fournit aucune analyse avancée et diagnostics pour détecter si vous avez modifié la valeur.

Voici la syntaxe de CheckAccessFullyMapped :

bool CheckAccessFullyMapped(in uint FeedbackVar);

CheckAccessFullyMapped interprète la valeur de FeedbackVar et retourne true si toutes les données consultées ont été mappées dans la ressource ; sinon, CheckAccessFullyMapped retourne false.

Si le paramètre clamp ou feedback est présent, le compilateur émet une variante de l’instruction de base. Par exemple, un exemple de ressource de streaming génère l’instruction sample_cl_s .

Si ni pince ni commentaires n’est spécifié, le compilateur émet l’instruction de base, afin qu’il n’y ait aucune modification du comportement actuel.

La valeur de serrage de 0,0f indique qu’aucune pince n’est effectuée ; par conséquent, le compilateur de pilotes peut adapter davantage l’instruction au matériel cible. Si les commentaires sont un enregistrement NULL dans une instruction, le commentaire n’est pas utilisé ; par conséquent, le compilateur de pilotes peut adapter davantage l’instruction à l’architecture cible.

Si le compilateur HLSL déduit que clamp est 0.0f et que les commentaires sont inutilisés, le compilateur émet l’instruction de base correspondante (par exemple, sample au lieu de sample_cl_s).

Si un accès à une ressource de streaming se compose de plusieurs instructions de code d’octet constituant, par exemple, pour les ressources structurées, le compilateur agrège des valeurs de commentaires individuelles via l’opération OR pour produire la valeur de commentaires finale. Par conséquent, vous voyez une seule valeur de commentaires pour un accès aussi complexe.

Il s’agit du tableau récapitulatif des méthodes HLSL qui sont modifiées pour prendre en charge les commentaires et/ou les pinces. Tous ces éléments fonctionnent sur des ressources en mosaïque et non en streaming de toutes les dimensions. Les ressources autres que la diffusion en continu semblent toujours être entièrement mappées.

Objets HLSL Méthodes intrinsèques avec option de commentaires (*) - a également l’option clamp

[RW] Texture2D

[RW] Texture2DArray

TextureCUBE

TextureCUBEArray

Recueillir

CollectRed

CollectGreen

CollectBlue

CollectAlpha

CollectCmp

CollectCmpRed

CollectCmpGreen

CollectCmpBlue

CollectCmpAlpha

[RW] Texture1D

[RW] Texture1DArray

[RW] Texture2D

[RW] Texture2DArray

[RW] Texture3D

TextureCUBE

TextureCUBEArray

Échantillon*

SampleBias*

SampleCmp*

SampleCmpLevelZero

SampleGrad*

SampleLevel

[RW] Texture1D

[RW] Texture1DArray

[RW] Texture2D

Texture2DMS

[RW] Texture2DArray

Texture2DArrayMS

[RW] Texture3D

[RW] Tampon

[RW] ByteAddressBuffer

[RW] StructuredBuffer

Load

 

Accès du pipeline aux ressources de diffusion en continu