PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SM3 vs dynamic branching


mapel110
2006-01-15, 13:54:19
1.5 Jahre musste man quasi auf SM3 verzichten, weil ein Chip-Hersteller es nicht anbot. Jetzt kommt ein Hersteller mit einem schnellen TEIL-Feature von SM3 an und schon erwarten alle, dass dieser Chip deswegen der Überflieger ist und für künftige Games besser ist.
Ist der Rest von SM3 auf gut Deutsch Pipifax mit dem man sonst nichts Tolles anfangen kann?

reunion
2006-01-15, 14:41:23
Dynamisches Branching ist nunmal das SM3-Feature. Alles andere ist - mit Ausnahme von Vertex Texturing - auch schon mit PS2.X möglich.

Allerdings denken ich, dass man aufgrund der magelhaften Implementierung von nV daraus in Spielen nicht wirklich einen Vorteil wird ziehen können.

Coda
2006-01-15, 14:44:02
Dynamisches Branching ist nunmal das SM3-Feature. Alles andere ist (mit Ausnahme von Vertex Texturing) auch schon mit PS2.X möglich.Das ist falsch.

Allerdings denken ich, dass man aufgrund der magelhaften Implementierung von nV daraus in Spielen nicht wirklich einen Vorteil wird ziehen können.Das ist ebenfalls falsch.

Was ATi zu PS3 gefehlt hat ist u.a.: predication, static branching (viel wichtiger als dynamisches im moment), arbitary swizzle, gradient instructions, vPos, vFace, mehr input register, etc.

Dynamisches branching ist im Moment so heiß diskutiert weil es am schwersten zu implementieren war/ist und deshalb ein SM3-Chip-Design sich vor allem daran zu orientieren hat. Die anderen Features sind aber im Moment sogar eher wichtiger.

reunion
2006-01-15, 14:48:56
Das ist falsch.

Das ist ebenfalls falsch.


:massa: coda :massa:


Was ATi zu PS3 gefehlt hat ist u.a.: predication, static branching (viel wichtiger als dynamisches im moment), arbitary swizzle, gradient instructions, vPos, vFace, mehr input register, etc.

Dynamisches branching ist im Moment so heiß diskutiert weil es am schwersten zu implementieren war/ist und deshalb ein SM3-Chip-Design sich vor allem daran zu orientieren hat. Die anderen Features sind aber im Moment sogar eher wichtiger.

Ich habe auch nicht PS2.B geschrieben, sondern PS2.X.
Das ATi noch einiges mehr fehlte, ist mir durchaus bewusst.

Und das die anderen Features im Moment wichtiger sind, liegt ja wohl hauptsächlich daran, dass nVs dyn. Branching ziemlich für den Popo ist.

Coda
2006-01-15, 14:59:34
:massa: coda :massa:Die Aussagen sind falsch. Fertig aus. Ich finde es deinerseits nämlich ziemlich unmöglich hier Aussagen als Wahrheit in den Raum zu stellen, obwohl du es gar nicht genau weißt.

Ich habe auch nicht PS2.B geschrieben, sondern PS2.X.Das ist auch wenn man 2.x betrachtet falsch. Es ist nichtmal dyn. branching was nur mit SM3 geht, SM2.x spezifiziert ein Cap dafür. vPos u.a. dagegen geht nur mit SM3.

Und das die anderen Features im Moment wichtiger sind, liegt ja wohl hauptsächlich daran, dass nVs dyn. Branching ziemlich für den Popo ist.Nope. Statisches branching ist erst mal sehr viel wichtiger. Das war auch der primäre Grund warum SC3 zuerst keinen SM2-Pfad hatte.

deekey777
2006-01-15, 15:03:21
Korrigiert mich:
Die FXen beherrschen statisches Branching im Pixel- und Vertexshader, dynamisches Branching im Vertexshader. Dynamisches Branching im Vertexshader beherrscht die G6/G7 Generation ausgezeichnet, statisches Branching sowieso.
SM 2.A bzw. 2_a zu schreiben, wäre richtiger als 2.X bzw. 2_x, wenn es um über 2_x hinausgehende Features der FX-Serie geht.

Coda
2006-01-15, 15:05:42
Die FXen beherrschen statisches Branching im Pixel- und Vertexshader, dynamisches Branching im Vertexshader. Dynamisches Branching im Vertexshader beherrscht die G6/G7 Generation ausgezeichnet, statisches Branching sowieso.Stimmt alles.

SM 2.A bzw. 2_a zu schreiben, wäre richtiger als 2.X bzw. 2_x, wenn es um über 2_x hinausgehende Features der FX-Serie geht.2.A ist das nVIDIA-HLSL-Profil, 2.B das von ATi. Wobei das von nVIDIA sehr viel mehr kann, außer dass es weniger Temp-Register zur verfügung stellt.

IVN
2006-01-15, 15:07:19
:massa: coda :massa:



Ich habe auch nicht PS2.B geschrieben, sondern PS2.X.
Das ATi noch einiges mehr fehlte, ist mir durchaus bewusst.

Und das die anderen Features im Moment wichtiger sind, liegt ja wohl hauptsächlich daran, dass nVs dyn. Branching ziemlich für den Popo ist.
DB koennte sich so wirklich bei den NextGen-Spielen lohnen,wie z.B. UT2007 (mit mehreren hundert Instruktionen pro Fragment-Shader).Leider sind die heutigen GPUs (darunter meine ich auch den r580&G71) zu schwach um den 3DC'ler zu befriedigen. :D (1280x1024 mit mind. 4xaa&8xaf)

reunion
2006-01-15, 20:26:06
Die Aussagen sind falsch. Fertig aus. Ich finde es deinerseits nämlich ziemlich unmöglich hier Aussagen als Wahrheit in den Raum zu stellen, obwohl du es gar nicht genau weißt.

Das ist auch wenn man 2.x betrachtet falsch. Es ist nichtmal dyn. branching was nur mit SM3 geht, SM2.x spezifiziert ein Cap dafür. vPos u.a. dagegen geht nur mit SM3.


Schön, dann benötigt man eben einen Cap. Man kann sich auch an einem Mistelzweig aufhängen.
Trotzdem bleibe ich dabe, dass dyn. Branching nunmal das SM3-Feature ist.

Mad-Marty
2006-01-15, 20:34:26
Ích würde fast behaupten das ein chip der dynamisches branching kann auch für statisches missbraucht werden kann, nicht ?

(Indem man pseudo dynamische branches baut ;-)

Coda
2006-01-15, 20:49:55
Schön, dann benötigt man eben einen Cap. Man kann sich auch an einem Mistelzweig aufhängen.
Trotzdem bleibe ich dabe, dass dyn. Branching nunmal das SM3-Feature ist.Es bei weitem nicht das einzige ist und schon gar nicht das wichtigste im Moment.

Da ATi da schneller ist mag das in deiner Welt vielleicht so aussehen - wenn du Entwickler fragen würdest aber wohl kaum ;)

Gast
2006-01-15, 20:57:16
Ích würde fast behaupten das ein chip der dynamisches branching kann auch für statisches missbraucht werden kann, nicht ?



wenn man dynamisch branchen kann dann kann man sowieso auch statisch branchen ;)

statisches branchen ist ja quasi eine untermenge von dynamischem branchen.

Coda
2006-01-15, 20:58:48
Statische Branches werden aber sehr viel effizienter gehandhabt, da der Sprung für einen Batch sowieso immer gleich genommen wird.

Pirx
2006-01-15, 21:10:06
Kann man Codas Aussagen eigentlich glauben, daß statisches Branching erstmal? sehr viel wichtiger ist? Denn er stellt ja genauso wie reunion Aussagen als Wahrheit in den Raum und bezeichnet auch noch andere als falsch, obwohl er es möglicherweise gar nicht genau weiß, oder etwa doch?

ShadowXX
2006-01-15, 21:15:56
Kann man Codas Aussagen eigentlich glauben, daß statisches Branching erstmal? sehr viel wichtiger ist? Denn er stellt ja genauso wie reunion Aussagen als Wahrheit in den Raum und bezeichnet auch noch andere als falsch, obwohl er es möglicherweise gar nicht genau weiß, oder etwa doch?

Er Programmiert selbst in dem Bereich.....davon abgesehen ist dyn. Branching zu langsam um es wirklich effektiv in Spielen großflächig einzusetzen, auch bei einem r520 oder r580.

deekey777
2006-01-15, 21:33:52
1.5 Jahre musste man quasi auf SM3 verzichten, weil ein Chip-Hersteller es nicht anbot. Jetzt kommt ein Hersteller mit einem schnellen TEIL-Feature von SM3 an und schon erwarten alle, dass dieser Chip deswegen der Überflieger ist und für künftige Games besser ist.
Ist der Rest von SM3 auf gut Deutsch Pipifax mit dem man sonst nichts Tolles anfangen kann?

Das GI wird in mindestens zwei Spielen benutzt (Far Cry und Earth 90210). VTF in Pacific Fighters, im kommenden Narnia-Spiel, Pitfall: Lost Expedition und in Powerdrome (weitere kommen noch).

Coda
2006-01-15, 22:11:28
Kann man Codas Aussagen eigentlich glauben, daß statisches Branching erstmal? sehr viel wichtiger ist? Denn er stellt ja genauso wie reunion Aussagen als Wahrheit in den Raum und bezeichnet auch noch andere als falsch, obwohl er es möglicherweise gar nicht genau weiß, oder etwa doch?Ich kann dir gerne die entsprechenden Ausschnitte aus dem DX-SDK zitieren.

