Fehler in Opengl und 16-bit

MaOaM

Lt. Commander
Registriert
Dez. 2002
Beiträge
1.322
ich kann kein Opengl spiel vernünftig in 16-bit zocken. es fehlen Texturen und ein starker ruckeleffeckt tritt auf. In Direct 3D ist da kein prob. Mein sys steht unten. Mein Treiber ist der 40.72. zwar auch nicht mehr lange aber ich glaube kaum das es daran liegt weil das prob auch bei älteren Games auftritt. Mit meiner alten TNT2 M64 hat ich das prob nicht.
 
Original erstellt von Gnom66
ich kann kein Opengl spiel vernünftig in 16-bit zocken. es fehlen Texturen und ein starker ruckeleffeckt tritt auf. In Direct 3D ist da kein prob. Mein sys steht unten. Mein Treiber ist der 40.72. zwar auch nicht mehr lange aber ich glaube kaum das es daran liegt weil das prob auch bei älteren Games auftritt. Mit meiner alten TNT2 M64 hat ich das prob nicht.
Erst mal eine ganz blöde Frage: Wieso spielst du nicht in 32 Bit? Die GeForce4 MX gewinnt im 16-Bit-Modus keine Performance.
 
von aths
Erst mal eine ganz blöde Frage: Wieso spielst du nicht in 32 Bit? Die GeForce4 MX gewinnt im 16-Bit-Modus keine Performance.

Nur mal so'ne Frage: Du glaubst doch wohl ncht wirklich, was Du schreibst?
32-bit Farbtiefe kostet dem Grafkchip bzw. dem Prozessor aufgrund der höheren Genauigkeit einiges mehr an Zeit.

@GNom66: Bei welchen Spielen speziell? Alle auf Q3-Engine basierende, oder wie?
Schau mal nach, auf welche Farbtiefe Du deinen Desktop gesetzt hast und was Du im OpenGL-Menü deiner Graka eingestellt hast. (Standard ist hier Always use Desktop Colour Depth, wenn ich nicht irre). Wenn Du mit 16-Bit spielen willst, wähle hier einfach "always use 16bpp" aus. Manche Spiele (auch Q3) machen teils Schwierigkeiten, wenn du eigentlich mit Desktop-Farbtiefe fährst, laut Treiber(also mietwegen 32-Bit) und im Spiel dann 16-Bit einstellst.
 
Original erstellt von Endurance
Nur mal so'ne Frage: Du glaubst doch wohl ncht wirklich, was Du schreibst?
Hm. Wozu glauben, wenn man es weiß?
Original erstellt von Endurance
32-bit Farbtiefe kostet dem Grafkchip bzw. dem Prozessor aufgrund der höheren Genauigkeit einiges mehr an Zeit.
Intern wird ohnehin 32-bittig (z.B. Voodoo3) gerechnet, doch die Werte werden beim 16-Bit-Rendering nach der Berechnung auf ein 16-Bit-Format gekappt, damit sie in den 16-Bit-Framebuffer passen. Hier lag früher auch der Hemmschuh: Das Speicherinterface war zu eng, zu ineffizient oder beides, um 32 Bit mit gleicher Performance laufen zu lassen. Die GeForce4 MX hat aber gemessen an der Füllrate genügend Bandbreite auch bei 32 Bit. Durch 16 Bit gibts also keinen Gewinn.

Voodoo4 und 5 rechnen intern 40-bittig (10 pro Kanal), GeForces 36-bittig (9 pro Kanal bzw. Sign+8 pro Kanal) Radeon8500-Karten höchstwahrscheinlich 48-bittig (inkl. den Bits für Overbright Lighting)...
 
Zuletzt bearbeitet:
So, wenn du das sagst, hab ich da eine Frage: Wieso ist Q3 mit einer GF4TI4200 auf einem XP2000+ mit allen Details in 1024x768 in 16-Bit um 26,8fps schneller?

bei 16Bit: 196,7
bei 32Bit: 169,9

So, jetzt bist du wieder dran ;).

Bei UT das gleiche, auch meine Werte beim 3dmark sind mit 16-Bit höher.
 
Original erstellt von Endurance
So, wenn du das sagst, hab ich da eine Frage: Wieso ist Q3 mit einer GF4TI4200 auf einem XP2000+ mit allen Details in 1024x768 in 16-Bit um 26,8fps schneller?

bei 16Bit: 196,7
bei 32Bit: 169,9

So, jetzt bist du wieder dran ;).

Bei UT das gleiche, auch meine Werte beim 3dmark sind mit 16-Bit höher.
Erst mal ist nun die Frage zu stellen, ob das daran liegen könnte dass der Chip in 32 Bit genauer "rechnen" muss. Im 32-Bit-Modus wird bei PixelShader 1.0-1.3-Fähigkeit pro Kanal mit Vorzeichen + 8 Bit gerechnet.

