ps _ 1 _ 1, ps _ 1 _ 2, ps _ 1 _ 3, ps _ 1 _ 4

Der Pixelshaderassemblierer besteht aus einer Reihe von Anweisungen, die mit Pixeldaten arbeiten, die in Registern enthalten sind. Vorgänge werden als Anweisungen ausgedrückt, die aus einem Operator und einem oder mehreren Operanden bestehen. Anweisungen verwenden Register zum Übertragen von Daten in und aus der ALU des Pixel-Shaders. Register können auch von einigen Anweisungen verwendet werden, um temporäre Ergebnisse zu speichern.

Hinweis

HLSL-Unterstützung für Pixelshader 1.x ist veraltet.

Instructions

Es gibt zwei Hauptkategorien von Pixelshaderanweisungen: arithmetische Anweisungen und Texturadressierungsanweisungen. Arithmetische Anweisungen ändern Farbdaten. Texturadressierungsvorgänge verarbeiten Texturkoordinatendaten und probieren in den meisten Fällen eine Textur aus. Pixel-Shaderanweisungen werden pixelweise ausgeführt. Das heißt, sie haben keine Kenntnis von anderen Pixeln in der Pipeline.

Texturadressierungsanweisungen nutzen jeweils einen Slot, aber arithmetische Anweisungen können gekoppelt werden, um sowohl Farbkomponenten (RGB) als auch eine Alphakomponentenanweisung in einem einzelnen Slot zu ermöglichen.

ps _ 1 _ 1, ps _ 1 _ 2, ps _ 1 _ 3, ps _ 1 _ 4 Anweisungen enthält eine Liste der verfügbaren Anweisungen.

Wenn Multisampling aktiviert ist, werden Pixel-Shader nur einmal pro Pixel und nicht einmal für jedes Subpixel ausgeführt. Multisampling erhöht nur die Auflösung von Polygonkanten sowie Tiefen- und Schablonentests. Wenn beispielsweise 3x3-Multisampling aktiviert ist und ein zu rasterndes Dreieck fünf der neun Subpixel für ein bestimmtes Pixel abdeckt, wird der Pixelshader einmal ausgeführt, und das gleiche Farbergebnis wird auf alle fünf Subpixel angewendet.

Register

ps _ 1 _ 1 _ _ ps _ 1 _ 2 ps _ _ _ 1 _ 3 ps _ _ _ 1 _ 4 Register listet die verschiedenen Register auf, die von der Shader-ALU verwendet werden.

Modifizierer

Modifizierer für PS _ 1 _ X können verwendet werden, um die Funktionalität einer Anweisung oder der Daten zu ändern, die aus einem Register gelesen oder in ein Register geschrieben werden.

Direct3D 9 erfordert Zwischenberechnungen, um mindestens 8-Bit-Genauigkeit für alle Oberflächenformate beizubehalten. Es wird sowohl eine höhere Genauigkeit (12 Bit) für die In-Stage-Mathematik als auch eine Sättigung von 8 Bits zwischen Texturstufen empfohlen. Es werden keine änderbaren Rundungsmodi oder Ausnahmen unterstützt. Die Multiplikation sollte mit einer Rundung auf die nächste Genauigkeit unterstützt werden, um den Genauigkeitsverlust auf ein Minimum zu beschränken.

Sampleranzahl

Die Anzahl der verfügbaren Textur-Sampler ist:

  • Für ps _ 1 _ 0 bis ps _ 1 _ 3 beträgt das Maximum 4.
  • Bei PS _ 1 _ 4 beträgt der Höchstwert 6.

Pixelshader