Übrigens kann es sein, dass ich reunion oben nicht ganz richtig verstanden habe. Wenn er damit nur das dyn. branching meinte dass derzeit nicht verwendbar ist gebe ich ihm recht. Wenn er damit aber SM3 an sich meint auf nV-GPUs ist es definitiv falsch.

reunion
2006-01-15, 22:15:11
Da ATi da schneller ist mag das in deiner Welt vielleicht so aussehen

War ja klar, dass soetwas kommt. Das könnte ich jetzt genauso auf dich um münzen, aber weiß du was - das ist mir wirklich zu blöd.

reunion
2006-01-15, 22:17:39
davon abgesehen ist dyn. Branching zu langsam um es wirklich effektiv in Spielen großflächig einzusetzen, auch bei einem r520 oder r580.

Warum soll es für Spiele zu langsam sein?
Dyn. Banching soll die Geschwindigkeit verbessern, nicht verschlechtern, und ATis Techdemos zeigen auch, dass dies funktioniert.

Bei nVs Implementierung ist die Granularität zu groß, so dass es meistens zu Performaceverlusten kommt.

Black-Scorpion
2006-01-15, 22:30:53
Da ATi da schneller ist mag das in deiner Welt vielleicht so aussehen - wenn du Entwickler fragen würdest aber wohl kaum ;)
Vielleicht sollte man mal Entwickler fragen was sie davon halten das es bei nVidia so langsam ist?

Es ist immer wieder schön zu sehen auf welcher Welle du schwimmst.

Coda
2006-01-15, 22:35:01
Ich schwimme auf gar keiner Welle, sonst würde ich mit aths wohl nicht darüber streiten, dass nVIDIAs dynamisches branching absolut unbrauchbar ist.

http://www.forum-3dcenter.org/vbulletin/showthread.php?p=3868734#post3868734 ff.

Trotzdem ist statisches branching im Moment erstmal wichtiger, weil man jetzt endlich keine 2^n Shader mehr braucht für Permutationen des gleichen Shaders.

davon abgesehen ist dyn. Branching zu langsam um es wirklich effektiv in Spielen großflächig einzusetzen, auch bei einem r520 oder r580.Nö ist es nicht. ATis Implementierung ist sehr vernünftig und kaum zu verbessern. Vier Quads ist so ziemlich perfekt.

Demirug
2006-01-15, 22:43:20
Nö ist es nicht. ATis Implementierung ist sehr vernünftig und kaum zu verbessern. Vier Quads ist so ziemlich perfekt.

Sie ist so gut das sie es selbst nicht beibehalten können. Beim R580 steigt sie auf das 3 fache.

tb
2006-01-16, 01:20:58
Sie ist so gut das sie es selbst nicht beibehalten können. Beim R580 steigt sie auf das 3 fache.

