Les GPU modernes contiennent-ils des sélecteurs de barillet?

8

Je suis conscient que la plupart des GPU modernes, bien que conçus pour la virgule flottante, sont plus ou moins équivalents en termes de performances entières de nos jours, avec quelques mises en garde comme l'absence d'un ajout multiplié fusionné. Je ne sais pas comment cela s'applique aux opérations de quarts cependant. Je fais des Marching Cubes sur GPU, écrivant d'abord une position compressée 32 bits pour chaque cube de surface, puis les décompressant dans une passe ultérieure vers les sommets réels de ce cube, comme ceci:

ivec3 unpackedPos = ivec3( packedPos >> 20 & 0x3FF,
                         packedPos >> 10 & 0x3FF,
                         packedPos & 0x3FF);

Il m'est venu à l'esprit de me demander si les unités de shader ont des sélecteurs de barils en eux de nos jours? Suis-je en train de faire 2 équipes ici ou 30?

EDIT >> Je suis un idiot ... Merci pour les réponses, les gars, utile de savoir, mais je me suis trompé. Je devrais simplement utiliser le format de texture RGB10_A2UI, puis emballer / décompresser avec une seule instruction de chargement / stockage d'image au lieu de jouer avec les décalages de bits moi-même.

RE_EDIT >> Ou pas ... Cette méthode fonctionne apparemment sur les cases rouges mais pas sur les vertes, donc c'est de retour aux décalages de bits.

russ
la source
Les décaleurs 24 bits sont utilisés en virgule flottante simple précision pour aligner les mantisses, donc le compilateur pourrait en générer quelques-unes, mais je ne pense pas que vous en verrez 30.
Daniel M Gessel

Réponses: