Sie befinden sich hier: Termine » Prüfungsfragen und Altklausuren » Hauptstudiumsprüfungen » Lehrstuhl 9 » Interaktive Computergrafik   (Übersicht)

Interaktive Computergrafik

Allgemeines

Lockerer Umgang. Faire Benotung. Manchmal werden Dinge vorgezeichnet, oder man soll Dinge zeichnen. Glücklicherweise muss es nicht gut aussehen ;)

Ablauf

F: Wir haben in InCG viele schöne Sachen gemacht. Über welches Thema möchten Sie denn etwas erzählen?
A: ???

F: Schatten hatten wir heute schon öfter, vielleicht mal etwas anderes?
A: Field of Depth

  • Auf Grafikkarte: Rendering wie Lochkamera → alle Entfernungen scharf
  • In Wirklichkeit: Linsen (Auge, Kamera), die nur eine bestimmte Ebene scharf stellen können
  • Splatting zur Simulierung
    • Normal rendern
  • Für jedes Pixel:
    • Circle of Confusion berechnen
    • Pixel transparent in Größe des Circle of Confusion zeichnen
    • Aufpassen, dass man nicht in scharfe Pixel hinein verwischt
    • Langsam, aber durchführbar in Geometry Shader mit Punkt für jedes Pixel im zweiten Renderpass

F: Das war jetzt ja schon sehr detailliert, aber wenn man es einfach (mit Gauß-Filter) macht, welches Problem hat man dann?
A: Verwaschen der Linien → Bilateral Filtering

F: Bitte beschreiben
A:

  • Bisher: Filter betrachtet die im Koordinatensystem umgebenden Punkte
  • Neu: Filter betrachtet die im Wert ähnlichen Punkte
  • Durch Verbindung: Harte Kanten in der Farbe werden beibehalten, Farben selbst werden verwaschen
  • Problem: Für Wertebetrachtung müssen alle Pixel geprüft werden

F: Das funktioniert auch mit gleichen Farben bei den Kanten, warum?
A: Für Wertebereich auch Tiefenpuffer verwenden.

F: Anderer Ansatz für Depth of Field?
A: Multi-Layered-Filtering: Per-Pixel-Linked-List

F: Wie funktioniert das?
A: Buffer mit Startpositionen pro Pixel, Buffer für Knoten (Farbe, Tiefe, Next), atomarer Zähler für „Speicherverwaltung“, Sortierung nach dem „Zeichnen“

F: Und wie funktioniert das mit Deferred Shading?
A: G-Buffer muss Per-Pixel-Linked-List beinhalten, Farbberechnung der einzelnen Layer erst im zweiten Pass.

F: Warum eigentlich Deferred Shading?
A: Fragment Shader oft Flaschenhals, häufige Berechnung, trotz Wegwerfen (aufgrund anderer überlappender Geometrie) vieler Ergebnisse → nur einmal Beleuchtungsberechnung für jedes Pixel.

F: Welche Möglichkeiten gibt es noch alles für Transparenz?
A: A-Buffer (Kanonen auf Spatzen), Alpha-Blending (benötigt Ordnung der Polygone, u.U. mehr Renderpasses nötig), Depth Peeling

F: Wie funktioniert Depth Peeling?
A: Solange bis man nichts mehr gezeichnet hat:

  • Rendern mit Tiefentest, der nähestes Pixel, das weiter weg ist, als das Pixel an der Position beim vorherigen Rendern
  • Ergebnisbuffer ist Layer
  • Am Ende von hinten nach vorne blenden

F: Deferred Shading liefert uns auch Vorteile beim Zeichnen von Spotlights. Warum? Wie funktioniert das?
A: Kegel für Licht „zeichnen“ (mit Tiefenpuffer und Framebuffer Read-Only), aber Stencilbuffer verwenden:

  • Frontface-Culling, Tiefentest nicht bestanden? → Bit setzen
  • Backface-Culling, Tiefentest bestanden? → anderes Bit setzen
  • Beleuchtete Pixel: Beide Bits gesetzt

F: An was erinnert das?
A: An Shadow Volumes:

  • Silhouetten finden (Nachbarschaftsinformationen, möglichst dichtes Dreiecksnetz), Normale * Licht, Vorzeichenänderung betrachten
  • Vertex nach Unendlich verschieben
  • Z-Fail (Far-Plane im Unendlichen):
    • Two-Sided Stencil Test
  • Frontface-Culling, Tiefentest nicht bestanden? → +1
  • Backface-Culling, Tiefentest nicht bestanden? → -1
  • Im Schatten, wenn >0
  • Überlaufproblem

F: Warum kann man das nicht wie beim Lichtkegel machen
A: Verschachtelungen…

F: Geht das auch mit Spotlights?
A: Ja, aber Sonderfall: Objekt außerhalb des Kegels → immer verschattet.

F: Und mit direktionalem Licht?
A: Andere Richtung der Vertices nach Unendlich.

F: Was müssen die Objekte für Eigenschaften haben?
A: Äh, vollständig? (Wasserdicht, war das richtige Wort)

F: Was benötigen Grafikkarten um Shadow Volumes performant umzusetzen?
A: Hohe Füllraten.

F: Wie funktioniert Tesselation?
A: Unterteilung in mehrere andere Flächen; Angabe der Flächen außen und innen im Tesselation Control Shader

F: Bitte mal hier unterteilen?
A: Ganz grob… (Beisitzer meinte, passt schon, Stamminger meinte, es muss uniform sein…)

F: Warum kann man die Unterteilung für jede äußere und für die inneren Kanten getrennt angeben?
A: Vermeidung von Crunches, z.B. bei Level of Detail

F: Was kommt danach?
A: Tesselation Evaluation Shader: „Vertexshader“ für neue Vertices, z.B. für Bézier-Kurven.

F: Oder?
A: Displacement-Mapping (erklärt)

F: Warum verbindet man es meistens mit Normalmapping?
A: Da habe ich eher Vektordisplacements erklärt, im Nachhinein kam heraus, dass etwas anderes gemeint war: Beim reinen Berechnen der neuen Normalen bei Displacement Mapping kann es bei adaptiven Level of Detail zu „Wackeln“ der normalen (wohl wieder ein Aliasing Problem) kommen, dass man durch Normalmapping umgehen kann. War aber nicht schlimm.