PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Static- / Dynamic Flow Control


avalanche
2004-07-21, 12:52:40
Ich bin durch den Thread Schaderfähigkeiten? (http://www.forum-3dcenter.org/vbulletin/showthread.php?s=&threadid=155541) zu diesem Artikel (http://www.beyond3d.com/previews/nvidia/nv40/index.php?p=5) gekommen und stehe vor folgender Frage:
Wo ist der Unterschied zwischen "Static Flow Control" und "Dynamic Flow Control"? Ich hab von den Shadermodellen allgemein relativ wenig Ahnung, aber da ich davon ausgehe, dass die Namen nicht ausgewürfelt werden, sondern auch einen gewissen Sinn haben, unterstelle ich der Funktion mal, dass sie für einen vernünftigen "Befehlsfluss" sorgen soll. Da ich nicht weiß, wie das funktioniert kann ich mir leider auch nicht die Vorteile oder Nachteile vom "dynamischen" erklären. Das trifft mich natürlich sehr, noch schlimmer ist allerdings, dass ich keinen 3DCenter-Artikel dazu finde. Wenn zeckensack, Quasar & Co die Zeit hätten und 'ne Erklärung nicht zu aufwändig sein sollte, wäre ich für selbige dankbar ;)

Chris Lux
2004-07-21, 14:54:20
Original geschrieben von avalanche
Ich bin durch den Thread Schaderfähigkeiten? (http://www.forum-3dcenter.org/vbulletin/showthread.php?s=&threadid=155541) zu diesem Artikel (http://www.beyond3d.com/previews/nvidia/nv40/index.php?p=5) gekommen und stehe vor folgender Frage:
Wo ist der Unterschied zwischen "Static Flow Control" und "Dynamic Flow Control"?

beim static flow ist die bedingung für eine verzweigung vorberechenbar, dh. der fluss des programms wird nicht zur laufzeit bestimmt.
beim dynamic flow kann sich eine verzweigungsbedingung aus dem vorherigen programmverlauf ergeben und ist somit nicht statisch vorberechenbar.

zu sehen ist, das man beim static flow gut optimieren kann, da der verlauf der berechnung im grunde vor dem ausführen des programms feststellbar ist.

soweit meine kleine erklärung ;)
HTH

Demirug
2004-07-21, 15:19:56
Chris Lux hat soweit schon recht. Im Zusammenhang mit Shader will ich allerdings noch folgendes ergänzen.

Bei Dynamic Flow Control (aka Dynamic Branching) kann der Programmfluss pro Vertex/Pixel verändert werden. Typische Beispiel für einen solchen Shader wäre es zum Beispiel zuerst festzustellen ob ein Pixel überhaupt noch im Bereich einer Lichtquelle liegt. Tut er das wird die Lichtberechnung durchgeführt. Tut er das nicht lässt man es bleiben.

Beim Static Flow Control (aka Static Branching) legt man für alle Pixel/Verticen eines Objects den Programmfluss fest. Ein Beispiel wäre hier das man im Pixelshader das hinzufügen einer Detailtexture an und ausschalten kann.

avalanche
2004-07-21, 17:01:10
Vielen Dank für eure Erklärungen, das macht die ganze Sache verständlich. "Dynamic Branching" wurde AFAIR auch im "Inside nVidia NV40"-Artikel angesprochen und, wenn auch sehr reduziert, erklärt. Man hätte natürlich wissen müssen, dass das dasselbe ist ;)
Vielen Dank nochmal für die Erklärungen; ich werd' jetzt weiter auf meine 6800GT warten^^