05 - Real-time Rendering - Uni-bremen.de

Transcription

10/7/11ClausthalCGCVirtuelle RealitätReal-time RenderingG. ZachmannClausthal University, Germanycg.in.tu-clausthal.deCGCLatenz beim Rendering§ Klassische Pipeline:Headpos & oriTransformScene graphtraversalPixel scanBack bufferViewportmappingClippingFront bufferCullingDACRGBheadswap§ Latenz:renderdisplay§ Idee: rendere mehr als den ViewportG. ZachmannVirtuelle Realität und Simulation – WS 11/12Real-time Rendering21

10/7/11CGCViewport independent rendering§ Konzeptionelle Idee:§ Rendere Szene auf Kugel um Betrachter§ Bei Rotation des Viewpoints: Ausschnitt des Viewports neu wählen§ Wähle statt Kugel einen Würfel (s.a. Cave)G. ZachmannVirtuelle Realität und Simulation – WS 11/12Real-time Rendering3CGC§ Neue Pipeline:Head orientationScene graphtraversalViewportmappingPixel scanClassificationClippingBack bufferTransformFront bufferHeadposLocatepixelAnti-AliasingRGBswap§ Latenz:DACheadrenderG. ZachmannVirtuelle Realität und Simulation – WS 11/12displayReal-time Rendering42

10/7/11CGCImage composition§ Konzeptionelle Idee:§ Jeder Thread rendert nur "sein" Objekt in einen eigenen Frame-Buffer§ Video-Hardware liest Frame-Buffer inkl. Z-Buffer aus§ Image Compositor kombiniert die Einzelbilder durch Z-Vergleich proPixel§ In praxi: teile Mengealler Objekte in derSzene in eine kleineAnzahl von Teilmengenauf; rendere jedeTeilmenge durch einenPC mit eigener GrafikkarteG. ZachmannVirtuelle Realität und Simulation – WS 11/12Real-time Rendering5CGC§ Prioritized Rendering:§ Weit entfernte / langsame Objekte bleiben länger auf dem Bildschirm"gleich"§ Idee: rendere auf mehrere (gedachte) Schalen§ Wieviele Schalen neu gerendert werden, hängt ab von- Geforderter Framerate- Szenenkomplexität- Viewpoint-Bewegung- Objekt-Bewegung§ Human factors beeinflußen Priorität:§ Keine Kopfdrehung um 180 à Objekte "hinten" nur selten updaten§ Manipulierte Objekte haben hohe Priorität§ Objekte in der Peripherie seltener updatenG. ZachmannVirtuelle Realität und Simulation – WS 11/12Real-time Rendering63

10/7/11CGCKonstante Framerate durch "Weglassen"§ Gründe für eine konstante Framerate:§ Vorhersage bei predictive filtering des Trackings von Kopf / Händefunktioniert nur, wenn alle nachfolgenden Stufen der Pipeline (d.h.,alle Stufen) immer gleich schnell arbeiten§ Wahrnehmung von Framerate-Sprüngen (z.B. zwischen 60 und 30 Hz)§ Rendering als "time-critical computing":§ Rendering bekommt bestimmtes Zeitbudget (z.B. 17 msec)§ Rendering-Algorithmus muß Bild produzieren "so gut wie möglich"§ Techniken des "Weglassens":§ Levels-of-Details (LOD)§ Unsichtbare Geometrie weglassen (Culling)§ Image-based rendering§ Lighting-Model reduzieren, Texturen reduzieren,§ . ?G. ZachmannVirtuelle Realität und Simulation – WS 11/12Real-time Rendering7CGCDie Level-of-Detail-Technik§ Definition:Ein Level-of-Detail (LOD) eines Objektes ist einereduzierte Version (d.h., weniger Polygone)einer (hoch-aufgelösten) Geometrie.§ Beispiel:G. ZachmannVirtuelle Realität und Simulation – WS 11/12Real-time Rendering84

10/7/11CGC§ Idee: verwende den LOD "passend" zur Entfernung vom Viewpoint§ Zwei Aufgaben:1. Preprocessing: Generierung von LODs2. Runtime: Auswahl des "richtigen" LODs, und ggf. "Blending"G. ZachmannVirtuelle Realität und Simulation – WS 11/12Real-time Rendering9CGCLOD-SelektionLOD§ Visuelle Güte gegen zeitliche Güte§ Wie selektiert man den "richtigen" Level?100%50%30%§ Statisch:§ Level i fürEntfernungsbereich§ Abhängig von FOV§ Größe des Obj unberücksichtigt§ Dynamisch:§ Schätze Größe des Objektes auf dem Bildschirm§ Unabhängig von Bildschirmauflösung,FOV, Größe des Obj§ Ist automatisch entfernungsabhängigG. ZachmannVirtuelle Realität und Simulation – WS 11/12Real-time Rendering105

10/7/11CGC§ Für Desktop-Applikationen i.A. schon ausreichend:G. ZachmannVirtuelle Realität und Simulation – WS 11/12Real-time Rendering11CGCGrößenabschätzung des Objektes auf dem Screen§ Naive Methode:§ Berechne Bounding-Box (bbox) des Objektes in 3D§ Projiziere Bbox nach 2D 8 2D-Punkte§ Bestimme 2D-Bbox (achsenparallel)§ Genauere Methode:§ Bestimme wahre Fläche der projizierten 3D-Bbox auf dem ScreenG. ZachmannVirtuelle Realität und Simulation – WS 11/12Real-time Rendering126

10/7/11CGCIdee des Algorithmus§ Bestimme die Anzahl der Seiten der Box, die in 2D sichtbar sind:§ Projiziere die Punkte auf der Silhouette (4 oder 6) nach 2D:§ Berechne den Betrag dieser (konvexen!) FlächeG. ZachmannVirtuelle Realität und Simulation – WS 11/12Real-time Rendering13CGCImplementierung§ Für jedes Paar von (parallelen) Seitenflächen (jeden Slab):klassifiziere Viewpoint bzgl. dieses Paares als "darunter","darüber", oder "dazwischen"§ Ergibt 3x3x3 27 Möglichkeiten§ M.a.W.: die Ebenen der Seitenflächen eines Würfels unterteilen denRaum in 27 Teilräume§ Verwende Bit-Codes (à la Out-Codes) und eine Lookup-Table§ Ergibt 26 theoretische Einträge§ 27-1 Einträge der LUT listen die 4 oder 6 Vertices der Silhouette§ Dann nur noch projizieren, triangulieren, Flächen aufsummierenG. ZachmannVirtuelle Realität und Simulation – WS 11/12Real-time Rendering147

10/7/11CGCPsychophysiologische LOD-Selektion1§ Faktoren bzgl. der Sehschärfe:b1§ Zentrum/Peripherie: e (θ–b1 )/c1 , θ b1k1 1, sonstb1θt0§ Bewegung:Δϕt1§ Unschärfe/Tiefe:ϕ1ϕ0G. ZachmannVirtuelle Realität und Simulation – WS 11/12Real-time Rendering15CGC§ Bestimmung des LODs:1.2.k min{ki }·k0 ,rmin 1/koder k ki ·k03. Selektiere Level l so, daß p Pl : r (p) rmin§ Braucht man Eye-Tracking?§ Teuer, ungenau, "intrusive"§ Psychophysiologie: Augen immer 15 ausgelenkt§ Treffe die Annahme Kopfrichtung Augenrichtung, und wähle b1 15 G. ZachmannVirtuelle Realität und Simulation – WS 11/12Real-time Rendering168

10/7/11CGCReaktive vs. Prädiktive LOD-Selektion§ Reaktive LOD-Selektion:§ Verwalte Historie von Rendering-Zeiten§ Bestimme daraus die geschätzte Zeit Tr für das kommende Frame§ Sei Tb das zur Verfügung stehende Zeit-Budget§ Falls Tr Tb : erniedrige LODs (gröbere Levels)§ Falls Tr Tb: wähle feinere Levels§ Dann rendern und tatsächlich benötigte Zeit in die Historie aufnehmenG. ZachmannVirtuelle Realität und Simulation – WS 11/12Real-time Rendering17CGC§ Reaktive LOD-Selektion hat Ausreißer§ Beispiel-Szenen:G. ZachmannVirtuelle Realität und Simulation – WS 11/12Real-time Rendering189

