ps_3_0

Un nuanceur de pixels programmable est constitué d’un ensemble d’instructions qui fonctionnent sur des données de pixels. Inscrit les données de transfert dans et hors de l’ALU. Vous pouvez appliquer un contrôle supplémentaire pour modifier l’instruction, les résultats ou les données écrites.

Nouvelles fonctionnalités

Ajoutez un registre de visages. Ajoutez un registre de position. Les registres de couleurs (v#) sont désormais entièrement flottants 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 - pset break_comp - ps). La profondeur de l’imbrication varie de 0 à 24.

Nombre de registres temporaires

Le nombre de registres temporaires pris en charge est 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, boucle - ps/rep - ps instructions peuvent être imbriquées à une profondeur maximale de 4.

Arbitraire Swizzle

Un swizzle arbitraire est pris en charge. Consultez Registre source swizzling.

Instructions de dégradé

Les instructions de dégradé sont prises en charge. Voir dsx - ps, dsy - pset texldd - ps.

Prédication

La prédication des instructions est prise en charge. Consultez registre de 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é n’importe où entre 512 et le 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 du bouclage. MaxPShaderInstructionsExecuted doit avoir au moins 2^16.

Nombre d’échantillonneurs

Le nombre d’échantillonneurs de texture disponibles est de 16.

Caps d’appareil

Si ps_3_0 est pris en charge, les limites suivantes sont prises en charge dans le matériel (au minimum) :

Casquette Valeur
MaxTextureWidth, MaxTextureHeight 4K chacun
MaxTextureRepeat 8K
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 de raster suivantes sont définies : D3DPRASTERCAPS_MIPMAPLODBIAS, D3DPRASTERCAPS_ANISOTROPY, D3DPRASTERCAPS_COLORPERSPECTIVE, D3DPRASTERCAPS_SCISSORTEST dans D3DCAPS9
Prise en charge complète du biais de profondeur, notamment : D3DPRASTERCAPS_SLOPESCALEDEPTHBIAS, D3DPRASTERCAPS_DEPTHBIAS
Ensemble complet de comparaisons pour le test de profondeur et alpha, notamment : Toutes les D3DPCMPCAPS dans D3DCAPS9.
Modes de fusion de sources 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 (Cela 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 de textures et d’instructions mathématiques.
Toutes les opérations de gabarit sont prises en charge. Cela inclut deux gabarits latéral. Voir D3DSTENCILOP
Taille du point de prise en charge de l’appareil par vertex D3DFVFCAPS_PSIZE dans D3DCAPS9
Prise en charge de la texture sans puissance de 2. 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 limites suivantes sont prises en charge : D3DPMISCCAPS_INDEPENDENTWRITEMASKS, D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING
Si vs_3_0 est pris en charge MaxUserClipPlanes dans D3DCAPS9 est 6

 

nuanceurs de pixels