Wenn "genaueres" Rechnen nun länger dauern sollte, wie soll das gehen? Pro Kanal eine 5-Bit-Einheit, die dann in 2 Passes das Ergebnis liefert? 16-Bit-Rendering speichert die Farben im 5-6-5-Formal. Man bräuchte mindestens eine 6 Bit breite Einheit. Sie bearbeitet aber natürlich 9 Bit zugleich. Dein Einwand von "32-bit Farbtiefe kostet dem Grafkchip bzw. dem Prozessor aufgrund der höheren Genauigkeit einiges mehr an Zeit." stimmt also nicht.

Wenn du nun trotzdem noch 15% gewinnst, ist deine Graka im 32 Bit-Modus offenbar noch leicht bandbreiten-limitiert.
 
Zuletzt bearbeitet:
aths's Erklärung verstehe ich nur halb halb :p
aber ich hab hier paar Daten für die Diskussion über Bandbreitelimitierung.
P4 2,4 GHz, ATI Radeon 9700 Pro 1024x768 Quake3

Textures, Color 32 Bits: 230.7 fps
Textures, Color 16 Bits: 230.6 fps

Temp
 
Original erstellt von q3tempest
aths's Erklärung verstehe ich nur halb halb :p
aber ich hab hier paar Daten für die Diskussion über Bandbreitelimitierung.
P4 2,4 GHz, ATI Radeon 9700 Pro 1024x768 Quake3

Textures, Color 32 Bits: 230.7 fps
Textures, Color 16 Bits: 230.6 fps

Temp
Da liegt zusätzlich noch CPU-Limitierung vor :)
 
von aths
Wenn du nun trotzdem noch 15% gewinnst, ist deine Graka im 32 Bit-Modus offenbar noch leicht bandbreiten-limitiert.

Erstens, tut mir leid, dass ich das oben mal so scharf formuliert habe mt (glaubst ja selbs ncht, was Du da schreibst), echt sorry.

Aber genau das was Du von Bandbreitenlimiterung schreibst istt doch das Problem. Vor allem bei Auflösungen jenseits von 1280x1024 ist der Unterschied bei GF4-Karten zwischen 16 und 32 Bit festzustellen. Da ich selber auch schon mal DSP's programmiert habe, bin ich davon ausgegangen, dass der Chip, wenn er nur mit 16-Bit rechnet in die "oberen" und "unteren" 16-Bit enes 32Bt Registers schreiben kann, irgendwo ein Flag setzt, dass er selbst erkennt, dass nur mit 16-Bit gerechnet wird. Auf diese Art und Weise haben wir auf einem 16-bittigen DSP einen in 8-bit aufgenommenen Sound fast doppelt so schnell verarbeitet. Dachte halt, dass das auch für Graka's gelten üsste, weil iss halt eine perfekte Lösung find ich. Das hieße aber, dass in diesem Fall der Aufwand für 32-Bit bei einem Zyklus wäre und der für 16-Bit halt bei knapp über einem halben (Flag setzen, evtl. noch andere Register vorbelegen, etc). liegen würde, bei der Graka. Hoffe ich hab mich halbwegs verständlich ausgedrückt. Bei dem DSP handelte es sich entweder um einen Motorola oder einen von TI(wir haben an viel beiden experimientiert) :D
 
Ich arbeite im CAD-Bereich und hatte auch eine Zeitlang damit zu kämpfen das die Objekte beim rotieren un zoomen "ruckelten". Mir hat dann ein Supporttechniker der Softwarefirma erklärt, daß die Objekte im 16-Bit Modus unter Software-Open-GL aufgebaut werden und im 32-Bit Modus unter Hardware-Open-GL. Nachdem ich meine Desktopeinstellungen auf 32-Bit umgestellt hatte lief alles sehr flüssig.
Ich konnte die Aussage auch in der CAD-Software überprüfen. Dort stand bei 16-Bit Software-OpenGL und bei 32-Bit Hardware-OpenGL.
 
Original erstellt von Endurance
Aber genau das was Du von Bandbreitenlimiterung schreibst istt doch das Problem. Vor allem bei Auflösungen jenseits von 1280x1024 ist der Unterschied bei GF4-Karten zwischen 16 und 32 Bit festzustellen.
Das müsste dann generell auftreten. Ist die Schere erst ab einer bestimmten Auflösung festzustellen, liegt in niedrigeren Auflösungen CPU-Limitierung vor. Die Frage ist, ob man sich wegen der geringen fps-Vorteile tatsächlich noch den 16-Bit-Modus antun will.
Original erstellt von Endurance
Da ich selber auch schon mal DSP's programmiert habe, bin ich davon ausgegangen, dass der Chip, wenn er nur mit 16-Bit rechnet in die "oberen" und "unteren" 16-Bit enes 32Bt Registers schreiben kann, irgendwo ein Flag setzt, dass er selbst erkennt, dass nur mit 16-Bit gerechnet wird.
Es werden ja einzelne Farbkanäle berechnet, wobei die 16-Bit-Farbpräzision nicht nur die halbe 32-Bit-Präzision ist (da im 32-Bit-Modus mit "nur" 24 Bit Farbe gerechnet wird.) Es macht einfach keinen Sinn, die Logik für nur die halbe Breite auszulegen. Zumal der Einbruch bei einer effektiven Halbierung der Füllrate auffälliger sein sollte. (So eine Halbierung scheint es bei GeForce2 (auch MX) zu geben. Das liegt aber nicht an Chip-Eigenarten, sondern am Speicherinterface, welches limitiert.)

