Seite 1 von 1

Linien ohne Rasterfehler

Verfasst: 11.05.2024, 17:00
von Mirror
Hallo,


ich möchte Linien über Dreiecke zeichnen, ohne das Linien und Dreiecke in einem Zusammenhang stehen. Dabei treten Rasterfehler auf. Im Moment behelfe ich mir mit einem Offset für die Linien. Die Linien können in einer Ebene zum Dreieck sein, müssen es aber nicht. Die 3D Position von Linien und Dreiecken ist vorgegeben.

Hat jemand eine Idee ? Bei professionellen Programmen sieht man das fehlerfrei gezeichnet.

Re: Linien ohne Rasterfehler

Verfasst: 11.05.2024, 17:18
von joeydee
Weiß nicht wie es bei DirectX heißt, aber bei OpenGL: glPolygonOffset - ändert den Tiefenwert im Screenspace vor dem Depth-Test.
(Es gibt ein paar Besonderheiten zu beacten: https://www.khronos.org/opengl/wiki/Pol ... _and_Lines )

Re: Linien ohne Rasterfehler

Verfasst: 11.05.2024, 17:21
von Mirror
Ja bei DirectX gibt es das auch. Der Name fällt mir jetzt auch nicht ein, aber die Ergebnisse bei mir waren damals nicht gut. Habt ihr andere Erfahrungen gemacht ? Vielleicht sollte ich es mir noch mal ansehen...

Re: Linien ohne Rasterfehler

Verfasst: 11.05.2024, 17:27
von joeydee
Habe gerade ergänzt, es lässt sich nicht ganz intuitiv benutzen.
https://www.khronos.org/opengl/wiki/Pol ... _and_Lines
Schwierigkeiten hatte ich auch schon damit. Aber hatte es irgendwie damit hingepfriemelt.

Re: Linien ohne Rasterfehler

Verfasst: 11.05.2024, 17:48
von Mirror
Es scheint das zu sein, wonach ich gesucht habe. Ich hatte vor etlichen Jahren mal was in OpenGL mit dem Bias gemacht. Aber wie bereits geschrieben, waren die Ergebnisse nicht gut. Heute habe ich etwas mehr Erfahrung, vllt. bekomme ich es diesmal hin. Es muss ja eine Lösung geben.

Besten Dank !

Re: Linien ohne Rasterfehler

Verfasst: 11.05.2024, 22:27
von Schrompf
Bei mir schweben die Linien immer ein klein bisschen über dem Dreieck, also +0.001f * Normale. Aber das geht natürlich nur, wenn Dreiecke und Linien doch irgendwie nen Zusammenhang haben. Und wenn man nah ran geht, dann sieht man es auch.

Re: Linien ohne Rasterfehler

Verfasst: 11.05.2024, 23:54
von joeydee
Vielleicht hilft dir mein Experiment um es mal auszutesten.
So sieht es in OpenGL aus (ist ein Wrapper, daher nicht Originalsyntax, aber gleiche Bedeutung).
Das graue Quad schwebt versetzt 1 Unit über dem weißen. Das blaue Linienquad ist genau auf Ebene des weißen. Die senkrechte blaue Linie steht als Referenz um zu sehen dass nur im Screenspace versetzt wird.
Linien wurden zuerst gerendert, dann die Flächen (normalerweise umgekehrt, hier nur für "Stresstest").
Quadgrößen waren 40f bzw. 30f Units im Ursprung, Kamera sitzt bei y=30f, z=-120f, Clipping Planes bei 0.001f und 1000f

Die erste Einstellung (0,0) ist praktisch gleichbedeutend mir disable.

Wie Units und Faktor der Funktion mit den Szenen-Units und dem Screenspace genau zusammenhängen, bin ich überfragt, ist immer Trial&Error bei mir.
Natürlich wird man immer irgendwo an Grenzen der Genauigkeit stoßen.

Laut Doku (s. mein Link oben) soll man alles als Polygone rendern damit es überhaupt greift, also auch Linien oder Punkte als Polygone callen. Ob das nur für die Fixed-Pipeline gilt, oder auch für Vertexbuffer, bin ich ebenfalls überfragt.

Bild

Re: Linien ohne Rasterfehler

Verfasst: 12.05.2024, 00:17
von Krishty
Mirror hat geschrieben: 11.05.2024, 17:21 Ja bei DirectX gibt es das auch. Der Name fällt mir jetzt auch nicht ein
Depth Bias

Re: Linien ohne Rasterfehler

Verfasst: 12.05.2024, 01:19
von Mirror
Danke an Euch Alle. Werde jetzt ein bissl damit experimentieren.

Re: Linien ohne Rasterfehler

Verfasst: 12.05.2024, 06:00
von Matthias Gubisch
Warum nicht den depth test für die Linien abschalten und im Pixel shader selber machen?

Re: Linien ohne Rasterfehler

Verfasst: 12.05.2024, 09:13
von Mirror
Matthias Gubisch hat geschrieben: 12.05.2024, 06:00 Warum nicht den depth test für die Linien abschalten und im Pixel shader selber machen?
Das wäre Plan B gewesen. Leider rechnet, wie schon "Tomas Riker" schrieb, die GPU mit Float und ich habe das im Transparent Shader probiert. Die Ergebnisse sind die selben. Dazu habe ich nur die Linien im Transparent-Shader gerendert und selber geblendet ( ohne echte Transparenz, aber Depth-Berechnungen ). Die Mühe lohnt sich nicht.

In der Perspektive-Kamera klappt es schon halbwegs ( bin zufrieden, wenn auch nicht perfekt ). Bei den anderen Kameras muss ich noch experimentieren.

Re: Linien ohne Rasterfehler

Verfasst: 12.05.2024, 10:06
von TomasRiker
Vielleicht finden wir eine bessere Lösung, wenn du uns mehr darüber verrätst, was der Zweck deines Unterfangens ist.

Re: Linien ohne Rasterfehler

Verfasst: 12.05.2024, 11:30
von Mirror
Ich schreibe an einem kleinen 3D Programm namens MirrorCAD und da brauche ich Hilfslinien die unabhängig von den Dreiecken sind, aber auch für Polygonränder.

Edit: Ich habe eben den Bug gefunden. Jetzt geht es auch bei isometrischer Kamera. Bin zufrieden !!! Tausend Danke, besonders an joeydee!!!