Freigeben über


Modifizierer für ps_2_0 und höher

Anweisungsmodifizierer wirken sich auf das Ergebnis der Anweisung aus, bevor sie in das Zielregister geschrieben wird.

Dieser Abschnitt enthält Referenzinformationen zu den Befehlsmodifizierern, die von Pixel shader Version 2_0 und höher implementiert werden.

Name Syntax 2_0 2_x 2_sw 3_0 3_sw
Schwerpunkt _Schwerpunkt x x x x x
Partial_Precision _Pp x x x x x
Sättigen _sat x x x x x

 

Schwerpunkt

Der Centroid-Modifizierer ist ein optionaler Modifizierer, der die Attributinterpolation innerhalb des Bereichs des Primitiven klemmt, wenn ein Multisample-Pixelzentrum nicht vom Primitiven abgedeckt wird. Dies ist unter Centroid Sampling zu sehen.

Sie können den Centroid-Modifizierer wie hier gezeigt auf eine Assemblyanweisung anwenden:

dcl_texcoord0_centroid v0

Sie können den Centroid-Modifizierer auch auf eine Semantik anwenden, wie hier gezeigt:

float4 TexturePointCentroidPS( float4 TexCoord : TEXCOORD0_centroid ) : COLOR0
{
    return tex2D( PointSampler, TexCoord );
}

Darüber hinaus wird für jedes Eingabefarbregister (v#), das mit einer Farbsemantik deklariert ist, automatisch ein Zentrieren angewendet. Farbverläufe, die aus Attributen berechnet werden, die im Zentrierungsschwerpunkt enthalten sind, sind nicht garantiert.

Partielle Genauigkeit

Der Anweisungsmodifizierer für partielle Genauigkeit (_pp) gibt Bereiche an, in denen die partielle Genauigkeit akzeptabel ist, vorausgesetzt, die zugrunde liegende Implementierung unterstützt sie. Implementierungen können den Modifizierer immer ignorieren und die betroffenen Vorgänge mit voller Genauigkeit ausführen.

Der _pp-Modifizierer kann in zwei Kontexten auftreten:

  • In einer Texturkoordinatendeklaration, um die Übergabe von Texturkoordinaten an den Pixel-Shader in form von teilweiser Genauigkeit zu ermöglichen. Dies ermöglicht beispielsweise die Verwendung von Texturkoordinaten zum Weiterleiten von Farbdaten an den Pixel-Shader, der bei teilweiser Genauigkeit schneller ist als in einigen Implementierungen mit voller Genauigkeit. Wenn dieser Modifizierer fehlt, müssen Texturkoordinaten in voller Genauigkeit übergeben werden.
  • In allen Anweisungen, einschließlich Anweisungen zum Laden von Texturen. Dies gibt an, dass die Implementierung die Anweisung mit teilweiser Genauigkeit ausführen und ein Partielles Genauigkeitsergebnis speichern darf. Wenn kein expliziter Modifizierer vorhanden ist, muss die Anweisung mit voller Genauigkeit ausgeführt werden (unabhängig von der Eingabegenauigkeit).

Beispiele:

dcl_texcoord0_pp t1
cmp_pp r0, r1, r2, r3

Sättigung

Der Sättigungsanweisungsmodifizierer (_sat) übersättigt (oder klemmt) das Befehlsergebnis in den Bereich [0, 1], bevor in das Zielregister geschrieben wird.

Der _sat-Anweisungsmodifizierer kann mit jeder Anweisung außer frc - ps, sincos - ps und allen tex*-Anweisungen verwendet werden.

Für ps_2_0, ps_2_x und ps_2_sw kann der _sat-Anweisungsmodifizierer nicht mit Anweisungen verwendet werden, die in Ausgaberegister geschrieben werden (Ausgabefarbregister oder Ausgabetiefenregister). Diese Einschränkung gilt nicht für ps_3_0 und höher.

Beispiel:

dp3_sat r0, v0, c1

Pixel-Shaderanweisungen