Freigeben über


Ablaufsteuerungs-Schachtelungsgrenzwerte

Anweisungen zur Vertex-Shaderflusssteuerung weisen zwei spezielle Einschränkungen auf. Schachtelungstiefe schränkt die Anzahl der Anweisungen ein, die innerhalb des anderen aufgerufen werden können. Darüber hinaus verfügt jede Anweisung über eine Anweisungsplatzanzahl, die für die maximale Anzahl von Anweisungen gilt, die ein Shader unterstützen kann.

Anmerkung

Wenn Sie die HLSL-Shaderprofile *_4_0_level_9_x verwenden, verwenden Sie implizit die Shadermodell 2.x Profile, um Direct3D 9-fähige Hardware zu unterstützen. Shadermodell 2.x-Profile unterstützen ein eingeschränktes Ablaufsteuerungsverhalten als das Shadermodell 4.x und neuere Profile.

 

Tiefenanzahl pro Anweisung für vs_2_0

Jede Anweisung zählt für mindestens ein Schachtelungstiefelimit. Diese Tabelle zeigt die Tiefenanzahl, die jede Anweisung der vorhandenen Tiefe hinzufügt oder subtrahiert:

Anweisung Statische Schachtelung Dynamische Schachtelung Schleifen-/Rep-Schachtelung Anrufschachtelung Anzahl statischer Fluss
, wenn bool - vs 0 0 0 0 1
if_comp – vs n/a n/a n/a n/a n/a
, falls vorhanden – vs n/a n/a n/a n/a n/a
andernfalls – vs 0 0 0 0 1(, wenn bool - vs only)
Endif - vs -1 0 0 0 0
Rep - vs 0 0 1 0 1
Endrep - vs 0 0 -1 0 0
Schleife – vs 0 0 1 0 1
Endloop - vs 0 0 -1 0 0
Pause – vs n/a n/a n/a n/a n/a
break_comp – vs n/a n/a n/a n/a n/a
Breakp – vs n/a n/a n/a n/a n/a
Anruf – vs 0 0 0 1 1
callnz bool - vs 0 0 0 1 1
callnz pred – vs n/a n/a n/a n/a n/a
Ret - vs 0 0 0 -1 0
setp_comp – vs n/a n/a n/a n/a n/a

 

Schachtelungstiefe

Die Schachtelungstiefe definiert, wie viele Anweisungen ineinander aufgerufen werden können. Jeder Anweisungstyp weist mindestens einen Schachtelungsgrenzwert auf:

Anweisungstyp Maximum
Statische Schachtelung Nur begrenzt durch die Anzahl statischer Flusse
Dynamische Schachtelung n/a
Schleifen-/Rep-Schachtelung 1
Anrufschachtelung 1
Anzahl statischer Fluss 16

 

Tiefenanzahl pro Anweisung für vs_2_x

Jede Anweisung zählt für mindestens ein Schachtelungstiefelimit. Diese Tabelle zeigt die Tiefenanzahl, die jede Anweisung der vorhandenen Tiefe hinzufügt oder subtrahiert:

Anweisung Statische Schachtelung Dynamische Schachtelung Schleifen-/Rep-Schachtelung Anrufschachtelung Anzahl statischer Fluss
, wenn bool - vs 1 0 0 0 1
if_comp – vs 0 1 0 0 0
, falls vorhanden – vs 0 1 0 0 0
andernfalls – vs 0 0 0 0 1(, wenn bool - vs only)
Endif - vs -1(wenn bool - vs) -1(, wenn pred - vs oder if_comp - vs) 0 0 0
Rep - vs 0 0 1 0 1
Endrep - vs 0 0 -1 0 0
Schleife – vs 0 0 1 0 1
Endloop - vs 0 0 -1 0 0
Pause – vs 0 0 0 0 0
break_comp – vs 0 1, -1 0 0 0
Breakp – vs 0 0 0 0 0
Anruf – vs 0 0 0 1 1
callnz bool - vs 0 0 0 1 1
callnz pred – vs 0 1 0 1 0
Ret - vs 0 -1 (callnz pred - vs) 0 -1 0
setp_comp – vs 0 0 0 0 0

 

Schachtelungstiefe

Die Schachtelungstiefe definiert, wie viele Anweisungen ineinander aufgerufen werden können. Jeder Anweisungstyp weist mindestens einen Schachtelungsgrenzwert auf:

Anweisungstyp Maximum
Statische Schachtelung Nur begrenzt durch die Anzahl statischer Flusse
Dynamische Schachtelung 0 oder 24, siehe D3DCAPS9. VS20Caps.DynamicFlowControlDepth
Schleifen-/Rep-Schachtelung 1 bis 4 siehe D3DCAPS9. VS20Caps.StaticFlowControlDepth
Anrufschachtelung 1 bis 4 siehe D3DCAPS9. VS20Caps.StaticFlowControlDepth (unabhängig von Schleifen-/Rep-Grenzwert)
Anzahl statischer Fluss 16

 

Tiefenanzahl pro Anweisung für vs_2_sw

Jede Anweisung zählt für mindestens ein Schachtelungstiefelimit. Diese Tabelle zeigt die Tiefenanzahl, die jede Anweisung der vorhandenen Tiefe hinzufügt oder subtrahiert:

