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 |
Zugehörige Themen