PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wozu sind Anti-Aliasing Kompatibilitätsbits ( AA-Bits ) eigentlich da?


Lawmachine79
2010-09-20, 14:05:01
Split aus:
Antialiasing - Kompatibilitätsbits - Sammelthread (http://www.forum-3dcenter.org/vbulletin/showthread.php?p=8280616#post8280616)

Ich fände es schöner, wenn wir eine Erläuterung dazu im Sticky FAQ - empfehlenswerte Tools, Tipps und nützliche Links (http://www.forum-3dcenter.org/vbulletin/showthread.php?t=489906) hätten. Wenn "man" da was beitragen möchte, ist der Kommentarthread zu "FAQ - empfehlenswerte Tools, Tipps und nützliche Links" (http://www.forum-3dcenter.org/vbulletin/showthread.php?p=8218403) eine geeignete Anlaufstelle.


Die Kompatibilitätsbits gibt es schon ewig und bislang hat man sie eben mit nHancer gesetzt, jetzt ist der Inspector in die Bresche gesprungen und das SLI Profile Tool ermöglicht ebenfalls entsprechende Vorgaben. Einen Artikel dazu hat es in den letzten Jahren allerdings soweit ich weiß leider nicht gegeben und um mehr als oberflächliches Blablubb zu texten bräuchte man wohl Einblicke in Treiberinterna und/oder ein hinreichendes Verständnis der Funktionsweise von Anti-Aliasing, sowie einen guten Überblick welche Ansätze sich als Workaround zu Anti-Aliasing-Inkompatibilitäten bei bestimmten Renderingansätzen anbieten und durch die Kompatibilitätsbits entsprechend aktiviert werden können.

Der Thread hier ist übrigens deshalb kein Sticky, weil wir schon so viele davon haben, er ist aber zumindest aus dem FAQ-Thread heraus mehrfach verlinkt.

Too many Stickies (http://www.youtube.com/watch?v=-XJN7qqFqPE) :whistle:
Wozu sind die AA-Bits überhaupt da?

kmf
2010-09-20, 15:40:53
Wozu sind die AA-Bits überhaupt da?Im besten Fall beste Leistung bei bester Qualität. :D

Lawmachine79
2010-09-20, 22:48:10
Gibt es nirgends einen Guide dazu, der einen schnellen Überblick verschafft? Woher weiß ich z.B., wie ich Far Cry mit HDR unter dem Einsatz der Bits AA aufzwingen kann (und kann ich auch SSAA aufzwingen?).

puntarenas
2010-09-21, 11:13:01
Zunächst einmal grundsätzlich, unzählige Spiel ermöglichen die Aktivierung von Anti-Aliasing auch ohne das Setzen von Kompatibilitätsbits (oder Exe-Renaming, dem "Bettelpfad des armen Mannes") und idealerweise sogar im Spieleigenen Optionsmenü.

Gibt es nirgends einen Guide dazu, der einen schnellen Überblick verschafft?

Nicht dass ich wüsste und mangels tiefergehener Einblicke in die Abläufe beim Rendering kann ich auch nicht sagen, was nun präzise der Treiber für Möglichkeiten hat, doch noch Anti-Aliasing zu ermöglichen, wenn die Spielengine Verfahren nutzt, die dies nicht ohne Weiteres erlauben (oftmals Beleuchtungsgeschichten wie HDR, Defered Shading, ...).

Was ich sagen kann ist, dass in den Treibern ganz offenbar verschiedene "Pfade" existieren. Die Grafikkartenhersteller passen ihre Treiber immer wieder an Spiele mit bestimmten Techniken an, sei es aus Performancegründen oder sei es, um die Kompatibilität zu erhöhen oder auch Anti-Aliasing als Zusatzfeature zu ermöglichen, obwohl es der Spieleentwickler in seiner Engine nicht vorgesehen hat. Da es nicht einen Lösungsansatz für sämtliche Gameengines gibt, existieren diese Treiberpfade eben parallel im Treiber und der Treiber greift bei Bedarf gezielt darauf zurück.

Meist werden die entsprechenden Treiberpfade automatisch aktiviert, wenn der Treiber die "Game-EXE" entdeckt und der Grafikkartenhersteller im Treiber eine bestimmte Verknüpfung zum Kompatibilitätsmodus eingearbeitet hat. Deshalb kann man auch umgekehrt die Aktivierung bestimmter Kompatibilitätspfade manuell bewirken, indem man die EXE eines Spiels einfach entsprechend umbenennt. Im Umfeld von Radeon-Grafikkarten liest man dann beispielsweise oft Dinge wie "Versuch doch mal die bioshock.exe!".

Dies ist allerdings erstens umständlich, zweitens nicht immer praktikabel, zum Beispiel erlauben einige Kopierschutzmechanismen oder Distributionsformen kein EXE-Renaming, und drittens für GeForce-Karten auch vollkommen überflüssig, da der Nvidia-Treiber einen Zugriff von Außen auf die Treiberprofile (nicht nur AA-Bits btw.) gestattet, wenngleich inoffiziell und damit nur über Fremdtools wie den Inspector.

Hier kommen dann also die Anti-Aliasing-Kompatibilitätsbits ins Spiel. Anstatt die ausführbare Datei eines Spiels in "bioshock.exe" umzubenennen setzt man im Profil des betreffenden Spiels einfach das Kompatibilitätsbit "0x00000145". Damit wird dann immer der "Bioshock-Pfad" im Treiber benutzt, sobald das Spiel gestartet wird.

Damit nicht jeder als Einzelkämpfer mühsam durchprobieren muss, ob und mit welchem Kompatibilitätsbit Anti-Aliasing ermöglicht werden kann, versuchen wir bekannte Bits eben hier im Antialiasing - Kompatibilitätsbits - Sammelthread (http://www.forum-3dcenter.org/vbulletin/showthread.php?t=490867) zusammenzutragen.


Woher weiß ich z.B., wie ich Far Cry mit HDR unter dem Einsatz der Bits AA aufzwingen kann (und kann ich auch SSAA aufzwingen?).
Da es hier in der Liste noch nicht aufgeführt wird, musst du fragen, googlen oder es selbst ausprobieren und uns deine Erfahrung mitteilen. Die Anzahl der Kompatibilitätsbits ist relativ übersichtlich, ihre Auflistung im Inspector IMHO leider nicht.

Ideal wäre es, wenn die Bits aussagekräftiger benannt werden könnten, aber wer weiß schon welches Bit welchen Ursprung hat. "0x00000044" war zum Beispiel jahrelang als "AA & HDR" bekannt, ganz einfach weil es im nHancer so bezeichnet gewesen ist. Jetzt im Inspector heißt das Bit "0x00000044 (FIFA Soccer 2010, Crazy Machines II, Space Siege, FIFA Soccer 2009, BigWorld, Spore, Neverwinter Nights 2)". Die Verwirrung wird dadurch IMHO nur noch größer, versuch mal zu googeln oder das mit älteren Forenberichten abzugleichen, da wirst du kirre.

Ich will das auch überhaupt nicht dem Inspector ankreiden, ideal wäre gewesen wenn Nvidia die Bits selbst eindeutig "menschenlesbar" bezeichnet hätte und zwar einfach nach der Engine (+Version der Engine) für die sie ursprünglich konzipiert wurden. Dann hätten wir international eine gemeinsame Nomenklatur gehabt, jetzt haben wir nur Chaos. Ich für meinen Teil vermeide daher Bezeichnungen wie "das Stalker Bit", das ist für mich einfach "0x0000F0C1". Ich gebe zu, das wiederum ist nicht gerade einprägsam und passt wieder nicht so gut zu Forenberichten wie "Mach mal EXE-Renaming zu Stalker!".

Situation normal, all fucked up! :biggrin:

Lawmachine79
2010-09-21, 11:37:32
Zunächst einmal grundsätzlich, unzählige Spiel ermöglichen die Aktivierung von Anti-Aliasing auch ohne das Setzen von Kompatibilitätsbits (oder Exe-Renaming, dem "Bettelpfad des armen Mannes") und idealerweise sogar im Spieleigenen Optionsmenü.
...
Situation normal, all fucked up! :biggrin:
Ok - also mit AA-Bits sage ich dem Treiber, er soll das AA von Spiel X genauso applizieren wie das von Spiel Y. Wie setzen sich die AA-Bits denn zusammen? Das ist ja irgendeine hexadezimale Zahl, die irgendwie zustande kommt.

Orbmu2k
2010-09-21, 11:57:21
Wie setzen sich die AA-Bits denn zusammen? Das ist ja irgendeine hexadezimale Zahl, die irgendwie zustande kommt.

Darauf wirst du niemals eine klare Antwort finden.

NVIDIA wird sich hierzu niemals äussern, da dies dem Konkurenten (AMD) ggf. helfen könnte Performance Optimierungen "abzuschaun". Die Flags sind zudem undokumentiert und werden nur dadurch gefunden da sie in den Spiele Profilen die NVIDIA mit dem Treiber ausliefert vorkommen.

Ich hatte schonmal geschrieben dass die einzige Möglichkeit darin bestünde das Pferd von hinten aufzuzäumen. Also eine Test Engine zu bauen die alle erdenklichen Renderpipelines nachbildet und dann könnte man vielleicht durch Ausprobieren Rückschlüsse auf die einzelnen Flags ziehen.

Allerdings muss erstmal jemand so eine Test Engine bauen.

BeetleatWar1977
2010-09-21, 12:01:18
Ok - also mit AA-Bits sage ich dem Treiber, er soll das AA von Spiel X genauso applizieren wie das von Spiel Y. Wie setzen sich die AA-Bits denn zusammen? Das ist ja irgendeine hexadezimale Zahl, die irgendwie zustande kommt.
Darauf wirst du niemals eine klare Antwort finden.

NVIDIA wird sich hierzu niemals äussern, da dies dem Konkurenten (AMD) ggf. helfen könnte Performance Optimierungen "abzuschaun". Die Flags sind zudem undokumentiert und werden nur dadurch gefunden da sie in den Spiele Profilen die NVIDIA mit dem Treiber ausliefert vorkommen.

Ich hatte schonmal geschrieben dass die einzige Möglichkeit darin bestünde das Pferd von hinten aufzuzäumen. Also eine Test Engine zu bauen die alle erdenklichen Renderpipelines nachbildet und dann könnte man vielleicht durch Ausprobieren Rückschlüsse auf die einzelnen Flags ziehen.

Allerdings muss erstmal jemand so eine Test Engine bauen.

Naja, die Hex-Zahl wird ein (oder mehrere) Register bedienen:

000045 z.B. 101101
Die Flags werden Tricks oder Überbrückungen setzten (in der Renderpipline) damits trotzdem geht.

Lawmachine79
2010-09-21, 12:04:39
Darauf wirst du niemals eine klare Antwort finden.

NVIDIA wird sich hierzu niemals äussern, da dies dem Konkurenten (AMD) ggf. helfen könnte Performance Optimierungen "abzuschaun". Die Flags sind zudem undokumentiert und werden nur dadurch gefunden da sie in den Spiele Profilen die NVIDIA mit dem Treiber ausliefert vorkommen.


Allerdings muss erstmal jemand so eine Test Engine bauen.
Ahhh - ok: man sieht das NVidia für Spiel X in dem Register, in dem die AA-Kompatibilität geregelt wird Änderung Y vorgenommen hat und versucht, daß auf Spiel Z zu übertragen, indem man den gleichen Wert in das AA-Register einträgt?

Radon
2010-09-21, 15:45:22
Also wenn man die Profile Binär darstellt sind das quasi alles Flags für verschiedene Einstellungen?

1111000011000001 = 0x0000F0C1 Stalker
0000000101000101 = 0x00000145 Bioshock
0000000001000100 = 0x00000044 AA & HDR

Könnte man da nicht alle Flags durchprobieren und Vermutungen anstellen, welche Funktion diese haben?
z.B. ist bei allen 3 Profilen hier das 7. Bit gesetzt, was 0x00000040 wäre.

Oder akzeptiert der Treiber nur bestimmte Profile bzw. Flagkombinationen?

BeetleatWar1977
2010-09-21, 15:46:22
Also wenn man die Profile Binär darstellt sind das quasi alles Flags für verschiedene Einstellungen?

1111000011000001 = 0x0000F0C1 Stalker
0000000101000101 = 0x00000145 Bioshock
0000000001000100 = 0x00000044 AA & HDR

Könnte man da nicht alle Flags durchprobieren und Vermutungen anstellen, welche Funktion diese haben?
z.B. ist bei allen 3 Profilen hier das 7. Bit gesetzt, was 0x00000040 wäre.

Oder akzeptiert der Treiber nur bestimmte Profile bzw. Flagkombinationen?
Theoretisch beliebige - aber wie willst du durchprobieren? :confused:

Lawmachine79
2010-09-21, 17:28:53
Theoretisch beliebige - aber wie willst du durchprobieren? :confused:
Sind doch nur 131072 Möglichkeiten.

BeetleatWar1977
2010-09-21, 17:35:05
Sind doch nur 131072 Möglichkeiten.
Rechnen^^

8Digit Hexwort sind: 4294967296 Varianten :usad:

Blaire
2010-09-21, 18:34:49
Oder akzeptiert der Treiber nur bestimmte Profile bzw. Flagkombinationen?

Eigentlich nur das, was der Treiber auch kennt oder (inoffiziell) eingepflanzt bekommen hat. Ist ja wie mit den normalen AA und SLI Values genauso, ansonsten zeigt der Treiber keine Reaktion.

Lawmachine79
2010-09-22, 00:00:53
Rechnen^^

8Digit Hexwort sind: 4294967296 Varianten :usad:
Hmm - wieso lässt sich das dann binär in 16 Bit darstellen? Müssten das dann nicht 32 Bit sein? 2^32=4294967296

BeetleatWar1977
2010-09-22, 05:58:24
Hmm - wieso lässt sich das dann binär in 16 Bit darstellen? Müssten das dann nicht 32 Bit sein? 2^32=4294967296
Eve hat z.B.
f0000045 = 11110000000000000000000001000101