PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : VSync, triple Buffer, Direct3D


Klingone mit Klampfe
2009-07-13, 00:17:23
Hallo zusammen,

mir reicht es langsam mit den Widersprüchen und ich hätte jetzt gerne eine klare Ansage: Wird der "Triple Buffer" bei nVidia-Karten zusammen mit "VSnyc" automatisch für Direct3D aktiviert oder nicht? Das hat hier neulich jemand behauptet (http://www.forum-3dcenter.org/vbulletin/showpost.php?p=7388132&postcount=9), aber in keinem einschlägigen Artikel im Netz wird das erwähnt, auch nicht in Leos aktuellen Nachrichten.

Danke,
Der KmK

Zephyroth
2009-07-13, 00:21:56
Ob dem so ist kann ich nicht mit Bestimmtheit sagen. Aktiviere ich aber VSYNC mit dem nHancer so ist die darauf folgende Framerate nicht ein ganzzahlig Geteiltes von 60Hz. Theoretisch verursacht VSYNC mit double buffer frameraten von 60fps, 30fps, 20fps, 15fps usw.

Bei all meinen Spielen (die keine Option für triple buffering haben) treten fließend Frameraten zwischen 20-60fps auf, typischerweise zwischen 25-35fps. Das spricht also für ein triple buffering.

Damit getestete Spiele sind: Testdrive Unlimited, Trackmania Nations, Tomb Raider Underworld, Mass Effect, Mirror's Edge, Supreme Commander und The Witcher.

Grüße,
Zeph

Klingone mit Klampfe
2009-07-13, 00:47:43
Ich hab's auch eben kurz ausprobiert und es wird in der Tat das komplette Spektrum bis 60 FPS (=Monitor-Hz) abgedeckt. Tolle Sache, aber warum weiß davon fast niemand etwas? Wieso verbreiten Anandtech, Computerbase, Leonidas und all die anderen veraltete Falschinformationen?

Spasstiger
2009-07-13, 00:49:48
Wieso verbreiten Anandtech, Computerbase, Leonidas und all die anderen veraltete Falschinformationen?
Weil die Redakteure dort nicht wirklich communitynah arbeiten und nicht an Forendiskussionen teilnehmen. Dass bei Nvidia unter D3D mit VSync automatisch Triplebuffering aktiviert wird, ist mindestens seit der GeForce 8800 GTX/GTS so. Zumindest hab ich es damals erstmals in einer Forendiskussion mitbekommen. Und ich hab mich auch schon mehrfach davon persönlich überzeugt.

Gast
2009-07-13, 02:05:17
Ich hab's auch eben kurz ausprobiert und es wird in der Tat das komplette Spektrum bis 60 FPS (=Monitor-Hz) abgedeckt. Tolle Sache, aber warum weiß davon fast niemand etwas?
Toller wäre es, wenn man Triple Buffering auch deaktivieren könnte?!

Zephyroth
2009-07-13, 09:18:32
Ich nehme an, du bist mit dem Triple-Buffering-FPS-Jittering (=ungleiche Frameabstände, ähnlich den Mikrorucklern bei SLI) nicht zufrieden. Leider kann ich dir da aber auch nicht weiterhelfen....

Grüße,
Zeph

Spasstiger
2009-07-13, 13:14:50
Wenn eine Anwendung eine Triple-Buffering-Option hat, sollte man es damit ausschalten können.

BlackBirdSR
2009-07-13, 15:04:56
Ich rede mit Leo darüber. In den News wurde das ja auch wieder nicht so dargestellt, wie ihr sagt..

Gibt es ne schnelle Methode das 100% zu überprüfen? Fraps mitloggen lassen oder?

LovesuckZ
2009-07-13, 15:38:18
Weil die Redakteure dort nicht wirklich communitynah arbeiten und nicht an Forendiskussionen teilnehmen. Dass bei Nvidia unter D3D mit VSync automatisch Triplebuffering aktiviert wird, ist mindestens seit der GeForce 8800 GTX/GTS so. Zumindest hab ich es damals erstmals in einer Forendiskussion mitbekommen. Und ich hab mich auch schon mehrfach davon persönlich überzeugt.

Das war das erste, was mir beim Spielen mit der 8800GTX aufgefallen ist - das nVidia unter D3D immer TB bei aktivem Vsync verwendet. Und das ist fast 3 Jahre her. Aber solche Kleinigkeiten (so wie viele andere auch) fallen eben bei den Reviewseiten unter den Tisch.

Mr. Lolman
2009-07-13, 16:46:44
Ich rede mit Leo darüber. In den News wurde das ja auch wieder nicht so dargestellt, wie ihr sagt..

Gibt es ne schnelle Methode das 100% zu überprüfen? Fraps mitloggen lassen oder?

Vsync aktivieren. Wenn man kein Tearing hat, die fps auf 60 limitiert sind, und man auch 'ungerade' fps-Zahlen haben kann, (wie 38,43,...) ist TB aktiv. Bei DB hingegen würden die fps mit aktivem VSync sofort auf 30 fallen, wenn keine 60fps erreicht werden können.

FlashBFE
2009-07-13, 17:24:24
Und wenn es nur diese Prerender-Queue und kein Triplebuffer ist? Bei Anand steht, dass DX garkein Triplebuffer kann, aber stattdessen eben die queue ähnliche Funktionalität hat nur oft falsch bezeichnet wird.
Die beste Methode, um die zwei Sachen auseinanderzuhalten wäre eine Prüfung, ob das letzte vollständige Bild angezeigt wird oder ob eine Verzögerung existiert, die größer wird, wenn man die Länge der queue vergrößert.

Mr. Lolman
2009-07-13, 17:28:53
Deinen letzten Satz musst du mir nochmal genauer erklären.... :|

Gast
2009-07-14, 00:02:04
Und wenn es nur diese Prerender-Queue und kein Triplebuffer ist? Bei Anand steht, dass DX garkein Triplebuffer kann, aber stattdessen eben die queue ähnliche Funktionalität hat nur oft falsch bezeichnet wird.

Das sind verschiedene dinge. Triple-buffer meint wirklich 3 buffer im grafikspeicher (die natürlich auch entsprechenden platz brauchen)

Die prerender-queue hält nimmt befehle für bis zu X frames im voraus auf, das ganze ist im prinzip eine reine software-sache, da wird kein weiterer puffer im grafikspeicher erzeugt.

blackbox
2009-07-14, 00:09:02
Also jetzt bin ich verwirrt, eigentlich dachte ich bisher, DirectX, Vsync und TB sei nicht möglich?
Und jetzt lese ich, seit der Geforce 8800 wird TB automatisch aktiviert, wenn Vsyc eingeschaltet wird?
Ja, was denn nun?
Könnte das jemand mal belegen?

Klingone mit Klampfe
2009-07-14, 00:11:52
Zieh' Dir FRAPS und probiere es aus: http://www.chip.de/downloads/FRAPS_13007435.html - ich bin auch verwirrt, deshalb habe ich den Thread erstellt ;)

Gast
2009-07-14, 01:07:27
und was soll man dann mit fraps testen?

ich kann vsync im nv panel aktivieren - tb wird aber nicht automatisch mit aktiviert. (standard ist aus!)

wird also nicht automatisch aktiviert - zumindest nicht bei meiner gtx285!

greez

ShadowXX
2009-07-14, 08:59:25
und was soll man dann mit fraps testen?

ich kann vsync im nv panel aktivieren - tb wird aber nicht automatisch mit aktiviert. (standard ist aus!)

wird also nicht automatisch aktiviert - zumindest nicht bei meiner gtx285!

greez
Der TB-Schalter im nV-CP ist nur für OpenGL.

Davon abgesehen ist mit dem "automatisch aktiviert" ist nicht gemeint das sich der Haken dort automatisch setzt.

FlashBFE
2009-07-14, 09:26:19
Deinen letzten Satz musst du mir nochmal genauer erklären.... :|
Hat sich eigentlich mit dem Text vom Gast erledigt:
Das sind verschiedene dinge. Triple-buffer meint wirklich 3 buffer im grafikspeicher (die natürlich auch entsprechenden platz brauchen)

Die prerender-queue hält nimmt befehle für bis zu X frames im voraus auf, das ganze ist im prinzip eine reine software-sache, da wird kein weiterer puffer im grafikspeicher erzeugt.
Ich beziehe mich auf den Text hier von Anandtech:
This means that when the queue is full, what is displayed can have a lot more lag. Microsoft doesn't implement triple buffering in DirectX, they implement render ahead (from 0 to 8 frames with 3 being the default).

The major difference in the technique we've described here is the ability to drop frames when they are outdated. Render ahead forces older frames to be displayed. Queues can help smoothness and stuttering as a few really quick frames followed by a slow frame end up being evened out and spread over more frames. But the price you pay is in lag (the more frames in the queue, the longer it takes to empty the queue and the older the frames are that are displayed).

In order to maintain smoothness and reduce lag, it is possible to hold on to a limited number of frames in case they are needed but to drop them if they are not (if they get too old). This requires a little more intelligent management of already rendered frames and goes a bit beyond the scope of this article.

Some game developers implement a short render ahead queue and call it triple buffering (because it uses three total buffers). They certainly cannot be faulted for this, as there has been a lot of confusion on the subject and under certain circumstances this setup will perform the same as triple buffering as we have described it (but definitely not when framerate is higher than refresh rate).

Both techniques allow the graphics card to continue doing work while waiting for a vertical refresh when one frame is already completed. When using double buffering (and no render queue), while vertical sync is enabled, after one frame is completed nothing else can be rendered out which can cause stalling and degrade actual performance.
Das liest sich für mich so als wäre das eine Schlange von fertig gerenderten Bildern. Wenn dem nicht so ist, dann hab ich das wohl komplett falsch verstanden.

joe kongo
2009-07-14, 11:11:26
Hier im 3DC war kürzlich ein Artikel darüber, in dem stand das Triplebuffer für OGL gilt, und bei DirectX die Anwendung das explizit unterstützen muss.
Vieleicht hab ichs auch nur falsch verstanden oder es wurde geändert.

Klingone mit Klampfe
2009-07-14, 13:04:32
und was soll man dann mit fraps testen?

Ob Du in einem Direct3D-Spiel mit aktiviertem vSync ausschließlich FPS in den Stufen 60, 30, 15 und 7/8 angezeigt werden (Das wäre dann der doppelte Puffer) oder auch alle Zwischenstufen (das wäre dann - vermutlich - der dreifache Puffer). Der Haken im CP ist völlig irrelevant, wenn unsere kleine Theorie stimmt.

Der Typ von Anandtech hat übrigens keine Ahnung, das sieht man an den Kommentaren zu dem Artikel. Der schwafelt nur herum und weiß auch nichts von dieser rätselhaften nVidia-Geschichte.

Gast
2009-07-14, 13:16:50
Also jetzt bin ich verwirrt, eigentlich dachte ich bisher, DirectX, Vsync und TB sei nicht möglich?

Die hardware bzw. der grafiktreiber kann immer noch machen was er will ;)

