Schachtelungsgrenzwerte für die Flusssteuerung

Anweisungen zur Ablaufsteuerung des Vertex-Shaders weisen zwei besondere Einschränkungen auf. Schachtelungstiefen beschränken die Anzahl von Anweisungen, die ineinander aufgerufen werden können. Darüber hinaus verfügt jede Anweisung über eine Anweisungsslotanzahl, die für die maximale Anzahl von Anweisungen gilt, die ein Shader unterstützen kann.

Hinweis

Wenn Sie die *_4_0_level_9_x HLSL-Shaderprofile verwenden, verwenden Sie implizit die Profile des Shadermodells 2.x , um Direct3D 9-fähige Hardware zu unterstützen. Shadermodell 2.x-Profile unterstützen ein stärker eingeschränktes Ablaufsteuerungsverhalten als die Profile shader Model 4.x und höher.

 

Tiefenanzahl pro Anweisung für vs_2_0

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

Anweisung Statische Schachtelung Dynamische Schachtelung Schleifen-/Rep-Schachtelung Schachteln von Aufrufen Statische Flussanzahl
wenn bool – vs. 0 0 0 0 1
if_comp – im Vergleich
if pred – vs
else – 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 – im Vergleich 0 0 1 0 1
Endloop – vs. 0 0 -1 0 0
Break – vs
break_comp – vs
breakp – vs
Aufruf – vs 0 0 0 1 1
callnz bool – vs 0 0 0 1 1
callnz pred – vs
ret – vs 0 0 0 -1 0
setp_comp – vs.

 

Schachtelungstiefe

Die Schachtelungstiefe definiert, wie viele Anweisungen ineinander aufgerufen werden können. Für jeden Anweisungstyp gilt ein oder mehrere Schachtelungsgrenzwerte:

Anweisungstyp Maximum
Statisches Schachteln Nur begrenzt durch die anzahl statischer Datenflüsse
Dynamische Schachtelung
Schleifen-/Rep-Schachtelung 1
Schachteln von Aufrufen 1
Anzahl statischer Datenfluss 16

 

Tiefenanzahl pro Anweisung für vs_2_x

Jede Anweisung zählt für mindestens eine Schachtelungstiefe. In dieser Tabelle wird die Tiefenanzahl angezeigt, die von jeder Anweisung hinzugefügt oder von der vorhandenen Tiefe subtrahiert wird:

Anweisung Statisches Schachteln Dynamische Schachtelung Schleifen-/Rep-Schachtelung Schachteln von Aufrufen Anzahl statischer Datenfluss
if bool – vs 1 0 0 0 1
if_comp – vs 0 1 0 0 0
if pred – vs 0 1 0 0 0
else – vs 0 0 0 0 1(wenn bool - vs only)
endif – vs -1(if 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
break – vs 0 0 0 0 0
break_comp – vs 0 1, -1 0 0 0
breakp – vs 0 0 0 0 0
Aufruf – 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 – im Vergleich 0 0 0 0 0

 

Schachtelungstiefe

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

Anweisungstyp Maximum
Statische Schachtelung Nur eingeschränkt durch die statische Flussanzahl
Dynamische Schachtelung 0 oder 24, siehe D3DCAPS9. VS20Caps.DynamicFlowControlDepth
Schleifen-/Rep-Schachtelung 1 bis 4, siehe D3DCAPS9. VS20Caps.StaticFlowControlDepth
Schachteln von Aufrufen 1 bis 4, siehe D3DCAPS9. VS20Caps.StaticFlowControlDepth (unabhängig vom Schleifen-/Rep-Limit)
Statische Flussanzahl 16

 

Tiefenanzahl pro Anweisung für vs_2_sw

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

Anweisung Statische Schachtelung Dynamische Schachtelung Schleifen-/Rep-Schachtelung Schachteln von Aufrufen Statische Flussanzahl
wenn bool – vs. 1 0 0 0
if_comp – im Vergleich 0 1 0 0
if pred – vs 0 1 0 0
else – vs 0 0 0 0
endif – vs -1(wenn bool - vs) -1(wenn pred - vs oder if_comp - vs) 0 0
rep – vs 0 0 1 0
endrep – vs 0 0 -1 0
Schleife – im Vergleich 0 0 1 0
Endloop – vs. 0 0 -1 0
Break – vs 0 0 0 0
break_comp – vs 0 1, -1 0 0
breakp – vs 0 0 0 0
Aufruf – vs 0 0 0 1
callnz bool – vs 0 0 0 1
callnz pred – vs 0 1 0 1
ret – vs 0 -1 (callnz pred - vs) 0 -1
setp_comp – im Vergleich 0 0 0 0

 

Schachtelungstiefe

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

Anweisungstyp Maximum
Statische Schachtelung 24
Dynamische Schachtelung 24
Schleifen-/Rep-Schachtelung 4
Schachteln von Aufrufen 4
Statische Flussanzahl Keine Begrenzung

 

Tiefenanzahl pro Anweisung für vs_3_0

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

Anweisung Statische Schachtelung Dynamische Schachtelung Schleifen-/Rep-Schachtelung Schachteln von Aufrufen Statische Flussanzahl
wenn bool – vs. 1 0 0 0
if_comp – im Vergleich 0 1 0 0
if pred – vs 0 1 0 0
else – vs 0 0 0 0
endif – vs -1(wenn bool - vs) -1(wenn pred - vs oder if_comp - vs) 0 0
rep – vs 0 0 1 0
endrep – vs 0 0 -1 0
Schleife – im Vergleich 0 0 1 0
Endloop – vs. 0 0 -1 0
Break – vs 0 0 0 0
break_comp – vs 0 1, -1 0 0
breakp – vs 0 0 0 0
Aufruf – vs 0 0 0 1
callnz bool – vs 0 0 0 1
callnz pred – vs 0 1 0 1
ret – vs 0 -1 (callnz pred - vs) 0 -1
setp_comp – im Vergleich 0 0 0 0

 

Schachtelungstiefe

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

Anweisungstyp Maximum
Statische Schachtelung 24
Dynamische Schachtelung 24
Schleifen-/Rep-Schachtelung 4
Schachteln von Aufrufen 4
Statische Flussanzahl Keine Begrenzung

 

Tiefenanzahl pro Anweisung für vs_3_sw

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

Anweisung Statische Schachtelung Dynamische Schachtelung Schleifen-/Rep-Schachtelung Schachteln von Aufrufen Statische Flussanzahl
wenn bool – vs. 1 0 0 0
if_comp – im Vergleich 0 1 0 0
if pred – vs 0 1 0 0
else – vs 0 0 0 0
endif – vs -1(wenn bool - vs) -1(wenn pred - vs oder if_comp - vs) 0 0
rep – vs 0 0 1 0
endrep – vs 0 0 -1 0
Schleife – im Vergleich 0 0 1 0
Endloop – vs. 0 0 -1 0
Break – vs 0 0 0 0
break_comp – vs 0 1, -1 0 0
breakp – vs 0 0 0 0
Aufruf – vs 0 0 0 1
callnz bool – vs 0 0 0 1
callnz pred – vs 0 1 0 1
ret – vs 0 -1 (callnz pred - vs) 0 -1
setp_comp – im Vergleich 0 0 0 0

 

Schachtelungstiefe

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

Anweisungstyp Maximum
Statische Schachtelung 24
Dynamische Schachtelung 24
Schleifen-/Rep-Schachtelung 4
Schachteln von Aufrufen 4
Statische Flussanzahl Keine Begrenzung

 

Anweisungen zum Vertex-Shader