mal ne dumme frage, ist der r580 eigentlich schon vollst. dx10 fähig (bin nicht mehr so ganz auf dem laufenden, leider :( aus zeitmangel....)? was meinst du mit 3 fach? quads oder taktzyklen?

thomas

tb
2006-01-16, 01:26:44
1.5 Jahre musste man quasi auf SM3 verzichten, weil ein Chip-Hersteller es nicht anbot. Jetzt kommt ein Hersteller mit einem schnellen TEIL-Feature von SM3 an und schon erwarten alle, dass dieser Chip deswegen der Überflieger ist und für künftige Games besser ist.
Ist der Rest von SM3 auf gut Deutsch Pipifax mit dem man sonst nichts Tolles anfangen kann?

"künftige games" - ich bin zwar noch nicht so alt (27), aber ich würde mir heut keine gfx karte mehr nach dem motto kaufen - "sie sei zukunftssicher" - zukunftssicher klingt für micht so nach 2+ jahren, spiele werden da sicher drauf laufen, aber nicht nicht mit allen "highend" features... dafür ghet die entwicklung einfach im gfx bereich zu schnell. ne cpu lebt bei mir(vielleicht bin ich da ne außnahme?) wesentlich länger als ne gpu...

p.s. das gfx geschäft erinnert mich irgendwie mehr an die formel 1... cpu's mehr an serienfahrzeuge (das ist jetzt nicht negativ gemeint!)

thomas

mapel110
2006-01-16, 01:37:35
"künftige games" - ich bin zwar noch nicht so alt (27), aber ich würde mir heut keine gfx karte mehr nach dem motto kaufen - "sie sei zukunftssicher" - zukunftssicher klingt für micht so nach 2+ jahren, spiele werden da sicher drauf laufen, aber nicht nicht mit allen "highend" features... dafür ghet die entwicklung einfach im gfx bereich zu schnell. ne cpu lebt bei mir(vielleicht bin ich da ne außnahme?) wesentlich länger als ne gpu...

p.s. das gfx geschäft erinnert mich irgendwie mehr an die formel 1... cpu's mehr an serienfahrzeuge (das ist jetzt nicht negativ gemeint!)

thomas
Um so künftige Games gehts mir auch gar nicht. Sondern eben um solche Games, wie es Riddick oder Pacific Fighters sind. Beide bieten einen neuen Effekt eben für High End Hardware an.

Und da wüsste ich gern, ob es wohl danach aussieht, dass man solche Effekte mit ATIs dynamic branching eher hinbekommt bzw überhaupt den Weg gehen muss oder ob eben der Rest von SM3 ausreicht, um hier und da nochmal einen Hingucker für High End User (beider Lager) einzubauen.

StefanV
2006-01-16, 01:38:29
mal ne dumme frage, ist der r580 eigentlich schon vollst. dx10 fähig (bin nicht mehr so ganz auf dem laufenden, leider :( aus zeitmangel....)? was meinst du mit 3 fach? quads oder taktzyklen?

thomas
Nein, R580 = RV560 von den Features (der x1600)

tb
2006-01-16, 01:48:41
Um so künftige Games gehts mir auch gar nicht. Sondern eben um solche Games, wie es Riddick oder Pacific Fighters sind. Beide bieten einen neuen Effekt eben für High End Hardware an.

Und da wüsste ich gern, ob es wohl danach aussieht, dass man solche Effekte mit ATIs dynamic branching eher hinbekommt bzw überhaupt den Weg gehen muss oder ob eben der Rest von SM3 ausreicht, um hier und da nochmal einen Hingucker für High End User (beider Lager) einzubauen.

für "hingucker" braucht man kein d.b. - Pacific Fighters nutzt vertex texturing, riddick !? - d.b. hilft der performance, wenn die auch ohne da ist, seh ich da keine probleme... da hilft wohl nur abwarten...

thomas

deekey777
2006-01-16, 01:49:06
mal ne dumme frage, ist der r580 eigentlich schon vollst. dx10 fähig (bin nicht mehr so ganz auf dem laufenden, leider :( aus zeitmangel....)? was meinst du mit 3 fach? quads oder taktzyklen?

thomas

R580 bleibt beim Guten DX9 (DX10 heißt seit einiger Zeit D3D10). :)

Zu der zweiten Frage:
Ich tippe mal blind: http://www.beyond3d.com/reviews/ati/r520/index.php?p=04, der R580 ist ja ein dreifacher RV530, also 3x(4x12)?

€: Vielleicht findest du ab hier deine Antwort: http://www.forum-3dcenter.org/vbulletin/showthread.php?p=3870503#post3870503

http://www.forum-3dcenter.org/vbulletin/showpost.php?p=3875818&postcount=287

tb
2006-01-16, 01:50:26
Nein, R580 = RV560 von den Features (der x1600)

dann versteh ich nicht, warum das d.b. langsamer sein soll, wenn es nur ein aufgebohrter r5xx sein soll... (demi?) - auch wenn sich das texture/akku verhältnis verschiebt....

thomas

mapel110
2006-01-16, 01:52:36
riddick !? -
Softshadows.
http://www.forum-3dcenter.org/vbulletin/showthread.php?t=192102&highlight=riddick+softshadows
] also 3x(4x12)?

144 ;(

tb
2006-01-16, 01:53:53
Softshadows.
http://www.forum-3dcenter.org/vbulletin/showthread.php?t=192102&highlight=riddick+softshadows

144 ;(

okay, danke.

StefanV
2006-01-16, 01:58:18
dann versteh ich nicht, warum das d.b. langsamer sein soll, wenn es nur ein aufgebohrter r5xx sein soll... (demi?) - auch wenn sich das texture/akku verhältnis verschiebt....

thomas
Laut Demirug solls ja nicht langsamer werden sondern die Effizienz sinken, da man mehr EInheiten hat.

Coda
2006-01-16, 02:01:24
dann versteh ich nicht, warum das d.b. langsamer sein soll, wenn es nur ein aufgebohrter r5xx sein soll... (demi?) - auch wenn sich das texture/akku verhältnis verschiebt....Weil es 3x so viele ALUs werden und deshalb die Batch-Größe fürs dyn. branching aufs 3x erhöht werden muss.

Softshadows.
http://www.forum-3dcenter.org/vbulletin/showthread.php?t=192102&highlight=riddick+softshadows

144 ;(Riddick benützt nur "PS 2.A". Genauer gesagt geht es vor allem um die Anzahl der dependent texture fetches, die bei ATIs SM2-HW nicht mehr drin ist. Dynamische Branches werden da nicht verwendet, wäre auch ziemlich sinnlos bei NV_fragment_program ;)

mapel110
2006-01-16, 02:56:00
http://www.beyond3d.com/forum/showpost.php?p=674547&postcount=6
hatte hier auch mal einen Thread gestartet und immerhin eine ausführliche Antwort bekommen. Ich kenn bei B3D nur nicht viele Leute, kann man dem vertrauen oder ist das ein ATI-Mitarbeiter? :D
Standort spricht eigentlich eher für einen nvidia-Mitarbeiter. :)

Demirug
2006-01-16, 06:38:00
mal ne dumme frage, ist der r580 eigentlich schon vollst. dx10 fähig (bin nicht mehr so ganz auf dem laufenden, leider :( aus zeitmangel....)? was meinst du mit 3 fach? quads oder taktzyklen?

thomas

Nicht mal Micorosoft hat D3D10 fähige Hardware. R580 ist ein DX9 Chip.

Die 3 fache Anzahl von Pixel in einem Batch/Thread

Winter[Raven]
2006-01-16, 11:13:15
Nicht mal Micorosoft hat D3D10 fähige Hardware. R580 ist ein DX9 Chip.

Die 3 fache Anzahl von Pixel in einem Batch/Thread

Noch nicht ^^. Wenn G80 wirklich ein D3D10 Chip sein sollte, und davon geht man ja derzeit aus, kann man in den nächsten Monaten damit rechnen, dass M$ die Hardware bekommt.

Im Juni will ja M$ + Ritual +? die D3D10 Technik vorführen, also muss es bis dahin die HW geben.

Ailuros
2006-01-16, 11:20:19
Kommt ganz drauf an was man mit HW genau meint. Ich verstehe sowieso nicht warum man fuer eine Technologie-Praesentation jegliche Form von HW braucht.

Coda
2006-01-16, 12:30:15
']Im Juni will ja M$ + Ritual +? die D3D10 Technik vorführen, also muss es bis dahin die HW geben.Ohne HW kann man schlecht entwickeln, deshalb bezweifle ich das mal.

reunion
2006-01-16, 14:52:58
http://www.beyond3d.com/forum/showpost.php?p=674547&postcount=6


Die scheinen sich ja auch einig zu sein, dass dyn. Braching das wichtigste PS3-Feature ist.

"[...]But gradient instructions typically aren't considered a "SM3" instruction because they are an optional instruction in SM2.x, and implemented by the GeForce FX series. So that just leaves dynamic branching as allowing significantly new types of shaders. The rest of the improvements, while good, pretty much only allow minor programming ease and execution efficiency improvements."

"Personally, I don't think a shader should be called PS3 if it doesn't have dynamic branching, because that's the really big leap that PS3 makes.[...]In the end it doesn't really matter that only ATI users will see new effects from real PS3 shaders. "

Coda
2006-01-16, 14:59:22
"The others aren't nearly useless. Predication is a potential low-level optimization for limited branching. Static branching is excellent for ease of writing some code. Arbitrary swizzle is a minor optimization that can save an instruction here or there. vPos and vFace are excellent for certain rendering optimizations (particularly in relation to shadow volume generation)."

Wenn ich natürlich genau das quote was mir passt kann ich auch alles so auslegen wie ich will. Dyn. branching ist schön und gut, aber sicher nicht das einzige was PS3 ausmacht.

reunion
2006-01-16, 15:35:14
"The others aren't nearly useless. Predication is a potential low-level optimization for limited branching. Static branching is excellent for ease of writing some code. Arbitrary swizzle is a minor optimization that can save an instruction here or there. vPos and vFace are excellent for certain rendering optimizations (particularly in relation to shadow volume generation)."

Wenn ich natürlich genau das quote was mir passt kann ich auch alles so auslegen wie ich will. Dyn. branching ist schön und gut, aber sicher nicht das einzige was PS3 ausmacht.

Was er mit den letzten beiden Sätzen deutlich entkräftet.
Aber was solls, mir ist schon klar, dass du nicht von deinem hohen Ross runtersteigen wirst.

RLZ
2006-01-16, 15:48:42
Die scheinen sich ja auch einig zu sein, dass dyn. Braching das wichtigste PS3-Feature ist.
Definiere mal was du unter wichtig verstehst.
In der momentanen Situation ist DB praktisch nicht wichtig, da von NV unbrauchbar implementiert. Somit sind alle andere Änderungen mit denen man wirklich etwas anfangen kann in der Praxis wichtiger.
Featuremäßig (insbesondere für die Zukunft) ist DB imo aber sehr wichtig. Alles andere, abgesehen von VTF, fällt unter dem Gesichtspunkt unter kleine sinnvolle Erweiterungen. Sie erweitern nicht/wenig die Funktionalität, aber vereinfachen die Nutzung.

Coda
2006-01-16, 16:50:46
Aber was solls, mir ist schon klar, dass du nicht von deinem hohen Ross runtersteigen wirst.Wieso sollte ich? Die Praxis sagt mir einfach was anderes.

Du kannst gerne auch mal das ATI-Paper zu dem Thema anschauen, da geht es bei weitem nicht nur um dynamic branching.
http://www.ati.com/developer/gdc/D3DTutorial01_3_0_Shaders.pdf

Wie gesagt halte ich es in der Praxis aber erstmal für viel relevanter, dass man endlich vieles verwenden kann was ATI mit R420 versäumt hat.

aths
2006-01-17, 11:22:42
1.5 Jahre musste man quasi auf SM3 verzichten, weil ein Chip-Hersteller es nicht anbot. Jetzt kommt ein Hersteller mit einem schnellen TEIL-Feature von SM3 an und schon erwarten alle, dass dieser Chip deswegen der Überflieger ist und für künftige Games besser ist.
Ist der Rest von SM3 auf gut Deutsch Pipifax mit dem man sonst nichts Tolles anfangen kann?Im Gegenteil. Der Rest vom SM3 ist ebenfalls sehr gut dazu geeignet, GPU-Last wie CPU-Last zu senken.

aths
2006-01-17, 11:24:18
mal ne dumme frage, ist der r580 eigentlich schon vollst. dx10 fähig (bin nicht mehr so ganz auf dem laufenden, leider :( aus zeitmangel....)? was meinst du mit 3 fach? quads oder taktzyklen?

thomasR580 ist DX9, noch nicht D3D10. Mit 3-fach meint er, dass die Thread-Granularität von 4 (also 16 Pixel) auf 12 Quads (demnach 48 Pixel) steigt. Beim G70 hat man eine "Korngröße" von 256 Quads (ergo 1024 Pixel.)

aths
2006-01-17, 11:30:20
Definiere mal was du unter wichtig verstehst.
In der momentanen Situation ist DB praktisch nicht wichtig, da von NV unbrauchbar implementiert.NVs Lösung ist ineffizient, so dass es nur wenige Fälle gibt, bei denen man aus Leistungssicht davon profitiert – unter "unbrauchbar" würde ich verstehen, dass es gar keinen Fall gäbe, wo man es brauchen kann. Schon aus Gründen der einheitlichen Programmierung sollte man imo bereits auf Branching setzen, wenn es der Radeon-HW nützt, selbst wenn der G70 damit geringfügig langsamer wird. "Unbrauchbar" greift mir zu kurz. Besser wäre "in den meisten Fällen, bei denen es um für Spiele typische Szenen geht, bietet das Feature beim G70 keinen Leistungsvorteil".

Featuremäßig (insbesondere für die Zukunft) ist DB imo aber sehr wichtig.Genau. Man kann dann die Rechenkraft gezielt dort einsetzen, wo man sie braucht. Man könnte auch böse sagen, dass ATI es so effizient machen musste, weil die arithmetische Leistung zumindest beim R520 vergleichsweise gering ist. Der R580 ist hier ja auf gutem Wege, mal so richtig fette und effizient nutzbare ALU-Power ins Wohnzimmer zu bringen.

RLZ
2006-01-17, 15:13:31
Mit 3-fach meint er, dass die Thread-Granularität von 4 (also 16 Pixel) auf 12 Quads (demnach 48 Pixel) steigt. Beim G70 hat man eine "Korngröße" von 256 Quads (ergo 1024 Pixel.)
Mal eine kurze Verständnisfrage:
Wenn ich einem Shader eine längere Schleife habe, die dynamisch abgebrochen wird, wird dann für jedes Fragment im Thread/DB-Batch die Schleife bis zu höchsten Abbruchbedingung ausgeführt?
Da wäre für einige Anwendungen die Verdreifachung schon unter fatal einzustufen.

Coda
2006-01-17, 16:21:47
Ja genau so ist das. Aber fatal im Gegensatz zum G70 ist das noch lange nicht.

aths
2006-01-17, 18:22:52
Mal eine kurze Verständnisfrage:
Wenn ich einem Shader eine längere Schleife habe, die dynamisch abgebrochen wird, wird dann für jedes Fragment im Thread/DB-Batch die Schleife bis zu höchsten Abbruchbedingung ausgeführt?
Da wäre für einige Anwendungen die Verdreifachung schon unter fatal einzustufen.Man kann nur das wegschneiden, was im gesamten Thread bzw. Quadbatch nicht gebraucht wird. Den G70 kann man entsprechend durchaus nutzen, um bestimmte Effekte wegzulassen, die nicht mehr wahrnehmbar zur Pixelfarbe beitragen; aber einen Leistungsvorteil hat man nur, wenn die Flächen für die entschieden wird, den Effekt wegzulassen, hinreichend groß sind. Weil das Branchen selbst auch Takte kostet (beim G70 jedenfalls) könnte man sogar einen Performance-Verlust haben, je nach dem. Geht es um einen Shader, der dynamisch aus zwei aufwändigen Effekt einen auswählt, und ist die Verteilung entsprechend feinkörnig, wird der G70 laufend beide Pfade berechnen müssen. Die Frage ist aber auch, ob ein laufender Shader-Wechsel wirklich schneller ist. Ist vorher bekannt, welche Zweige man braucht, kann man statisches Branching nehmen.

Ohne dynamic Branching kann man immerhin stückweise Berechnungen "neutralisieren", solches "Ausrollen", sofern möglich, kann auf dem G70 durchaus performanter ablaufen als der mathematisch gleiche Shader der dynamisch verzweigt. Imo sollte der Shader wenn möglich als HSLS vorliegen, damit DX-Runtime und treiberseitige Optimierung dann das beste rausholen. Der Programmierer will das korrekte Ergebnis in möglichst kurzer Zeit, da ist es ihm egal, ob die GPU tatsächlich brancht oder nicht. Aber klar ist natürlich auch, und darum gehts hier ja, dass die richtigen Leistungsvorteile nur dann kommen, wenn das dynamische Verzweigen effizient und "feinkörnig" genug funktioniert. G70 brancht weder effizient, noch – auf die Flächenverteilung bezogen – feinkörnig.

pancho
2006-01-17, 19:26:32
Könntet ihr nochmal kurz umreißen, worin genau der Unterschied zwischen statischem und dynamischem braching besteht? Entspricht statisches branching einem einfachen "bra" und Dynamisches dann den Varianten wie "beq", "blo" usw.?

Gast
2006-01-17, 22:25:42
Könntet ihr nochmal kurz umreißen, worin genau der Unterschied zwischen statischem und dynamischem braching besteht? Entspricht statisches branching einem einfachen "bra" und Dynamisches dann den Varianten wie "beq", "blo" usw.?


vereinfacht gesagt steht beim statischen branchen bereits beim beginn des shaderprogrammes fest welcher zweig durchlaufen wird.

das ist vor allem nützlich, da man verschiedene shader in einen einzigen packen kann. splinter cell 3 macht regen gebrauch davon.

beim dynamischen branchen kann erst zur laufzeit festgestellt werden welcher zweig verwendet wird.

pancho
2006-01-17, 22:31:50
Dann muss man dem Shader immernoch irgendwie mitteilen, welcher Zweig zu durchlaufen ist. Wie geschieht das?

reunion
2006-01-17, 22:40:59
Mit If/else-Anweisungen?

Demirug
2006-01-17, 22:47:37
Imo sollte der Shader wenn möglich als HSLS vorliegen, damit DX-Runtime und treiberseitige Optimierung dann das beste rausholen.

Die Runtime und der Treiber bekommen immer nur binären Shadercode.

pancho
2006-01-17, 22:48:16
Also ist es statisch, wenn die Bedingung von außen kommt und dynamisch, wenn z.B. das Ergebnis einer Berechnung innerhalb des Shaders ausschlaggebend ist?

Demirug
2006-01-17, 22:54:42
Also ist es statisch, wenn die Bedingung von außen kommt und dynamisch, wenn z.B. das Ergebnis einer Berechnung innerhalb des Shaders ausschlaggebend ist?

Ja, wobei aussen hierbei die CPU ist. Also ein Wert der für alle Pixel in einem Drawcall gleich bleibt.

reunion
2006-01-17, 22:54:54
So habe ich das jedenfalls verstanden. :)

Coda
2006-01-17, 22:54:57
Ja genau. Statische Verzweigung ist abhängig von Shader-Konstanten die immer gleich bleiben für alle Dreiecke in einem Drawcall.

Das kann man eigentlich auch komplett ohne HW-Support machen, wenn man einen entsprechenden Cache für die verwendeten Permutationen erstellt.

Die Runtime und der Treiber bekommen immer nur binären Shadercode.Das ändert sich in DX10, da sieht zumindest die Runtime HLSL, wenn ich richtig gelesen habe, oder?

Demirug
2006-01-17, 23:00:14
Ja genau. Statische Verzweigung ist abhängig von Shader-Konstanten die immer gleich bleiben für alle Dreiecke in einem Drawcall.

Das kann man eigentlich auch komplett ohne HW-Support machen, wenn man einen entsprechenden Cache für die verwendeten Permutationen erstellt.

Das wird zum Beispiel bei HL2 und FarCry gemacht. Dort sind alle benötigten Permutationen ausgerollt. Entsprechend hat FarCry auch ein paar MB in den Shadercache Files.

Das ändert sich in DX10, da sieht zumindest die Runtime HLSL, wenn ich richtig gelesen habe, oder?

Die Runtime ja aber AFAIK bekommt der Treiber immer noch Binärcode.

Coda
2006-01-17, 23:02:36
Das wird zum Beispiel bei HL2 und FarCry gemacht. Dort sind alle benötigten Permutationen ausgerollt. Entsprechend hat FarCry auch ein paar MB in den Shadercache Files.Wieso hat das eigentlich ATI nicht bei R420 schon im Treiber gemacht? Gut, wenn ein Spiel wirklich alle Permutationen verwendet die potentiell möglich sind wirds eventuell knapp mit dem Speicher...

aths
2006-01-17, 23:09:21
Die Runtime und der Treiber bekommen immer nur binären Shadercode.Kann man den HLSL-Code nicht "online" kompilieren lassen?

mapel110
2006-01-17, 23:11:13
Kann man den HLSL-Code nicht "online" kompilieren lassen?
Wahrscheinlich möchte man den nicht jedem "Hans Wurst" offen zeigen?!

Coda
2006-01-17, 23:15:56
Kann man den HLSL-Code nicht "online" kompilieren lassen?Kann man. Aber nur per D3DX (Die Direct3D Hilfsbibliothek) und das spuckt einem einen Assembly-Blob aus den man dann an IDirect3DDevice9::CreatePixelShader oder IDirect3DDevice9::CreateVertexShader weitergibt.

Wahrscheinlich möchte man den nicht jedem "Hans Wurst" offen zeigen?!Das ist ziemlich egal. Wer die Shader versteht kann sie meistens eh auch selber schreiben ;)

Demirug
2006-01-17, 23:24:53
Das ist ziemlich egal. Wer die Shader versteht kann sie meistens eh auch selber schreiben ;)

Es gibt aber wirklich Paranoiker die ihere Shader auf keinen Fall als HLSL Code mit ausliefern wollen.

Coda
2006-01-17, 23:31:02
Tja dann hab ich Pech, ich generier das Zeug dynamisch :(

Und auf nen Compiler in Assembly hab ich nicht soo wirklich Lust ;)

Banshee18
2006-08-06, 02:37:57
*ausgrab*
Afaik ist es doch beim dynamic Branching im Vertexshader genau anders herum, also bei nV gehts gut/schnell, bei ATI ist es langsam. Ist dB im Vertex-Shader nicht so wichtig?

Gast
2006-08-06, 11:44:37
Kommt drauf an was du machen willst ;)