Wenn sie meinen einen weiteren renderpuffer im grafikspeicher anzulegen können sie das machen, ändert ja am ergebnis nichts, auch wenn die API keine möglichkeit anbietet die anzahl der renderpuffer einzustellen.

Man konnte ja auch schon FSAA verwenden, lange bevor DX es auch unterstützt hat.

Gast
2009-07-14, 19:34:00
Ob Du in einem Direct3D-Spiel mit aktiviertem vSync ausschließlich FPS in den Stufen 60, 30, 15 und 7/8 angezeigt werden (Das wäre dann der doppelte Puffer) oder auch alle Zwischenstufen (das wäre dann - vermutlich - der dreifache Puffer). Der Haken im CP ist völlig irrelevant, wenn unsere kleine Theorie stimmt.

Der Typ von Anandtech hat übrigens keine Ahnung, das sieht man an den Kommentaren zu dem Artikel. Der schwafelt nur herum und weiß auch nichts von dieser rätselhaften nVidia-Geschichte.

ah okay - danke!

MountWalker
2009-07-20, 13:14:24
Render Ahead, das von Microsoft traditionell als "Ersatz für Triple Buffering" verwendet wird, ist nicht gleich Triple Buffering und der Typ von Anandtech (http://www.anandtech.com/video/showdoc.aspx?i=3591) hat mehr Ahnung als ihr denkt. Ihr müsst euch einfach nur mal ansehen, wie viele Ego-Shooter-Fans mit Vsync und angeblich aktiviertem Triple Buffering, das kein Triple Buffering, sondern Render Ahead ist, von einem schwammigen Mausverhalten, also known as Mouse-Input-Lag oder kurz Mouse-Lag berichten. Mit triple Buffering - echtem Triple Buffering - gibts kein Mouse-Lag, mit Render Ahead, was von einigen Triple Buffering genannt wird und das die Framerate genauso "glättet" wie Triple Buffering, also mi FRAPS nicht von Triple Buffering unterscheidbar ist, gibts ein Mouse-Lag. In schnellen MP-Shootern spielt das eine wichtige Rolle.

Klingone mit Klampfe
2009-07-20, 14:32:07
Render Ahead, das von Microsoft traditionell als "Ersatz für Triple Buffering" verwendet wird, ist nicht gleich Triple Buffering und der Typ von Anandtech (http://www.anandtech.com/video/showdoc.aspx?i=3591) hat mehr Ahnung als ihr denkt. Ihr müsst euch einfach nur mal ansehen, wie viele Ego-Shooter-Fans mit Vsync und angeblich aktiviertem Triple Buffering, das kein Triple Buffering, sondern Render Ahead ist, von einem schwammigen Mausverhalten, also known as Mouse-Input-Lag oder kurz Mouse-Lag berichten. Mit triple Buffering - echtem Triple Buffering - gibts kein Mouse-Lag, mit Render Ahead, was von einigen Triple Buffering genannt wird und das die Framerate genauso "glättet" wie Triple Buffering, also mi FRAPS nicht von Triple Buffering unterscheidbar ist, gibts ein Mouse-Lag. In schnellen MP-Shootern spielt das eine wichtige Rolle.

Und was heißt das jetzt konkret für die Einstellung im nVidia-Treiber? Ist es nun TB, RA oder was ganz anderes? Deiner Ausführung nach müsste es eigentlich RA sein.

Tesseract
2009-07-20, 15:59:53
Vsync aktivieren. Wenn man kein Tearing hat, die fps auf 60 limitiert sind, und man auch 'ungerade' fps-Zahlen haben kann, (wie 38,43,...) ist TB aktiv. Bei DB hingegen würden die fps mit aktivem VSync sofort auf 30 fallen, wenn keine 60fps erreicht werden können.

das stimmt so pauschal nicht. wenn der fps-counter über mehrere sekunden mittelt (was viele machen) kannst du auch mit stink normalem doublebuffer-vsync ungerade FPS rausbekommen.
wenn du z.B. 55% der zeit 60 fps, 37% der zeit 30 fps und 8% der zeit 15 fps hast macht das im mittel 56,1 fps über den gemessenen zeitraum.

Zephyroth
2009-07-20, 16:05:57
Da müßte man aber über die Mittelungszeit verschiedene Frameraten zusammenbringen, solche heftigen fps-Sprünge sind nur schwer zu erzielen. Wenn du über 30 Frames mittelst, dann ist die Meßzeit in der Größenordnung einer Sekunde. Man müßte sich für diesen Testfall schon sehr blöd spielen. Aber theoretisch ist es möglich....

Grüße,
Zeph

Klingone mit Klampfe
2009-07-20, 16:38:08
Ich würde ja einfach direkt bei nVidia nachfragen, aber mir fehlt das technische Know-How, um das adäquat mit den korrekten englischen Fachbegriffen formulieren zu können.

puntarenas
2009-07-20, 16:42:12
das stimmt so pauschal nicht. wenn der fps-counter über mehrere sekunden mittelt (was viele machen) kannst du auch mit stink normalem doublebuffer-vsync ungerade FPS rausbekommen.
Welche FPS-Counter machen das denn, hat doch nur Nachteile?! Ganz laienhaft würde ich die Zeit zwischen zwei Frames nehmen und das auf FPS hochrechnen.

Johnny R ausm Urlaub
2009-07-25, 15:52:18
Wurde noch nicht verlinkt, aber ich denke ihr bezieht Euch auf die Artikel.

http://www.anandtech.com/video/showdoc.aspx?i=3591
http://www.anandtech.com/video/showdoc.aspx?i=3601&p=1

RavenTS
2009-07-25, 17:17:04
Ich würde ja einfach direkt bei nVidia nachfragen, aber mir fehlt das technische Know-How, um das adäquat mit den korrekten englischen Fachbegriffen formulieren zu können.

Dann schreib doch der deutschen nVIDIA-Vertretung.

Gastbapre
2009-07-26, 18:22:15
hallo zusammen.
bin zufällig auf diesen beitrag hier gestoßen und wollte auch mal meinen senf beitragen.

also ich denke auch, dass es sich (biser zumindest) unter directx um einen "render ahead" handelt statt eines tripple bufferings.

denn genau dieses von einigen schon angesprochene mouse lag bekam ich ganz deutlich unter dead space zu spüren. 1920x1200 auflösung und vsync on war zwar tearing frei aber mit ca ner halben sekunde mouselag. vsync deaktiviert hat "geteared" ohne ende. besonders bei dead space zu sehen wo überall flackerndes licht war. sehr nervig.

nun haben einige von euch vielleicht schon den aktuellen treiber von nvidia installiert und man bemerkt plötzlich dort einen menüpunkt der tripple buffering aktiviert!!
ich war sehr überrascht.
und siehe da... selbts mit deaktiviertem vsync hat das tearing enorm abgenommen. zwar immer noch leicht aber bei weitem nicht so schlimm wie vorher. und mit vsync kein mouselag mehr.

soviel also zu meinen erfahrungen. würde sagen einfach mal den neuesten treiber installieren und selbst ausprobieren.

hoffe dann hier von einigen eurer gemachten erfahrungen lesen zu können.

gruß
bapre

Yavion
2009-09-05, 23:56:49
Render Ahead, das von Microsoft traditionell als "Ersatz für Triple Buffering" verwendet wird, ist nicht gleich Triple Buffering und der Typ von Anandtech (http://www.anandtech.com/video/showdoc.aspx?i=3591) hat mehr Ahnung als ihr denkt. Ihr müsst euch einfach nur mal ansehen, wie viele Ego-Shooter-Fans mit Vsync und angeblich aktiviertem Triple Buffering, das kein Triple Buffering, sondern Render Ahead ist, von einem schwammigen Mausverhalten, also known as Mouse-Input-Lag oder kurz Mouse-Lag berichten. Mit triple Buffering - echtem Triple Buffering - gibts kein Mouse-Lag, mit Render Ahead, was von einigen Triple Buffering genannt wird und das die Framerate genauso "glättet" wie Triple Buffering, also mi FRAPS nicht von Triple Buffering unterscheidbar ist, gibts ein Mouse-Lag. In schnellen MP-Shootern spielt das eine wichtige Rolle.


Es sind verschiedene Dinge aber eins steht ja mal fest: Triple Buffering verursacht ebenfalls Input Lags. Warum sollte es anders sein: Auch hier wird die Bildschirm-Ausgabe max. um ein weiteres Frame verzögert.
Ich habe auch noch nie gehört, dass jemand Render Ahead als Triple Buffering bezeichnet.
Dass DX bei aktivierten VSYNC den Triple Buffer reinhaut ist möglich aber auf Grund der Ergebnisse aus Framecountern nicht direkt ableitbar. Ob es so ist, würde mich allerdings auch interessieren.

dfens101
2009-09-26, 20:17:00
Gibt es inzwischen zu diesem Thema neue Erkenntnisse?

So wie ich den Artikel bei AnandTech interpretiere, bietet nur OpenGL "echtes" Triple Buffering, was der Methode "page flipping" (siehe englischer Wikipedia-Artikel zu TB) gleichkommt. Bei echtem TB hätte man dann weniger Input-Lag als bei aktiviertem VSync und Double Buffering.

Unter DirectX gibt es demnach nur "unechtes" TB, also besagtes "render ahead", auch wenn in den Spieloptionen die Rede von TB ist. Bei diesem unechten TB hätte man wiederum mehr Input-Lag als bei VSync mit DB.

Allerdings ist mir nicht ganz klar, wie der D3DOverrider, der ja bekanntlich VSync mit TB forcieren kann, arbeitet; ich fürchte aber, dass es sich dabei auch um "render ahead" handelt.

corvus
2010-06-30, 18:32:27
Bei jedem 3D Game ist auch heute noch TB an mit vsyng.

Maorga
2010-06-30, 20:00:31
So hab mal die Uningine bemüht.

Folgende Resultate:

Unter DirectX9 mit prerender limit 3 (hab verschiedene Prerenderlimits verwendet scheint aber gar keine Auswirkung zu haben auch 0 nicht) hab ich Schwankungen von 40-60 Fps da ich nur alle sekunde abfrage ist es relativ ungenau aber es halbiert sich nicht die Frameanzahl. So wenn nun aber aktiv V-Sync über das CP gefordert werden steht es auch bei 30 und 60 fest.

Unter DirectX10 egal welches Prerenderlimit eingestellt ist ist es gut sichtbar wechselt der Framecounter je nach Szene zwischen 20, 30 und 60 hin und her. Egal ob von der Engine es gefordert wird oder vom Treiber.

So scheint also doch was bei V-Sync automatisch vorraus berechnet zu werden.

Biba

Maorga