Belichtung von HLSL-StreamingressourcenHLSL streaming resources exposure

Zur Unterstützung von Streamingressourcen in Shader-Modell 5ist eine bestimmte Microsoft High Level Shader Language (HLSL)-Syntax erforderlich.A specific Microsoft High Level Shader Language (HLSL) syntax is required to support streaming resources in Shader Model 5.

Die HLSL-Syntax für Shader Model 5 ist nur auf Geräten mit Unterstützung für Streamingressourcen zulässig.The HLSL syntax for Shader Model 5 is allowed only on devices with streaming resources support. Jede relevante HLSL-Methode für das Streamen von Ressourcen in der folgenden Tabelle akzeptiert entweder ein (Feedback) oder zwei (in dieser Reihenfolge einspannen und Feedback) zusätzliche optionale Parameter.Each relevant HLSL method for streaming resources in the following table accepts either one (feedback) or two (clamp and feedback in this order) additional optional parameters. Beispielsweise ist eine Beispiel Methode wie folgt:For example, a Sample method is:

Sample (Sampler, Location [ , Offset [ , Clamp [ , Feedback ] ] ] )Sample(sampler, location [, offset [, clamp [, feedback] ] ])

Ein Beispiel für eine Beispiel Methode ist Texture2D. Sample (S, float, int, float, uint).An example of a Sample method is Texture2D.Sample(S,float,int,float,uint).

Die Offset-, Clamp-und Feedback-Parameter sind optional.The offset, clamp and feedback parameters are optional. Sie müssen alle optionalen Parameter angeben, die Sie benötigen. Dies entspricht den C++-Regeln für Standard Funktionsargumente.You must specify all optional parameters up to the one you need, which is consistent with the C++ rules for default function arguments. Wenn der Feedback Status z. b. erforderlich ist, müssen sowohl Offset-als auch Klammer Parameter explizit für Stichprobenbereitgestellt werden, auch wenn Sie möglicherweise nicht logisch benötigt werden.For example, if the feedback status is needed, both offset and clamp parameters need to be explicitly supplied to Sample, even though they may not be logically needed.

Der Klammer Parameter ist ein skalarer float-Wert.The clamp parameter is a scalar float value. Der Literalwert von Clamp = 0,0 f gibt an, dass der Klammer Vorgang nicht ausgeführt wird.The literal value of clamp=0.0f indicates that the clamp operation isn't performed.

Der Feedback Parameter ist eine uint -Variable, die Sie der systeminternen checkaccessfullymapping -Funktion für den Speicherzugriff zur Abfrage bereitstellen können.The feedback parameter is a uint variable that you can supply to the memory-access querying intrinsic CheckAccessFullyMapped function. Der Wert des Parameters "Feedback" darf nicht geändert oder interpretiert werden. der Compiler bietet jedoch keine erweiterte Analyse und Diagnose, um zu ermitteln, ob Sie den Wert geändert haben.You must not modify or interpret the value of the feedback parameter; but, the compiler doesn't provide any advanced analysis and diagnostics to detect whether you modified the value.

Dies ist die Syntax von checkaccessfullymapping:Here is the syntax of CheckAccessFullyMapped:

bool checkaccessfullymapping (in uint feedbackvar);bool CheckAccessFullyMapped(in uint FeedbackVar);

Checkaccessfullymapping interpretiert den Wert von feedbackvar und gibt true zurück, wenn alle Daten, auf die zugegriffen wird, in der Ressource zugeordnet wurden. Andernfalls gibt checkaccessfullymapping den Wert false zurück.CheckAccessFullyMapped interprets the value of FeedbackVar and returns true if all data being accessed was mapped in the resource; otherwise, CheckAccessFullyMapped returns false.

Wenn entweder der Parameter "Clamp" oder "Feedback" vorhanden ist, gibt der Compiler eine Variante der Grund Anweisung aus.If either the clamp or feedback parameter is present, the compiler emits a variant of the basic instruction. Beispielsweise generiert Sample of a Streaming Resource die- sample_cl_s Anweisung.For example, sample of a streaming resource generates the sample_cl_s instruction.

