Ich hab nen Bug in meinem DebugLine-Renderer gefixt! Bild:
Ich hab mir vor ner Weile - und auch sicher nicht als Erster - ne Methode ausgedacht, meine Linien zu antialiasen. Ich rendere jedes Liniensegment als langgestrecktes Quad und besetze ein VertexAttribut taktisch, so dass es am Rand
0.0f hat und in der Mitte
LinienDicke/2. Die GPU-Interpolatoren produzieren mir an der Pixelmitte jetzt automatisch daraus einen Wert, der wahrnehmbar nah an der echten Coverage des Pixels durch das Primitive liegt. Den schleif ich nur noch an Alpha durch und BAM, perfektes Antialiasing auf den Linien.
Thema hatten wir schon. Ich erzähl das aber auch deswegen, weil die Quads eine definierte Breite
in Pixeln haben müssen, damit das klappt. Das heißt, ich mach die perspektivische Division bereits im VertexShader und entfalte das Quad erst danach im Image Space. Und durch die Perspektivdivision geht das Vorzeichen verloren, wodurch ich für Linien hinter der Kamera manchmal wüste Koords-Explosionen bekommen habe. Mäh.
Ich hatte das tatsächlich irgendwie für unausweichlich gehalten. Dann ist mir aufgefallen, dass das albern ist, und ich habe von Hand zu clippen versucht im VertexShader. Und
dann ist mir aufgefallen, dass ich ja einfach nur durch
abs( projPos.w) dividieren muss, und die Explosion bleibt aus! Jetzt clippt die GPU wieder ganz artig für mich und meine DebugLinien sind endlich mal verlässlich sauber stabil und aufgeräumt.