ps_3_0
Un nuanceur de pixels programmable est constitué d’un ensemble d’instructions qui fonctionnent sur les données de pixels. Enregistre les données de transfert dans et hors de l’ALU. Un contrôle supplémentaire peut être appliqué pour modifier l’instruction, les résultats ou les données écrites.
- ps_3_0 Instructions contient une liste des instructions disponibles.
- ps_3_0 Registers répertorie les différents types de registres utilisés par l’ALU du nuanceur de pixels.
- Modificateurs Sont utilisés pour modifier le fonctionnement d’une instruction.
- Le masque d’écriture du registre de destination détermine quels composants du registre de destination sont écrits.
- Les modificateurs de registre source du nuanceur de pixels modifient les données du registre source avant l’exécution de l’instruction.
- La swizzling du registre source permet de contrôler davantage les composants de registre qui sont lus, copiés ou écrits.
Nouvelles fonctionnalités
Ajoutez un registre de visages. Ajoutez un registre de position. Les registres de couleurs (v#) sont désormais entièrement à virgule flottante et les registres de coordonnées de texture (t#) ont été consolidés. Les déclarations d’entrée prennent les noms d’utilisation, et plusieurs utilisations sont autorisées pour les composants d’un registre donné.
Contrôle de flux dynamique
L’appareil prend en charge le contrôle de flux dynamique (si bool - ps, break - ps et break_comp - ps). La profondeur des plages d’imbrication est comprise entre 0 et 24.
Nombre de registres temporaires
Le nombre de registres temporaires pris en charge est de 32.
Profondeur d’imbrication du contrôle de flux statique
L’appel - ps/callnz /call_pred peut être imbriqué à une profondeur maximale de 4. Indépendamment, les instructions boucle - ps/rep - ps peuvent être imbriquées à une profondeur maximale de 4.
Swizzle arbitraire
Le swizzle arbitraire est pris en charge. Consultez Registre source Swizzling.
Instructions de dégradé
Les instructions de dégradé sont prises en charge. Consultez dsx - ps, dsy - ps et texldd - ps.
Prédicat
La prédication des instructions est prise en charge. Consultez Registre des prédicats.
Limite de lecture dépendante
Il n’existe aucune limite de lecture dépendante.
Limite des instructions de texture
Il n’existe aucune limite sur les instructions de texture.
Nombre d’instructions
Chaque nuanceur de pixels est autorisé à partir de 512 jusqu’au nombre d’emplacements dans MaxPixelShader30InstructionSlots (pas plus de 32768). Le nombre d’instructions exécutées peut être beaucoup plus élevé en raison de la prise en charge des boucles. MaxPShaderInstructionsExecuted doit être d’au moins 2^16.
Nombre d’échantillonneurs
Le nombre d’échantillonneurs de texture disponibles est de 16.
Majuscules d’appareil
Si ps_3_0 est pris en charge, les majuscules suivantes sont prises en charge dans le matériel (au minimum) :
Cap | Valeur |
---|---|
MaxTextureWidth, MaxTextureHeight | 4K chacun |
MaxTextureRepeat | 8 Ko |
MaxAnisotropy | 16 |
PixelShaderVersion | 3_0 |
MaxPixelShader30InstructionSlots | 512 |
Les majuscules primitives suivantes sont définies : | D3DPMISCCAPS_BLENDOP, D3DPMISCCAPS_CLIPPLANESCALEDPOINTS, D3DPMISCCAPS_CLIPTLVERTS, D3DPMISCCAPS_CULLCCW, D3DPMISCCAPS_CULLCW, D3DPMISCCAPS_CULLNONE, D3DPMISCCAPS_FOGINFVF, D3DPMISCCAPS_MASKZ |
Les majuscules raster suivantes sont définies : | D3DPRASTERCAPS_MIPMAPLODBIAS, D3DPRASTERCAPS_ANISOTROPY, D3DPRASTERCAPS_COLORPERSPECTIVE D3DPRASTERCAPS_SCISSORTEST dans D3DCAPS9 |
Prise en charge complète des biais de profondeur, notamment : | D3DPRASTERCAPS_SLOPESCALEDEPTHBIAS, D3DPRASTERCAPS_DEPTHBIAS |
Ensemble complet de comparaisons pour les tests de profondeur et alpha, notamment : | Tous les D3DPCMPCAPS dans D3DCAPS9. |
Modes de fusion source | Tous les modes de fusion sont pris en charge en tant que source (sauf D3DPBLENDCAPS_SRCALPHASAT, D3DPBLENDCAPS_BOTHSRCALPHA et D3DPBLENDCAPS_BOTHINVSRCALPHA). |
Les majuscules de texture suivantes sont prises en charge : | D3DPTEXTURECAPS_CUBEMAP, D3DPTEXTURECAPS_MIPCUBEMAP, D3DPTEXTURECAPS_MIPMAP, D3DPTEXTURECAPS_MIPVOLUMEMAP, D3DPTEXTURECAPS_PERSPECTIVE, D3DPTEXTURECAPS_PROJECTED, D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE, D3DPTEXTURECAPS_VOLUMEMAP |
Les éléments suivants sont pris en charge sur les majuscules de filtre de texture, les majuscules de filtre de texture de volume et les majuscules de filtre de texture de cube : | D3DPTFILTERCAPS_MINFPOINT, D3DPTFILTERCAPS_MINFLINEAR, D3DPTFILTERCAPS_MINFANISOTROPIC (ce n’est pas obligatoire pour VolumeTextureFilterCaps et CubeTextureFilterCaps ), D3DPTFILTERCAPS_MIPFPOINT, D3DPTFILTERCAPS_MIPFLINEAR, D3DPTFILTERCAPS_MAGFPOINT, D3DPTFILTERCAPS_MAGFLINEAR |
Les modes d’adresse de texture suivants sont pris en charge aux étapes de vertex et de pixels : | D3DPTADDRESSCAPS_WRAP, D3DPTADDRESSCAPS_MIRROR, D3DPTADDRESSCAPS_CLAMP, D3DPTADDRESSCAPS_BORDER, D3DPTADDRESSCAPS_INDEPENDENTUV, D3DPTADDRESSCAPS_MIRRORONCE |
Toutes les majuscules du nuanceur de pixels sont prises en charge. | DynamicFlowControlDepth = 24, NumTemps = 32, StaticFlowControlDepth = 4, NumInstructionSlots = 512. Les fonctionnalités suivantes sont prises en charge : prédication, swizzles arbitraires et instructions de dégradé. Il n’existe aucune limite de lecture dépendante et aucune limite sur le mélange d’instructions de texture et de mathématiques. |
Toutes les opérations de gabarit sont prises en charge. Cela inclut le gabarit à deux côtés. | Voir D3DSTENCILOP |
Taille de point de prise en charge des appareils par sommet | D3DFVFCAPS_PSIZE dans D3DCAPS9 |
Prise en charge de la non-puissance de 2 textures. | Prise en charge complète ou prise en charge conditionnelle non-pow-2 ; l’appareil ne doit pas avoir la limite de texture carrée uniquement comme dans D3DPTEXTURECAPS_SQUAREONLY. |
Si l’appareil prend en charge plusieurs rendertargets, les majuscules suivantes sont prises en charge : | D3DPMISCCAPS_INDEPENDENTWRITEMASKS, D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING |
Si vs_3_0 est pris en charge | MaxUserClipPlanes dans D3DCAPS9 est 6 |
Rubriques connexes