10/7/11Prädiktive LOD-Selektion[Funkhouser und Sequin]CGC§ Definition Objekt-Tupel (O,L,R):O Objekt, L Level,R Rendering Algo (#Texturen, anti-aliasing, #Lichtquellen)§ Bewertungsfunktionen für Objekt-Tupel:Cost(O,L,R)Benefit(O,L,R) Rendering-Zeit "Beitrag zum Bild"§ Optimierungsproblem:max sucheS S unter der Bedingung Tr (O,L,R) S cost(O, L, R) TbS { möglichen Objekt-Tupel in der Szene }wobeiG. Zachmannbenefit(O, L, R)(O,L,R) S Virtuelle Realität und Simulation – WS 11/12Real-time Rendering19CGC§ Cost-Funktion hängt ab von:§ Anzahl Eckpunkte ( # Koord. Trafos Lighting-Calcs Clipping)§ Setup pro Polygon§ Anzahl Pixel (Scanline-Konvertierung, Alpha-Blending, Textur, AntiAliasing, Phong)§ Theor. Kostenmodell: C ·Poly C2 ·VertCost(O , L, R ) max 1C3 ·Pixels§ Besser experimentell bestimmen:Rendere versch. Objekte mit allenmöglichen verschiedenen Parameternt# polygonsG. ZachmannVirtuelle Realität und Simulation – WS 11/12Real-time Rendering2010

10/7/11CGC§ Benefit-Funktion: in den "Beitrag" zum Bild gehen ein§ Größe§ Shading-Methode: 1 Rendering(O, L, R) 1 1 § Distanz vom Zentrum (Peripherie, Tiefe)§ Geschwindigkeitcpgonscvertcvert, flat, Gouraud, Phong§ Semantische "Wichtigkeit"§ Hysterese:Hysterese(O, L, R) § Zusammen:c1c2 1 L L 1 R R Benefit(O, L, R) Size(O)·Rendering(O, L, R) ·Importance(O)·OffCenter(O) ·Vel(O)·Hysteresis(O, L, R)G. ZachmannVirtuelle Realität und Simulation – WS 11/12Real-time Rendering21CGC§ Optimierungsproblem: "multiple-choice knapsack problem" NP-vollständig§ Idee: berechne sub-optimale Lösung :§ Rückführung auf kontinuierliches Rucksackproblem§ Dann greedy lösen mit zusätzlichem Constraint§ Definierevalue(O, L, R) benefit(O, L, R)cost(O, L, R)§ Sortiere alle Objekt-Tupel nach Value(O,L,R)§ Wähle die ersten Objekt-Tupel bis Rucksack voll§ Constraint: keine 2 Objekt-Tupel dürfen dasselbe Objekt darstellenG. ZachmannVirtuelle Realität und Simulation – WS 11/12Real-time Rendering2211

10/7/11CGC§ Inkrementelle Lösung:§ Starte mit der Lösung§ Falls ivom letzten Framecost(Oi , Li , Ri ) max. Frame-Zeitdann suche Objekt-Tupel (Ok , Lk , Rk ) ,so daßvalue(Ok , Lk a, Rk b) value(Ok , Lk , Rk ) maxund i kcost(Oi , Li , Ri ) cost(Ok , Lk a, Rk b) max. Frame-Zeit§ Analog, falls cost(Oi , Li , Ri ) max. Frame-ZeitiG. ZachmannVirtuelle Realität und Simulation – WS 11/12Real-time Rendering23CGC§ Performance in derBeispielszene:G. ZachmannVirtuelle Realität und Simulation – WS 11/12Real-time Rendering2412

10/7/11CGCScreenshots aus der Beispielszene§ Screenshots aus der Beispiel-Szene:No detail elision, 19,821 polygonsOptimization, 1,389 polys,0.1 sec/frame target frame timeLevel of detail: darkergray means more detailG. ZachmannVirtuelle Realität und Simulation – WS 11/12Real-time Rendering25CGCProbleme von diskreten LODs§ "Popping" beim Umschalten zwischen Levels§ Maßnahmen gegen "Popping":§ Hysterese§ Alpha-Blending der beiden benachbarten LOD-Stufen- Man kommt vom Regen in die Traufe ;-)§ Kontinuierliche, view-dependent LODsG. ZachmannVirtuelle Realität und Simulation – WS 11/12Real-time Rendering3013

10/7/11CGCAlpha-LODs§ Einfache Idee, um Popping zu vermeiden:when beyond a certain range, fade out object until goneG. ZachmannVirtuelle Realität und Simulation – WS 11/12Real-time Rendering31CGCProgressive Meshes§ A.k.a. Geomorph-LODs§ Idee:§ Gegeben zwei Meshes (LODs desselben Objektes) Mi und Mi 1§ Erzeuge ein Mesh M' "zwischen" diesen beiden§ Definition: Progressive Mesh Repräsentation eines Objektes,ausgehend von einem hoch-aufgelösten Mesh M0, mit Hilfe dererman (fast) stufenlos zwischen 1 Polygon und M0 "ZwischenMeshes" generieren kann (möglichst schnell).G. ZachmannVirtuelle Realität und Simulation – WS 11/12Real-time Rendering3214

10/7/11CGCErzeugung von Progressive Meshes§ Simplifizierung (simplification)§ Grundlegende Operation: edge collapsevvu§ Bad Edge Collapses:uvedge crossing!G. ZachmannVirtuelle Realität und Simulation – WS 11/12Real-time Rendering33CGC§ Reihenfolge der Edge Collapses:§ Führe Bewertung eines Edge-Collapses ein, die visuellen Effekt "misst"uvvu§ Führe zunächst Edge Collapses mit kleinster Auswirkung aus§ Nach jedem Schritt müssen im Prinzip alle Kanten neu bewertet werdenG. ZachmannVirtuelle Realität und Simulation – WS 11/12Real-time Rendering3415