aths
2006-08-07, 10:37:42
*ausgrab*
Afaik ist es doch beim dynamic Branching im Vertexshader genau anders herum, also bei nV gehts gut/schnell, bei ATI ist es langsam. Ist dB im Vertex-Shader nicht so wichtig?In der Regel limitiert die Pixelleistung eher als die Vertexleistung. Dabei sind es beim Pixelteil nach wie vor eher die Textursamplings, die bremsen. Leider verträgt sich dynamic branching nicht immer mit der LOD-Bestimmung beim Texturzugriff, damit also mal den einen oder anderen Texturzugriff situationsabhängig wegzuoptimieren bringt's oft nicht.

tokugawa
2006-08-07, 19:39:35
Kann man Codas Aussagen eigentlich glauben, daß statisches Branching erstmal? sehr viel wichtiger ist? Denn er stellt ja genauso wie reunion Aussagen als Wahrheit in den Raum und bezeichnet auch noch andere als falsch, obwohl er es möglicherweise gar nicht genau weiß, oder etwa doch?

Doch, er hat schon recht. Klar wär schnelles dyn. Branching nett, aber in der Praxis benötigt man das nicht so oft, dass man es (im Vergleich zu den anderen SM3-Features) als das SM3-Feature bezeichnen könnte.

Zumindest fällt mir kaum ein Fall ein wo ich mir gedacht habe "Mist! Jetzt hätt ich gern schnelles dynamic Branching!". Ist aber auch teilweise ein Henne-Ei-Problem - wenn es generell schnell genug ist, wird man vielleicht auch konzentrierter darüber nachdenken was man damit alles anstellen kann.

