ps_3_0
Ein programmierbarer Pixelshader besteht aus einer Reihe von Anweisungen, die mit Pixeldaten arbeiten. Registriert Datenübertragungen in und aus der ALU. Ein zusätzliches Steuerelement kann angewendet werden, um die Anweisung, die Ergebnisse oder die ausgeschriebenen Daten zu ändern.
- ps_3_0 Instructions enthält eine Liste der verfügbaren Anweisungen.
- ps_3_0 Registers listet die verschiedenen Registertypen auf, die vom Pixelshader ALU verwendet werden.
- Modifizierer Werden verwendet, um die Funktionsweise einer Anweisung zu ändern.
- Die Schreibmaske des Zielregisters bestimmt, welche Komponenten des Zielregisters geschrieben werden.
- Pixelshader-Quellregistermodifizierer ändern die Quellregisterdaten, bevor die Anweisung ausgeführt wird.
- Quellregister Swizzling bietet zusätzliche Kontrolle darüber, welche Registerkomponenten gelesen, kopiert oder geschrieben werden.
Neue Funktionen
Fügen Sie ein Gesichtsregister hinzu. Fügen Sie ein Positionsregister hinzu. Farbregister (v#) sind jetzt vollständig gleitkomma, und die Texturkoordinatenregister (t#) wurden konsolidiert. Eingabedeklarationen verwenden die Verwendungsnamen, und für Komponenten eines bestimmten Registers sind mehrere Verwendungen zulässig.
Dynamische Flusssteuerung
Das Gerät unterstützt die dynamische Flusssteuerung (wenn bool - ps, break - ps und break_comp - ps). Die Schachtelungstiefe reicht von 0 bis 24.
Anzahl temporärer Register
Die Anzahl der unterstützten temporären Register beträgt 32.
Statische Flusssteuerung Schachtelungstiefe
Der Aufruf - ps/callnz /call_pred kann auf eine maximale Tiefe von 4 geschachtelt werden. Unabhängig davon können Schleifen -ps/rep - ps-Anweisungen auf eine maximale Tiefe von 4 geschachtelt werden.
Beliebiger Swizzle
Beliebiger Swizzle wird unterstützt. Weitere Informationen finden Sie unter Source Register Swizzling.
Farbverlaufsanweisungen
Farbverlaufsanweisungen werden unterstützt. Siehe dsx - ps, dsy - ps und texldd - ps.
Prädikation
Die Prädication von Anweisungen wird unterstützt. Siehe Prädikatregister.
Abhängiger Lesegrenzwert
Es gibt keine abhängigen Lesebeschränkungen.
Texturanweisungslimit
Es gibt keine Beschränkung für Texturanweisungen.
Anweisungsanzahl
Jeder Pixelshader ist von 512 bis zur Anzahl der Slots in MaxPixelShader30InstructionSlots (nicht mehr als 32768) zulässig. Die Anzahl der Ausgeführten Anweisungen kann aufgrund der Schleifenunterstützung viel höher sein. MaxPShaderInstructionsExecuted sollte mindestens 2^16 sein.
Sampleranzahl
Die Anzahl der verfügbaren Textur-Sampler beträgt 16.
Geräte-FESTSTELLTASTE
Wenn ps_3_0 unterstützt wird, werden die folgenden Obergrenzen in der Hardware (mindestens) unterstützt:
Cap | Wert |
---|---|
MaxTextureWidth, MaxTextureHeight | jeweils 4.000 |
MaxTextureRepeat | 8 KB |
MaxAnisotropie | 16 |
PixelShaderVersion | 3_0 |
MaxPixelShader30InstructionSlots | 512 |
Die folgenden Grundkappen sind festgelegt: | D3DPMISCCAPS_BLENDOP, D3DPMISCCAPS_CLIPPLANESCALEDPOINTS, D3DPMISCCAPS_CLIPTLVERTS, D3DPMISCCAPS_CULLCCW, D3DPMISCCAPS_CULLCW, D3DPMISCCAPS_CULLNONE, D3DPMISCCAPS_FOGINFVF, D3DPMISCCAPS_MASKZ |
Die folgenden Rasterkappen werden festgelegt: | D3DPRASTERCAPS_MIPMAPLODBIAS, D3DPRASTERCAPS_ANISOTROPY, D3DPRASTERCAPS_COLORPERSPECTIVE, D3DPRASTERCAPS_SCISSORTEST in D3DCAPS9 |
Vollständige Unterstützung für Tiefenverzerrungen, einschließlich: | D3DPRASTERCAPS_SLOPESCALEDEPTHBIAS, D3DPRASTERCAPS_DEPTHBIAS |
Vollständiger Satz von Vergleichen für Tiefen- und Alphatests, einschließlich: | Alle D3DPCMPCAPS in D3DCAPS9. |
Quellmischungsmodi | Alle Mischmodi werden als Quelle unterstützt (außer D3DPBLENDCAPS_SRCALPHASAT, D3DPBLENDCAPS_BOTHSRCALPHA und D3DPBLENDCAPS_BOTHINVSRCALPHA). |
Die folgenden Texturkappen werden unterstützt: | D3DPTEXTURECAPS_CUBEMAP, D3DPTEXTURECAPS_MIPCUBEMAP, D3DPTEXTURECAPS_MIPMAP, D3DPTEXTURECAPS_MIPVOLUMEMAP, D3DPTEXTURECAPS_PERSPECTIVE, D3DPTEXTURECAPS_PROJECTED, D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE, D3DPTEXTURECAPS_VOLUMEMAP |
Folgendes wird für Texturfilterkappen, Volumentexturfilterkappen und Würfeltexturfilterkappen unterstützt: | D3DPTFILTERCAPS_MINFPOINT, D3DPTFILTERCAPS_MINFLINEAR, D3DPTFILTERCAPS_MINFANISOTROPIC (Dies ist für VolumeTextureFilterCaps und CubeTextureFilterCaps nicht erforderlich), D3DPTFILTERCAPS_MIPFPOINT, D3DPTFILTERCAPS_MIPFLINEAR, D3DPTFILTERCAPS_MAGFPOINT, D3DPTFILTERCAPS_MAGFLINEAR |
Die folgenden Texturadressmodi werden in Scheitel- und Pixelphasen unterstützt: | D3DPTADDRESSCAPS_WRAP, D3DPTADDRESSCAPS_MIRROR, D3DPTADDRESSCAPS_CLAMP, D3DPTADDRESSCAPS_BORDER, D3DPTADDRESSCAPS_INDEPENDENTUV, D3DPTADDRESSCAPS_MIRRORONCE |
Alle Pixelshader-Feststelltaste werden unterstützt. | DynamicFlowControlDepth = 24, NumTemps = 32, StaticFlowControlDepth = 4, NumInstructionSlots = 512. Die folgenden Features werden unterstützt: Prädication, beliebige Swizzles und Farbverlaufsanweisungen. Es gibt keine Beschränkung für abhängige Lesevorgänge und keine Beschränkung für die Mischung aus Textur und mathematischen Anweisungen. |
Alle Schablonenvorgänge werden unterstützt. Dies umfasst zweiseitige Schablone. | Siehe D3DSTENCILOP |
Größe des Geräteunterstützungspunkts pro Scheitelpunkt | D3DFVFCAPS_PSIZE in D3DCAPS9 |
Nicht-Leistung von 2 Texturunterstützung. | Entweder vollständiger Support oder bedingter Nicht-Pow-2-Support; Das Gerät sollte nicht nur die quadratische Textureinschränkung aufweisen, wie in D3DPTEXTURECAPS_SQUAREONLY. |
Wenn das Gerät mehrere Rendertargets unterstützt, werden die folgenden Obergrenzen unterstützt: | D3DPMISCCAPS_INDEPENDENTWRITEMASKS, D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING |
Wenn vs_3_0 unterstützt wird | MaxUserClipPlanes in D3DCAPS9 ist 6 |
Zugehörige Themen