Seite 1 von 1

Depth Buffer mit 64 Bit

Verfasst: 11.05.2024, 12:25
von Mirror
Hallo,

kennt jemand eine Möglichkeit einen Depth Buffer mit 64 Bit unter DirectX 11 oder DirectX 12 anzulegen ?

Geht das überhaupt ?

Re: Depth Buffer mit 64 Bit

Verfasst: 11.05.2024, 12:58
von gombolo
ohne jetzt in die Doku zu schauen, aber weil ich mich seit ein paar Wochen mit DirectX11 beschäftige und viel experimentiert habe muss ich sagen ich kenne ich bis jetzt 24Bit und 32Bit Puffer. Wobei ich mich Frage was macht man mit einem 64Bit Puffer?

Weil vielleicht kann man das auch anders Lösen, wenn du eine solche Genauigkeit benötigst.

Re: Depth Buffer mit 64 Bit

Verfasst: 11.05.2024, 13:05
von TomasRiker
Ich glaube nicht. Wäre wahrscheinlich auch nutzlos, wenn die GPUs intern mit 32-Bit-Floats rechnen. Dann hättest du nichts von der höheren Genauigkeit.

Re: Depth Buffer mit 64 Bit

Verfasst: 11.05.2024, 13:21
von Mirror
Ich kenne auch nur 32 und 24 Bit. Zumindest als DXGI-Format. Deswegen frage ich ja.

Soweit ich weis wird der Depth-Wert in einen 32 oder 24 Bit Integerwert umgerechnet. Ich denke das dadurch viel an Informationen verloren geht. Da der höchste Wert gleich eins gesetzt wird. Hundertprozentig sicher bin ich aber nicht. Hier würde also auch bei 32 Bit-Float auf 64Bit Integer was bringen.

Re: Depth Buffer mit 64 Bit

Verfasst: 11.05.2024, 13:43
von Krishty
TomasRiker hat geschrieben: 11.05.2024, 13:05 Ich glaube nicht. Wäre wahrscheinlich auch nutzlos, wenn die GPUs intern mit 32-Bit-Floats rechnen. Dann hättest du nichts von der höheren Genauigkeit.
Genau. Intern wird mit 32-Bit-Gleitkommazahlen gerechnet. Beim Schreiben in DXGI_FORMAT_D32_FLOAT findet im Grunde keine Umrechnung und kein Genauigkeitsverlust statt.

Die meisten Genauigkeitsprobleme entstehen bereits bei der Berechnung – bei der Transformation der Vertex-Koordinaten durch die Projektionsmatrix. Es gibt einige Empfehlungen, wie man die verringern oder sogar zum Vorteil nutzen kann – prominentes Beispiel ist Outerra, die ja quasi die ganze Welt mit 32-Bit-Tiefenpuffer rendern.
Mirror hat geschrieben: 11.05.2024, 13:21Da der höchste Wert gleich eins gesetzt wird. Hundertprozentig sicher bin ich aber nicht.
AFAIK musst du die Far Clipping Plane nicht auf 1 setzen; Unendlich geht bspw. auch.

Ein Bit wird auch durch das Vorzeichen „verschwendet“. OpenGL optimiert das berüchtigterweise dadurch, dass der Clip Space von -1 bis +1 geht. Ich habe noch nie jemand getroffen, der das gut findet – zumal Tricks wie Outerras dann nicht mehr funktionieren. Alle hassen es und nehmen lieber den Verlust des Sign Bits in Kauf.

Re: Depth Buffer mit 64 Bit

Verfasst: 11.05.2024, 14:03
von Mirror
Danke Krishty. Wie zauberst Du nur sowas aus dem Ärmel ? Das könnte gehen. Aber auch an die anderen ein Danke.

Re: Depth Buffer mit 64 Bit

Verfasst: 11.05.2024, 17:01
von Mirror
Leider hat das nicht die Auswirkungen auf mein Rasterproblem gehabt, wie ich es mir vorgestellt habe. Ich habe deshalb einen neuen Thread aufgemacht.