Wenn weder "Clamp" noch "Feedback" angegeben ist, gibt der Compiler die grundlegende Anweisung aus, sodass es keine Änderung des aktuellen Verhaltens gibt.If neither clamp nor feedback is specified, the compiler emits the basic instruction, so that there is no change from the current behavior.

Der Klammer Wert von 0,0 f gibt an, dass keine Klammer ausgeführt wird. Daher kann der Treiber Compiler die Anweisung weiter an die Zielhardware anpassen.The clamp value of 0.0f indicates that no clamp is performed; thus, the driver compiler can further tailor the instruction to the target hardware. Wenn Feedback ein NULL-Register in einer Anweisung ist, wird das Feedback nicht verwendet. Daher kann der Treiber Compiler die Anweisung weiter an die Zielarchitektur anpassen.If feedback is a NULL register in an instruction, the feedback is unused; thus, the driver compiler can further tailor the instruction to the target architecture.

Wenn der HLSL-Compiler diese Klammer als 0,0 f ausgibt und Feedback nicht verwendet wird, gibt der Compiler die entsprechende Grund Anweisung aus (z sample . b sample_cl_s . anstelle von).If the HLSL compiler infers that clamp is 0.0f and feedback is unused, the compiler emits the corresponding basic instruction (for example, sample rather than sample_cl_s).

Wenn ein Zugriff auf Streaming-Ressourcen aus mehreren einzelnen Anweisungen für den Byte Code besteht (z. b. bei strukturierten Ressourcen), aggregiert der Compiler einzelne Feedback Werte über den Vorgang oder, um den endgültigen Feedback Wert zu erhalten.If a streaming resource access consists of several constituent byte code instructions, for example, for structured resources, the compiler aggregates individual feedback values via the OR operation to produce the final feedback value. Aus diesem Grund wird ein einzelner Feedback Wert für einen solchen komplexen Zugriff angezeigt.Therefore, you see a single feedback value for such a complex access.

Dies ist die Zusammenfassungs Tabelle der HLSL-Methoden, die zur Unterstützung von Feedback und/oder der Klammer geändert werden.This is the summary table of HLSL methods that are changed to support feedback and/or clamp. Diese Vorgänge funktionieren bei Kacheln und nicht-Streaming-Ressourcen aller Dimensionen.These all work on tiled and non-streaming resources of all dimensions. Nicht Streaming-Ressourcen scheinen immer vollständig zugeordnet zu sein.Non-streaming resources always appear to be fully mapped.

HLSL-Objekte HLSL objects Intrinsische Methoden mit der Option "Feedback" (\*)-auch die Option "Klemme"Intrinsic methods with feedback option (\*) - also has clamp option

RW Texture2D[RW]Texture2D

RW Texture2DArray[RW]Texture2DArray

TexturecubeTextureCUBE

TexturecubearrayTextureCUBEArray

InformierenGather

GatherredGatherRed

GathergrünGatherGreen

GatherblueGatherBlue

GatheralphaGatherAlpha

GathercmpGatherCmp

GathercmpredGatherCmpRed

GathercmpgreenGatherCmpGreen

GathercmpblueGatherCmpBlue

GathercmpalphaGatherCmpAlpha

RW Texture1D[RW]Texture1D

RW Texture1DArray[RW]Texture1DArray

RW Texture2D[RW]Texture2D

RW Texture2DArray[RW]Texture2DArray

RW Texture3D[RW]Texture3D

TexturecubeTextureCUBE

TexturecubearrayTextureCUBEArray

BlutprobeSample\*

Samplebias \*SampleBias\*

Samplecmp \*SampleCmp\*

SamplecmplevelzeroSampleCmpLevelZero

Samplegrad \*SampleGrad\*

SamplelevelSampleLevel

RW Texture1D[RW]Texture1D

RW Texture1DArray[RW]Texture1DArray

RW Texture2D[RW]Texture2D

Texture2DMSTexture2DMS

RW Texture2DArray[RW]Texture2DArray

Texture2DArrayMSTexture2DArrayMS

RW Texture3D[RW]Texture3D

RW Ert[RW]Buffer

RW Byteaddressbuffer[RW]ByteAddressBuffer

RW Structuredbuffer[RW]StructuredBuffer

LadenLoad

 

Verwandte ThemenRelated topics

Pipelinezugriff auf StreamingressourcenPipeline access to streaming resources