Wieso wäre es eine "perfekte" Lösung, im 16-Bit-Modus intern nur halb so genau zu rechnen? Eine Blending-Operation sollte immer möglichst genau stattfinden. (So werden Audio-Daten zur Bearbeitung auch gerne auf 24 Bit hochgesampelt, selbst wenn die CD am Ende weiterhin nur 16-bittig speichert.)
 
Zuletzt bearbeitet:
[Offtopic an ;)]

Ja "perfekt" wegen der Effizienz.
Und eigentlich gibst Du ja zu, dass bei 32-Bit der Output der Graka an fps geringer ist.

Und da hat mich eben diese Aussage -
von aths
Erst mal eine ganz blöde Frage: Wieso spielst du nicht in 32 Bit? Die GeForce4 MX gewinnt im 16-Bit-Modus keine Performance.
- etwas gestört.

Die Graka stellt in 32Bit weniger fps dar als in 16-Bit, sonst würde bei vielen Spielen zur Leistungssteigerung ja auch nicht geraten, dass man die Farbtiefe runterdrehen soll ;).

[Offtopic aus ;)]
 
Original erstellt von Endurance
[Offtopic an ;)]

Ja "perfekt" wegen der Effizienz.
Wieso ist es effizienter, für 32 Bit 2 Passes zu brauchen??
Original erstellt von Endurance
Und eigentlich gibst Du ja zu, dass bei 32-Bit der Output der Graka an fps geringer ist.

Und da hat mich eben diese Aussage -

- etwas gestört.

Die Graka stellt in 32Bit weniger fps dar als in 16-Bit, sonst würde bei vielen Spielen zur Leistungssteigerung ja auch nicht geraten, dass man die Farbtiefe runterdrehen soll ;).

[Offtopic aus ;)]
Dieser "Tipp" gilt für GeForce3 und 4 (MX, Ti) genauso wie für die Radeon nicht mehr wirklich. 16 Bit ist mehr hässlicher als die Grafik schneller wird.
 
Wo hab ich geschrieben das 32-Bit effizienter ist. Ich habe gemeint, es wäre effizienter Wenn man im Register anstatt 1x32 2x16-Bit nützt ;)

Außerdem gehe ich mal davon aus, dass Gnom Jedi Knight einigermassen flüssig spielen will und auch wenn Du es leugnest aths, 16-Bit Modi sind schneller und soviel hässlicher sind die oft auch nicht, v.a. wenn ein Spiel auf einer schon etwas "angestaubten" Engine basiert.
 
Zuletzt bearbeitet:
Original erstellt von Endurance
Wo hab ich geschrieben das 32-Bit effizienter ist. Ich habe gemeint, es wäre effizienter Wenn man im Register anstatt 1x32 2x16-Bit nützt ;)
Was soll daran effizienter sein, wenn man doch wegen deinem Vorschlag für 32-Bit-Rendering gleich 2 Passes benötigt, und man Blending-Operationen ohnehin mit höchstmöglicher Genauigkeit durchführen sollte?
Original erstellt von Endurance
Außerdem gehe ich mal davon aus, dass Gnom Jedi Knight einigermassen flüssig spielen will und auch wenn Du es leugnest aths, 16-Bit Modi sind schneller und soviel hässlicher sind die oft auch nicht, v.a. wenn ein Spiel auf einer schon etwas "angestaubten" Engine basiert.
Auf einer GeForce4 MX 440 bringt der 16-Bit-Modus keinen nennenswerten Vorteil. Vergleiche selbst, z.B. Quake3 in 16 Bit und in 32 Bit auf einer GeForce3 oder 4 MX (Ausnahme MX 420) oder 4 Ti.

Dass 16 Bit einen sinnvollen Fallback gegenüber langsamen 32-Bit-Rendering darstellt, gilt in der GeForce-Linie nur bis GeForce2 (inkl. MX und Ti, Ausnahmen sind wie gesagt aber auch GeForce"4" MX 420 und natürlich die GeForce4-Go-Derivate.)
 
Original erstellt von Gnom66
Ok meine probs sind weg. UND ich will in 16-BIT spielen weil ich ne PCI Karte haben und 32-BIT mehr Bandbreite braucht als 16.
Ja, aber nur Grafikkarten-interne Bandbreite. Der PCI-Bus wird nicht zusätzlich belastet.
 
Zurück
Oben