fcall (sm5 - asm)
Aufruf der Schnittstellenfunktion.
fcall fp#[arrayIndex][callSite] |
---|
Element | BESCHREIBUNG |
---|---|
Fp # |
[in] Der Funktionszeiger. |
Arrayindex |
[in] Optional. Gibt einen Offset in das Funktionszeigerarray an. Dieser Parameter muss eine ganzzahlige Literale ohne Vorzeichen sein, wenn fp# nicht als indizierbar deklariert wurde. Andernfalls kann arrayIndex von der Form Literalbasis + Offset aus einem Shaderregister sein. Beispiel: fcall fp1[r1.w + 0][0] . |
Callsite |
[in] Optional. Ein literaler Ganzzahloffset ohne Vorzeichen in die ausgewählte Funktionstabelle, wobei ein funktionstext fb# ausgewählt wird, der ausgeführt werden soll. |
Bemerkungen
fp#[arrayIndex][] wird in eine bestimmte Funktionstabelle aufgelöst, die aus der API außerhalb des Shaders aus den in der Deklaration von fp# aufgeführten Funktionstabellenoptionen ausgewählt wurde.
Die Summe von # in fp# und arrayIndex wählt die Funktionstabelle aus. Wenn eine Schnittstelle beispielsweise als fp4[4][3] deklariert wird (Arraygröße 4), sind die folgenden Fcallsgleichwertig: fcall fp4[2][3] und fp5[1][3], weil 4+2 = 5+1.
Beschränkungen
Wenn arrayIndex dynamische Indizierung verwendet, ist das Verhalten nicht definiert, wenn arrayIndex bei benachbarten Shaderaufrufen abweicht, die im Sperrschritt ausgeführt werden können. Der HLSL-Compiler versucht, diesen Fall nicht zuzulassen.
Benachbarte Aufrufe können aufgrund der Flusssteuerung inaktiv sein, da die Ausführung des Sperrschritts dadurch nicht unterbrochen wird.
Wenn fp# + arrayIndex einen Out-of-Bounds-Index angibt, ist das Verhalten nicht definiert.
Für die hier beschriebenen undefinierten Fälle bedeutet dies, dass das Verhalten des aktuellen D3D-Geräts undefiniert wird, einschließlich der Möglichkeit eines Geräteverlusts. Es wird jedoch kein Speicher außerhalb des aktuellen D3D-Geräts zugegriffen oder als Code ausgeführt.
Diese Anweisung gilt für die folgenden Shaderphasen:
Scheitelpunkt | Hull | Domain | Geometrie | Pixel | Compute |
---|---|---|---|---|---|
X | X | X | X | X | X |
Minimales Shadermodell
Diese Anweisung wird in den folgenden Shadermodellen unterstützt:
Shadermodell | Unterstützt |
---|---|
Shadermodell 5 | ja |
Shadermodell 4.1 | Nein |
Shadermodell 4 | Nein |
Shadermodell 3 (DirectX HLSL) | Nein |
Shadermodell 2 (DirectX HLSL) | Nein |
Shadermodell 1 (DirectX HLSL) | Nein |