Anweisung Statische Schachtelung Dynamische Schachtelung Schleifen-/Rep-Schachtelung Anrufschachtelung Anzahl statischer Fluss
, wenn bool - vs 1 0 0 0 n/a
if_comp – vs 0 1 0 0 n/a
, falls vorhanden – vs 0 1 0 0 n/a
andernfalls – vs 0 0 0 0 n/a
Endif - vs -1(wenn bool - vs) -1(, wenn pred - vs oder if_comp - vs) 0 0 n/a
Rep - vs 0 0 1 0 n/a
Endrep - vs 0 0 -1 0 n/a
Schleife – vs 0 0 1 0 n/a
Endloop - vs 0 0 -1 0 n/a
Pause – vs 0 0 0 0 n/a
break_comp – vs 0 1, -1 0 0 n/a
Breakp – vs 0 0 0 0 n/a
Anruf – vs 0 0 0 1 n/a
callnz bool - vs 0 0 0 1 n/a
callnz pred – vs 0 1 0 1 n/a
Ret - vs 0 -1 (callnz pred - vs) 0 -1 n/a
setp_comp – vs 0 0 0 0 n/a

 

Schachtelungstiefe

Die Schachtelungstiefe definiert, wie viele Anweisungen ineinander aufgerufen werden können. Jeder Anweisungstyp weist mindestens einen Schachtelungsgrenzwert auf:

Anweisungstyp Maximum
Statische Schachtelung 24
Dynamische Schachtelung 24
Schleifen-/Rep-Schachtelung 4
Anrufschachtelung 4
Anzahl statischer Fluss Kein Grenzwert

 

Tiefenanzahl pro Anweisung für vs_3_0

Jede Anweisung zählt für mindestens ein Schachtelungstiefelimit. Diese Tabelle zeigt die Tiefenanzahl, die jede Anweisung der vorhandenen Tiefe hinzufügt oder subtrahiert:

Anweisung Statische Schachtelung Dynamische Schachtelung Schleifen-/Rep-Schachtelung Anrufschachtelung Anzahl statischer Fluss
, wenn bool - vs 1 0 0 0 n/a
if_comp – vs 0 1 0 0 n/a
, falls vorhanden – vs 0 1 0 0 n/a
andernfalls – vs 0 0 0 0 n/a
Endif - vs -1(wenn bool - vs) -1(, wenn pred - vs oder if_comp - vs) 0 0 n/a
Rep - vs 0 0 1 0 n/a
Endrep - vs 0 0 -1 0 n/a
Schleife – vs 0 0 1 0 n/a
Endloop - vs 0 0 -1 0 n/a
Pause – vs 0 0 0 0 n/a
break_comp – vs 0 1, -1 0 0 n/a
Breakp – vs 0 0 0 0 n/a
Anruf – vs 0 0 0 1 n/a
callnz bool - vs 0 0 0 1 n/a
callnz pred – vs 0 1 0 1 n/a
Ret - vs 0 -1 (callnz pred - vs) 0 -1 n/a
setp_comp – vs 0 0 0 0 n/a

 

Schachtelungstiefe

Die Schachtelungstiefe definiert, wie viele Anweisungen ineinander aufgerufen werden können. Jeder Anweisungstyp weist mindestens einen Schachtelungsgrenzwert auf:

Anweisungstyp Maximum
Statische Schachtelung 24
Dynamische Schachtelung 24
Schleifen-/Rep-Schachtelung 4
Anrufschachtelung 4
Anzahl statischer Fluss Kein Grenzwert

 

Tiefenanzahl pro Anweisung für vs_3_sw

Jede Anweisung zählt für mindestens ein Schachtelungstiefelimit. Diese Tabelle zeigt die Tiefenanzahl, die jede Anweisung der vorhandenen Tiefe hinzufügt oder subtrahiert:

Anweisung Statische Schachtelung Dynamische Schachtelung Schleifen-/Rep-Schachtelung Anrufschachtelung Anzahl statischer Fluss
, wenn bool - vs 1 0 0 0 n/a
if_comp – vs 0 1 0 0 n/a
, falls vorhanden – vs 0 1 0 0 n/a
andernfalls – vs 0 0 0 0 n/a
Endif - vs -1(wenn bool - vs) -1(, wenn pred - vs oder if_comp - vs) 0 0 n/a
Rep - vs 0 0 1 0 n/a
Endrep - vs 0 0 -1 0 n/a
Schleife – vs 0 0 1 0 n/a
Endloop - vs 0 0 -1 0 n/a
Pause – vs 0 0 0 0 n/a
break_comp – vs 0 1, -1 0 0 n/a
Breakp – vs 0 0 0 0 n/a
Anruf – vs 0 0 0 1 n/a
callnz bool - vs 0 0 0 1 n/a
callnz pred – vs 0 1 0 1 n/a
Ret - vs 0 -1 (callnz pred - vs) 0 -1 n/a
setp_comp – vs 0 0 0 0 n/a

 

Schachtelungstiefe

Die Schachtelungstiefe definiert, wie viele Anweisungen ineinander aufgerufen werden können. Jeder Anweisungstyp weist mindestens einen Schachtelungsgrenzwert auf:

Anweisungstyp Maximum
Statische Schachtelung 24
Dynamische Schachtelung 24
Schleifen-/Rep-Schachtelung 4
Anrufschachtelung 4
Anzahl statischer Fluss Kein Grenzwert

 

Vertex-Shaderanweisungen