Interrogation et écriture de Sampler Feedback
Voici une vue d’ensemble de l’opération d’interrogation et d’écriture de Sampler Feedback.- Une opération d’échantillonnage de textures est définie par une vue de ressource de shader et un état d’échantillonneur pour une texture de scène, des coordonnées UV(W) en entrée et les gradients UV(W) calculés par interpolation. Dans le cas d’un échantillonnage de textures dans une étape de shader autre que le pixel shader, un index de niveau de mip est fourni à la place des gradients.
- Le matériel d’adressage de textures calcule un modèle d’échantillonnage de textures, composé d’un ou plusieurs échantillons comprenant chacun des coordonnées de texture absolues et un index de niveau de mip.
- Les coordonnées absolues de chaque échantillon de texture sont converties en coordonnées absolues par rapport à la carte de feedback.
- L’ensemble d’échantillons de texture est fusionné de l’une des deux manières possibles.
- L’ensemble d’échantillons de texture fusionné est écrit dans la carte de feedback à l’aide d’une sémantique atomique.

Une carte de feedback MipRegionUsed (illustrée à la figure 2) est définie comme une texture avec mips associée à une texture. Elle a la même dimensionnalité de ressource que la texture associée : par exemple, la carte de feedback MipRegionUsed d’une texture en tableau avec mipmaps est une texture en tableau avec mipmaps. La carte de feedback MipRegionUsed d’une texture de volume avec mipmaps est une texture de volume avec mipmaps. Chaque texel de la carte de feedback MipRegionUsed est un ensemble d’indicateurs signalant si cet emplacement a été échantillonné dans la texture associée au sein de cette région. Les texels de la carte de feedback MipRegionUsed utilisent un format d’élément de 8 bits, l’indicateur d’échantillonnage étant enregistré dans chaque élément. La taille de la région d’un texel de carte de feedback MipRegionUsed est une fraction en puissance de deux des dimensions de la texture associée.
Lorsque l’opération matérielle de sampler feedback écrit dans une carte de feedback MipRegionUsed, elle utilise une opération OR atomique pour écrire l’indicateur d’échantillonnage. Pour recueillir un feedback précis, tous les texels de la carte de feedback MipRegionUsed doivent être initialisés à zéro avant l’écriture du feedback.
Programmation matérielle des cartes de feedback
Le moteur de shaders du GPU implémente des dizaines de variantes d’instructions d’échantillonnage d’images, chacune incluant ou excluant diverses options, comme les gradients spécifiés par l’utilisateur et le plafonnement du LOD. Sampler Feedback représenterait une variante supplémentaire de toutes ces opérations existantes. Cependant, au lieu de doubler le nombre d’opcodes de shader, Sampler Feedback est déclenché à l’aide d’un descripteur d’image encodé de manière spéciale, appelé ressource liée. Lorsque le matériel d’adressage de textures (TA) détecte l’état de ressource liée dans le descripteur d’image en entrée, le chemin de sampler feedback est sélectionné à la place du chemin d’échantillonnage de textures standard. Un descripteur de ressource liée est construit en procédant comme suit.- Un descripteur d’image est construit (ou copié) à partir des spécifications de la texture associée, notamment le type de ressource de la texture associée (par exemple, 1D, 2D, tableau 2D et 3D) et, par exemple, les dimensions UVW ainsi que le nombre de mips et de tranches.
- Le descripteur est marqué comme ressource liée en définissant un indicateur et en sélectionnant le type de ressource liée (feedback MinMip ou feedback MipRegionUsed) dans un champ distinct.
- La dimension de la carte de feedback est stockée dans un champ. Elle est encodée sous forme de fractions en puissance de deux des dimensions de base. Des fractions distinctes sont utilisées pour la dimension U et pour les dimensions V ou W.
- Pour les cartes de feedback MinMip, le niveau de mip maximal est défini sur 0 afin de supprimer la chaîne de mips.
- Le format d’image est R8_UINT pour les cartes de feedback MinMip et MipRegionUsed. Le GPU XBOX Series X|S est capable d’effectuer des opérations atomiques sur des valeurs d’octet, alors que les GPU précédents étaient généralement limités aux opérations atomiques 32 bits. Le matériel de sampler feedback utilise un encodage à virgule fixe non signé 5.3 pour les cartes de feedback MinMip.
- Le pilote sélectionne le mode swizzle SW_256B_S pour les cartes de feedback, car il présente les restrictions d’alignement les plus faibles et convient le mieux aux petites textures comme les cartes de feedback.
Restrictions matérielles de Sampler Feedback
Sampler Feedback présente les restrictions matérielles suivantes.- Aucune prise en charge des décalages de texels entiers non nuls
- Aucune prise en charge des images de texture 2D avec anticrénelage multi-échantillon (MSAA)
- Aucune prise en charge des coordonnées non normalisées
- Aucune prise en charge des opérations d’échantillonnage Gather
Filtrage de carte MinMip
Sampler Feedback for Streaming (SFS) introduit le concept de « carte MinMip », qui fournit un plafonnement du LOD minimal par région pour une texture en mosaïque, afin que l’échantillonnage de cette texture pendant le rendu de la scène puisse être limité à l’ensemble des tuiles résidentes. Chaque élément de la carte MinMip représente une région de l’espace UV d’une texture en mosaïque, et sa valeur représente l’index de LOD du plus grand niveau de mip entièrement résident sur toute cette région. Une carte MinMip (illustrée à la figure 3) est utilisée dans le cadre d’une lecture de texture dépendante lors de l’échantillonnage d’une ressource en mosaïque. La carte MinMip est échantillonnée avec le filtre de carte MinMip et les coordonnées UV(W) de la texture, ce qui produit un résultat filtré : une valeur de plafonnement MinMip pour ces coordonnées UV(W). Cette valeur de plafonnement MinMip est ensuite utilisée pour échantillonner la texture en mosaïque, à l’aide de la forme de la méthode d’échantillonnage de textures avec plafonnement par pixel. Figure 3. Représentation de la carte MinMip
Conception du filtre matériel
Le GPU XBOX Series X|S comprend un nouveau filtre bilinéaire modifié, conçu spécifiquement pour filtrer les cartes MinMip et pour succéder au filtre « MIN reduction » introduit avec les ressources en mosaïque (Tiled Resources) de Direct3D 11. Ce nouveau filtre intègre une opération MIN qui déplace la transition bilinéaire entre texels adjacents vers la région du texel de valeur inférieure. En outre, le filtre dispose d’une pente et de décalages configurables qui ajustent son rendu visuel.D’autres détails seront ajoutés à cette section dans une version ultérieure.