10/7/11CGC§ Bewertungsfunktion für Edge-Collapses ist nicht trivial und, vorallem, wahrnehmungsbasiert!§ Beeinflussende Faktoren:§ Krümmung der Kanten / Fläche§ Beleuchtung, Texturierung, Viewpoint (Highlights!)§ Bedeutung der Geometrie (Augen & Mund sind besonders wichtig)§ Beispiel eines Progressive Mesh:G. ZachmannVirtuelle Realität und Simulation – WS 11/12Real-time Rendering35CGC§ Repräsentation eines Progressive Meshes:M Mnecoln-1vsplitn-1ecol1vsplit1M1§ Mi 1 i-te Verfeinerung(refinement) 1 Vertex mehrals Miecol0vsplit0M0ecol§ Repräsentation einesEdge Collapse / Vertex Split:vsplit§ Betroffenes Paar von Vertices (Kante)§ Position des "neuen" Vertex§ Dreiecke, die gelöscht / eingesetzt werdenG. ZachmannVirtuelle Realität und Simulation – WS 11/12Real-time Rendering3616

10/7/11CGCEine einfache Bewertungsfunktion§ Heuristik:§ Kleine Kanten zuerst entfernen§ Einen Vertex U auf einen Vertex V ziehen, falls die Fläche um U einegeringe (diskrete) Krümmung hat§ Ein einfaches Kostenmaß für einen Edge-Collapse von U auf V:cost(U, V ) U V ·curv(U) minmax nf nicurv(U) 12 1 f T (U)\T (V ) i 1,2n1VUn2nfG. ZachmannVirtuelle Realität und Simulation – WS 11/12Real-time Rendering37CGC§ Bemerkung:§ Beispiel:cost(U, V ) cost(V , U)ErwünschtErst späterG. ZachmannVirtuelle Realität und Simulation – WS 11/12Real-time Rendering3817

10/7/11CGCDemo[Michael Garland: Qslim]Wie funktioniert der Funkhouser-Sequin-Algomit progressiven Meshes?G. ZachmannVirtuelle Realität und Simulation – WS 11/12Diplomarbeit Real-time Rendering39CGCExkurs: andere LODs§ Idee: LOD-Technik auf nicht-geometrische Inhalte anwenden§ Z.B. "Behavioral LOD":§ Simuliere Verhalten eines Objektes exakt, wenn im Fokus, sonst nur"grob"G. ZachmannVirtuelle Realität und Simulation – WS 11/12Real-time Rendering4018

10/7/11CGCCulling in Gebäuden (portal culling)§ Beobachtung: viele Räume innerhalb des Viewing-Frustums sindnicht sichtbar§ Idee:§ Unterteile Raum in "Zellen"§ Berechne Cell-to-Cell-Visibility im vorausG. ZachmannVirtuelle Realität und Simulation – WS 11/12Real-time Rendering41CGC§ Von bestimmtem Viewpoint aus ist innerhalb der Zelle nochweniger sichtbar:G. ZachmannVirtuelle Realität und Simulation – WS 11/12Real-time Rendering4219

10/7/11CGCState Sorting§ State Zustand § Zusammenfassung aller Attribute§ Beispiele für Attribute: Farbe, Material, Lighting-Param., Textur, BlendFkt., Shader-Programm, etc.§ Jedes Attribut hat zu jedem Zeitpunkt genau 1 Wert aus einer endlichenMenge§ State-Wechsel sind einer der schlimmen Performance-Killer§ § Ziel: kompletten Szenengraphen mit minimaler Anzahl StateWechsel rendern§ "Lösung": Pre-SortingG. ZachmannVirtuelle Realität und Simulation – WS 11/12Real-time Rendering43CGC§ Problem: die optimale Lösung ist NP-vollständig§ Denn:§ Jedes Blatt ist ein Knoten ineinem vollständigen Graphen,§ Kosten einer Kante Kostender State-Wechsel(verschiedene State-Wechselkosten verschieden viel,z.B. sind neue Trafos relativ billig),§ Gesucht: kürzester WegBlattMaterialLichquelleà Traveling Salesman P

Real-time Rendering G. Zachmann Clausthal University, Germany cg.in.tu-clausthal.de G. Zachmann Virtuelle Realität und Simulation – WS 11/12 Real-time Rendering 2 C G Latenz beim Rendering C ! Klassische Pipeline: ! Latenz: ! Idee: rendere mehr als den Viewport render head swap display Scene graph traversal Transform Culling