Linien ohne Rasterfehler

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
Mirror
Establishment
Beiträge: 308
Registriert: 25.08.2019, 05:00
Alter Benutzername: gdsWizard
Kontaktdaten:

Linien ohne Rasterfehler

Beitrag 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.
Hat den StormWizard 1.0 und 2.0 verbrochen. https://mirrorcad.com
Benutzeravatar
joeydee
Establishment
Beiträge: 1118
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: Linien ohne Rasterfehler

Beitrag 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 )
Zuletzt geändert von joeydee am 11.05.2024, 17:26, insgesamt 1-mal geändert.
Mirror
Establishment
Beiträge: 308
Registriert: 25.08.2019, 05:00
Alter Benutzername: gdsWizard
Kontaktdaten:

Re: Linien ohne Rasterfehler

Beitrag 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...
Hat den StormWizard 1.0 und 2.0 verbrochen. https://mirrorcad.com
Benutzeravatar
joeydee
Establishment
Beiträge: 1118
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: Linien ohne Rasterfehler

Beitrag 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.
Mirror
Establishment
Beiträge: 308
Registriert: 25.08.2019, 05:00
Alter Benutzername: gdsWizard
Kontaktdaten:

Re: Linien ohne Rasterfehler

Beitrag 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 !
Hat den StormWizard 1.0 und 2.0 verbrochen. https://mirrorcad.com
Benutzeravatar
Schrompf
Moderator
Beiträge: 5041
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas
Wohnort: Dresden
Kontaktdaten:

Re: Linien ohne Rasterfehler

Beitrag 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.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
joeydee
Establishment
Beiträge: 1118
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: Linien ohne Rasterfehler

Beitrag 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
Benutzeravatar
Krishty
Establishment
Beiträge: 8316
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Linien ohne Rasterfehler

Beitrag 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
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Mirror
Establishment
Beiträge: 308
Registriert: 25.08.2019, 05:00
Alter Benutzername: gdsWizard
Kontaktdaten:

Re: Linien ohne Rasterfehler

Beitrag von Mirror »

Danke an Euch Alle. Werde jetzt ein bissl damit experimentieren.
Hat den StormWizard 1.0 und 2.0 verbrochen. https://mirrorcad.com
Matthias Gubisch
Establishment
Beiträge: 488
Registriert: 01.03.2009, 19:09

Re: Linien ohne Rasterfehler

Beitrag von Matthias Gubisch »

Warum nicht den depth test für die Linien abschalten und im Pixel shader selber machen?
Bevor man den Kopf schüttelt, sollte man sich vergewissern einen zu haben
Mirror
Establishment
Beiträge: 308
Registriert: 25.08.2019, 05:00
Alter Benutzername: gdsWizard
Kontaktdaten:

Re: Linien ohne Rasterfehler

Beitrag 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.
Hat den StormWizard 1.0 und 2.0 verbrochen. https://mirrorcad.com
Benutzeravatar
TomasRiker
Beiträge: 96
Registriert: 18.07.2011, 11:45
Echter Name: David Scherfgen
Wohnort: Hildesheim

Re: Linien ohne Rasterfehler

Beitrag von TomasRiker »

Vielleicht finden wir eine bessere Lösung, wenn du uns mehr darüber verrätst, was der Zweck deines Unterfangens ist.
Mirror
Establishment
Beiträge: 308
Registriert: 25.08.2019, 05:00
Alter Benutzername: gdsWizard
Kontaktdaten:

Re: Linien ohne Rasterfehler

Beitrag 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!!!
Hat den StormWizard 1.0 und 2.0 verbrochen. https://mirrorcad.com
Antworten