Vielleicht sollte man mal Entwickler fragen was sie davon halten das es bei nVidia so langsam ist?

Es ist immer wieder schön zu sehen auf welcher Welle du schwimmst.

Naja, die meisten Entwickler die ich kenne (u.a. aus der Forschung) hätten zwar schon gern schnelles dynamisches Branching, aber das ist kein Totschlagfeature - die meisten mögen trotzdem NVIDIA lieber, weil für Entwickler NVIDIA einfach die besseren Tools bietet (etwa NVPerfKit, NVPerfHUD). Gerade beim Entwickeln sind genau solche Faktoren um einiges wichtiger als die Performance eines Einzelfeatures (oder Performance an sich, je nachdem welchen Entwickler man fragt - die FX war unter Entwicklern ja auch dank der Features erfolgreich, trotz der vergleichsweise niedrigeren Performance).


Genau. Man kann dann die Rechenkraft gezielt dort einsetzen, wo man sie braucht. Man könnte auch böse sagen, dass ATI es so effizient machen musste, weil die arithmetische Leistung zumindest beim R520 vergleichsweise gering ist. Der R580 ist hier ja auf gutem Wege, mal so richtig fette und effizient nutzbare ALU-Power ins Wohnzimmer zu bringen.

Ist auch der Grund warum ich mir für meine Diplomarbeit jetzt doch eine X1900XT gekauft habe, auch wenn ich bei manchen Seltsamheiten der ATI (die wohl nur Entwicklern, aber nicht Gamern auffallen) schon am Rande der Verzweiflung war. Eine Midrange-GeForce7 für meinen anderen Rechner hol ich mir aber trotzdem noch :)