PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wann gibt's endlich Grafikchips mit einem 64 Bit großen Z-Buffer?


Gast
2005-03-22, 06:34:59
Das würde IMHO vieles bei der Programmierung vereinfachen.

Vor allem erspart man sich auch die rumscalerei.

32 Bit wären zur Not ja schonmal etwas.

Asmodeus
2005-03-22, 09:56:53
Das würde IMHO vieles bei der Programmierung vereinfachen.

Vor allem erspart man sich auch die rumscalerei.

32 Bit wären zur Not ja schonmal etwas.

Ganz bestimmt weiß ich es nur von OpenGL, dort gibt es auch die Möglichkeit, mit einem 32 Bit Z-Buffer zu arbeiten, auch wenn man da dann wohl auf Multisampling verzichten muss. Aber auch unter Direct3D wird ein 32 Bit Z-Buffer wohl möglich sein.

Ob man einen 64 Bit Z-Buffer wirklich heute schon braucht, kann ich nicht genau beurteilen, falls es irgendwann einen Z-Buffer mit dieser Genauigkeit gibt, dann wäre es jedenfalls prima, wenn man wählen könnte, ob er wie bisher logarithmisch verläuft, oder linear.

Gruss, Carsten.

Demirug
2005-03-22, 10:18:20
Ja, DirectX sieht ein 32 Bit Z-Buffer. Allerdings dann ohne Stencil Buffer. StencilBuffer + 32 Bit Z kommt dann erst mit WGF 2.

Aber eigentlich brauchen wir gar keinen 64 Bit Z-Buffer. 32 Bit FP würden schon eine ganze Weile ausreichen und die meisten Z-Buffer Probleme auf Lange zeit lösen. Vorgesehen sind FP Z-Buffer in DirectX 9. Nur scheint es keine Hardware zu geben die das mitmacht.

Asmodeus
2005-03-22, 10:31:00
...
Vorgesehen sind FP Z-Buffer in DirectX 9. Nur scheint es keine Hardware zu geben die das mitmacht.

Und was ist Deiner Meinung nach der Grund dafür? Im Grunde gibt es ja meist nur zwei Möglichkeiten, entweder, es ist technisch zu aufwendig oder zu teuer oder es besteht noch kein Markt/Bedarf dafür? Aber mit Z-Buffer Problemen hat sich doch sicher jeder 3D-Programmierer schon mal rumgeschlagen, also ist der Bedarf ja eigentlich schon da.

Gruss, Carsten.

Gast
2005-03-22, 20:02:04
Ja, DirectX sieht ein 32 Bit Z-Buffer. Allerdings dann ohne Stencil Buffer. StencilBuffer + 32 Bit Z kommt dann erst mit WGF 2.

Aber eigentlich brauchen wir gar keinen 64 Bit Z-Buffer. 32 Bit FP würden schon eine ganze Weile ausreichen und die meisten Z-Buffer Probleme auf Lange zeit lösen. Vorgesehen sind FP Z-Buffer in DirectX 9. Nur scheint es keine Hardware zu geben die das mitmacht.

Na dann render mal ein Sonnensystem ohne die 3d Körper zu skalieren (verfälschen) und bei dem die kleinste geradezahlige Koordinateneinheit 1 cm beträgt.

aths
2005-03-22, 22:29:32
Ja, DirectX sieht ein 32 Bit Z-Buffer. Allerdings dann ohne Stencil Buffer. StencilBuffer + 32 Bit Z kommt dann erst mit WGF 2.

Aber eigentlich brauchen wir gar keinen 64 Bit Z-Buffer. 32 Bit FP würden schon eine ganze Weile ausreichen und die meisten Z-Buffer Probleme auf Lange zeit lösen.Japp. Ich hätte auch endlich gerne mal einen 32 Bit FP-Z-Buffer. Würde wahrscheinlich auch gegen gewisse Z-Fighting-Artefakte helfen.

Demirug
2005-03-22, 22:40:45
Na dann render mal ein Sonnensystem ohne die 3d Körper zu skalieren (verfälschen) und bei dem die kleinste geradezahlige Koordinateneinheit 1 cm beträgt.

Mit einem 32 Bit FP Z-Buffer sollte das kein Problem sein. Genauer kann eine normale Grafikkarte im Vertexbereich sowieso nicht rechnen.

Gast
2005-03-23, 07:29:14
32 Bit Z-Buffer reicht dafür aber nicht.

32 Bit = 4294967296


4294967296 / (100 *1000) = 42949.67296 km

Das reicht also nicht einmal von der Erde zum Mond.


Und bis zur Sonne reichen die 32 Bit erst nicht, denn:
Erde - Sonne = 149597871 km = 1 AU (astronomische Einheit)


42949.67296 km / 149597871 km = 0.00028 AU




Aber die Strecke von Erde zu Sonne ist ja noch gar nichts,
denn die anderen Planeten gibt's ja auch nocht.
Die Entfernung von Sonne zu Pluto beträgt z.b.
schon 48,826 AU


Wenn man also nicht skalieren möchte, dann sind 64 Bit Genauigkeit auf jedenfall notwendig.

64 Bit = 18446744073709551616
18446744073709551616 / (100 *1000) =184467440737095.51616 km


In 64 Bit passen
184467440737095.51616 / 149597871 = 1233088.676 AU rein

Das reicht also schon bis zum nächsten Stern Alpha Centauri mit 4,3 Lichtjahre Entfernung.
1 Lichtjahr = 63240 AE



Für die komplette Milchstraße reichen die 64 Bit leider nicht aus,
denn die hat einen Durchmesser von ca. 100000 Lichtjahren.

1233088.676 AU /63240 AU =19,496 Lichtjahre

[ncp]EasyChiller
2005-03-23, 07:59:24
welche rolle spielt solch eine Entfernung .. als reale Empfindung erhälst du von so einem weit entfernten objekt effektiv nur nen (wenn überhaupt) kleinen hellen Punkt ... wiso sollte das bei ner gerenderten Szene anders sein ... wäre doch overkill das kommplett zu berechnen oder nich? :confused:

Demirug
2005-03-23, 08:16:02
Ich glaube wir reden aneinander vorbei. Ich sprach von einem 32 Bit Fliesskomma Z-Buffer. Damit kommt man dann ja bis +3.402823e38. Ich weiss das jetzt wieder das Skalierungsargument kommt das aber hier nichts bringt den aufgrund der Definition muss ein Vertexshader Z gar nicht genauer berechnen als FP32.

Ich weiss ja nicht für was du eine Anwendung du hast aber wenn die eine dermassen hohe Genauigkeit verlangt das die Elemente wirklich 100% pixelgenau dargestellt werden müssen dann kann man das sowieso nicht mit einer GPU berechnen lassen. Dort sind an viel zu vielen Stellen 1 Bit Fehler erlaubt.

Trap
2005-03-23, 14:19:55
Das ganze Sonnensystem rendern ist kein Problem. Ein (kleineres) Problem ist einen winzigen Ausschnitt aus dem Sonnensystem zu rendern.

aths
2005-03-23, 14:33:43
Das ganze Sonnensystem rendern ist kein Problem. Ein (kleineres) Problem ist einen winzigen Ausschnitt aus dem Sonnensystem zu rendern.Transformier doch den Ausschnitt einen "vernünftigen" Bereich.

Wenn du die Geometrie-Daten erzeugst, wirst du bei großen Zahlen ohnehin große Abstände haben. Vertex Prozessing findet mit FP32 statt, und das heißt, 24 Bit Mantisse.