Freigeben über


Belichtung von HLSL-Streamingressourcen

Eine bestimmte Microsoft High Level Shader Language (HLSL)-Syntax ist erforderlich, um Streamingressourcen in Shadermodell 5 zu unterstützen.

Die HLSL-Syntax für Shadermodell 5 ist nur auf Geräten mit Unterstützung für Streamingressourcen zulässig. Jede relevante HLSL-Methode für Streamingressourcen in der folgenden Tabelle akzeptiert entweder einen (Feedback) oder zwei (Clamp und Feedback in dieser Reihenfolge) zusätzliche optionale Parameter. Eine Beispielmethode lautet z. B.:

Sample(sampler, location [, offset [, clamp [, feedback] ])

Ein Beispiel für eine Beispielmethode ist Texture2D.Sample(S,float,int,float,uint).

Die Offset-, Clamp- und Feedbackparameter sind optional. Sie müssen alle optionalen Parameter bis zum benötigten Parameter angeben, was mit den C++-Regeln für Standardfunktionsargumente konsistent ist. Wenn beispielsweise der Feedbackstatus erforderlich ist, müssen offset- und clamp-Parameter explizit an Sample bereitgestellt werden, auch wenn sie möglicherweise nicht logisch benötigt werden.

Der Clamp-Parameter ist ein skalarer Float-Wert. Der Literalwert von clamp=0,0f gibt an, dass der Klemmvorgang nicht ausgeführt wird.

Der Feedbackparameter ist eine Uint-Variable , die Sie der systeminternen CheckAccessFullyMapped-Funktion für den Speicherzugriff bereitstellen können. Sie dürfen den Wert des Feedbackparameters nicht ändern oder interpretieren; Der Compiler stellt jedoch keine erweiterte Analyse und Diagnose bereit, um zu erkennen, ob Sie den Wert geändert haben.

Dies ist die Syntax von CheckAccessFullyMapped:

bool CheckAccessFullyMapped(in uint FeedbackVar);

CheckAccessFullyMapped interpretiert den Wert von FeedbackVar und gibt true zurück, wenn alle Daten, auf die zugegriffen wird, in der Ressource zugeordnet wurden. Andernfalls gibt CheckAccessFullyMapped "false" zurück.

Wenn der Clamp- oder Feedbackparameter vorhanden ist, gibt der Compiler eine Variante der grundlegenden Anweisung aus. Beispiel für eine Streamingressource generiert z. B. die sample_cl_s Anweisung.

Wenn weder Clamp noch Feedback angegeben wird, gibt der Compiler die grundlegende Anweisung aus, sodass keine Änderung des aktuellen Verhaltens erfolgt.

Der Klemmwert von 0,0f gibt an, dass keine Klammer ausgeführt wird; Daher kann der Treibercompiler die Anweisung weiter auf die Zielhardware anpassen. Wenn Feedback ein NULL-Register in einer Anweisung ist, wird das Feedback nicht verwendet. Daher kann der Treibercompiler die Anweisung weiter auf die Zielarchitektur anpassen.

Wenn der HLSL-Compiler ergibt, dass die Clamp 0,0f ist und Feedback nicht verwendet wird, gibt der Compiler die entsprechende grundlegende Anweisung aus (z sample . B. anstelle von sample_cl_s).

Wenn ein Streamingressourcenzugriff aus mehreren Bytecodeanweisungen besteht, z. B. für strukturierte Ressourcen, aggregiert der Compiler einzelne Feedbackwerte über den OR-Vorgang, um den endgültigen Feedbackwert zu erzeugen. Daher wird ein einzelner Feedbackwert für einen so komplexen Zugriff angezeigt.

Dies ist die Zusammenfassungstabelle der HLSL-Methoden, die geändert werden, um Feedback und/oder Klemmung zu unterstützen. Diese arbeiten alle an nebeneinander angeordneten und nicht streamingbasierten Ressourcen aller Dimensionen. Nicht-Streamingressourcen scheinen immer vollständig zugeordnet zu sein.

HLSL-Objekte Systeminterne Methoden mit Feedbackoption (*) - verfügt auch über Klammernoption

[RW] Texture2D

[RW] Texture2DArray

TextureCUBE

TextureCUBEArray

Gather

GatherRed

GatherGreen

GatherBlue

GatherAlpha

GatherCmp

GatherCmpRed

GatherCmpGreen

GatherCmpBlue

GatherCmpAlpha

[RW] Texture1D

[RW] Texture1DArray

[RW] Texture2D

[RW] Texture2DArray

[RW] Texture3D

TextureCUBE

TextureCUBEArray

Probe*

SampleBias*

SampleCmp*

SampleCmpLevelZero

SampleGrad*

SampleLevel

[RW] Texture1D

[RW] Texture1DArray

[RW] Texture2D

Texture2DMS

[RW] Texture2DArray

Texture2DArrayMS

[RW] Texture3D

[RW] Puffer

[RW] ByteAddressBuffer

[RW] StructuredBuffer

Einlesen

 

Pipelinezugriff auf Streamingressourcen