Guide pratique pour indexer plusieurs flux de sortie

Dans le modèle de nuanceur 5, un nuanceur de géométrie peut prendre en charge jusqu’à 4 flux distincts. Cela signifie qu’un nuanceur unique peut générer entre un et quatre flux de sortie, en fonction du nombre de flux déclarés.

Pour indexer plusieurs flux de sortie

  1. Définissez un flux de données à l’aide d’un type de modèle de flux.

        inout PointStream<OutVertex1> myStream1, 
    
  2. Définissez un deuxième flux de données à l’aide d’un type de modèle de flux.

        inout PointStream<OutVertex2> myStream2 )
    
  3. Sortie des données vers l’un des flux (ou les deux) à l’aide des fonctions intrinsèques de l’objet de sortie de flux (telles que Append ou RestartStrip).

    void MyGS( 
        InVertex verts[2], 
        inout PointStream<OutVertex1> myStream1, 
        inout PointStream<OutVertex2> myStream2 )
    {
        OutVertex1 myVert1 = TransformVertex1( verts[0] );
        OutVertex2 myVert2 = TransformVertex2( verts[1] );
        myStream1.Append( myVert1 );
        myStream2.Append( myVert2 );
    }
    

Lorsque vous utilisez un flux de sortie unique, vous pouvez émettre des bandes de triangles, des bandes de lignes ou des listes de points. Lorsque vous stockez des triangles et des bandes de ligne dans la mémoire tampon du flux sortant, elles sont développées respectivement en listes de triangles et de lignes. Vous pouvez également rastériser un flux et ne pas l’envoyer à une mémoire tampon.

Lorsque vous utilisez plusieurs flux de sortie, tous les flux doivent contenir des points et jusqu’à un flux de sortie peut être envoyé au rastériseur. Plus généralement, une application ne rastérise aucun flux.

Une fois que vous diffusez des données vers une mémoire tampon, vous pouvez utiliser ces données pour afficher n’importe quel type primitif, et pas seulement le type primitif que vous avez utilisé pour remplir la mémoire tampon.

La sortie totale du nuanceur de géométrie est limitée à 1 024 scalaires. Lorsqu’il existe plusieurs flux, le nombre de scalaires est calculé à partir du plus grand type de flux multiplié par le nombre maximal de sommets.

Différences entre le modèle de nuanceur 4 et le modèle de nuanceur 5 :
Modèle de nuanceur 4 :

  • Le nombre maximal de scalaires pour la sortie de flux est de 64.
  • Le masque de registre par composant doit correspondre à l’ensemble de la plage d’index.
Modèle de nuanceur 5 :
  • Le nombre maximal de scalaires pour la sortie de flux est de 128.
  • Le masque de registre par composant n’a pas besoin de correspondre dans la plage d’index.
  • L’indexation dynamique des sorties doit être légale sur tous les flux.
  • Les modes d’interpolation n’ont pas besoin de correspondre pour les flux.

Fonctionnalités du nuanceur Geometry