Grafik-Praktikum Game Programming - Cheatsheet
Grundlagen der Geometrie und Transformationen
Definition:
Grundlegende Prinzipien der Geometrie und deren Anwendung auf Transformationen in der Grafikprogrammierung.
Details:
- Kartesisches Koordinatensystem: 2D (\textit{x, y}), 3D (\textit{x, y, z})
- Vektoren: Addition, Subtraktion, Skalarmultiplikation
- Punkte: Position im Raum
- Matrizen: 2x2, 3x3, 4x4 für 2D und 3D Transformationen
- Transformationen: Translation (\textit{Verschiebung}), Rotation, Skalierung
- Homogene Koordinaten: Verwendung von 4x4 Matrizen in 3D
- Affine Transformationen: Kombination von Translation, Rotation und Skalierung
- Projektive Transformationen: Perspektivische Verzerrung
- Matrizenmultiplikation: Sequenz von Transformationen
- Eigenwerte und Eigenvektoren: Wichtige Eigenschaften von Transformationen
Rasterung und Rendering-Techniken
Definition:
Umwandlung von Vektorgrafik in Rastergrafik (Bildpunkte). Rendering erstellt das finale Bild basierend auf Szene und Beleuchtung.
Details:
- Rasterung: Diskretisierung geometrischer Daten zu Bildpunkten.
- Rendering: Erzeugt Bilder aus Szenenbeschreibungen.
- Wichtige Techniken: Raytracing, Rasterization, Radiosity.
- Raytracing: Verfolgt Lichtstrahlen, um realistische Bilder zu erzeugen.
- Rasterization: Wandelt Dreiecke in Pixel um.
- Shader: Programme, die Beleuchtung und Farbgebung bestimmen.
- Pipeline: Vertex- und Fragment-Shader-Stufen.
Shader-Sprachen: GLSL und HLSL
Definition:
Shader-Sprachen werden verwendet, um Grafikprozessoren (GPUs) anzusteuern, um spezialisierte Grafik- und Bildverarbeitungsaufgaben zu erfüllen.
Details:
- GLSL (OpenGL Shading Language): Hauptsächlich in OpenGL verwendet. Basiert auf der C-Programmiersprache. Dateiendungen: .vert (Vertex-Shader), .frag (Fragment-Shader).
- HLSL (High-Level Shading Language): Hauptsächlich in DirectX verwendet. Basiert auf der C-Programmiersprache. Dateiendungen: .hlsl oder .fx.
- GLSL wird in einem Quelltext direkt an die GPU gesendet, um kompiliert zu werden.
- HLSL wird vorab kompiliert und die Binärdateien werden an die GPU gesendet.
- Beide Sprachen bieten Ähnlichkeiten bei der Syntax und Funktionalität, unterscheiden sich jedoch in API-Spezifika.
- Shader-Typen in beiden Sprachen: Vertex-Shader, Fragment/Pixel-Shader, Geometry-Shader, Tessellation-Shader, Compute-Shader.
Licht- und Schattenberechnung
Definition:
Berechnung von Beleuchtung und Schatten in der Computergrafik.
Details:
- Beleuchtungsmodelle: Phong, Blinn-Phong
- Lichtquellen: Punktlichter, gerichtete Lichter, Umgebungslichter
- Shading-Techniken: Flat Shading, Gouraud Shading, Phong Shading
- Schattenberechnung: Shadow Mapping, Shadow Volumes
- Formeln: Diffuse Komponente: \(I_d = k_d (L \bullet N)\), Spekular Komponente: \(I_s = k_s (R \bullet V)^n\)
- Umgang mit Self-Shadowing und Schatten-Aktionen
- Performance-Optimierung durch Precomputing und Level-of-Detail
Kollisionserkennungstechniken wie AABB und OBB
Definition:
Kollisionserkennungstechniken verwenden, um festzustellen, ob und wann Objekte in einer Spielszene kollidieren.
Details:
- AABB (Axis-Aligned Bounding Box): Einfache Kollisionserkennung, Boxen sind an den Achsen ausgerichtet. Effizient, aber nicht immer präzise.
- OBB (Oriented Bounding Box): Kollisionserkennung mit gedrehten Boxen. Präziser als AABB, aber aufwendiger zu berechnen.
- AABB-Kollisionstest: Überprüfen, ob sich die Projektionen der Boxen auf jeder Achse überlappen
- OBB-Kollisionstest: Trennen der Achs-Theorem (Separating Axis Theorem, SAT) verwenden, um zu überprüfen, ob es eine trennende Achse gibt.
Integration von Grafik- und Physik-Engines
Definition:
Integration von Grafik- und Physik-Engines in der Spieleentwicklung zur Erzeugung realistischer Szenarien
Details:
- Synchronisation von Grafik und Physik notwendig für realistische Bewegung und Kollision
- Simulation der Physik-Engine mit festen Zeitintervallen (\textit{fixed timestep}), z.B. \texttt{dt = 0.02s}
- Interpolation zwischen den Render-Frames für flüssige Animation (\texttt{Alpha} Interpolation)
- Mathematische Modellierung von Kräften und Bewegung: Newtons Gesetze
- Collision Detection und Collision Response: Berechnung von Kontaktpunkten und Reaktionen
- Datenstrukturen: Spatial Partitioning, Bounding Volume Hierarchies (BVH)
Szenenmanagement und Entity-Component-Systeme
Definition:
Verwaltung von Szenen und Entitäten in Spielen. Beide Systeme helfen bei der Strukturierung und Verwaltung von Spiellogik und -ressourcen.
Details:
- Szenenmanagement: Szenen repräsentieren verschiedene Zustände oder Levels im Spiel (z.B. Menü, Spielwelt).
- Szenenwechsel wird durch das Aufrufen von Methoden oder Ereignissen behandelt.
- Organisiert Ressourcen, Logik und Rendering von Spielobjekten innerhalb einer Szene.
- Entity-Component-System (ECS): Entitäten sind eindeutige Identifikatoren für Objekte im Spiel.
- Komponenten enthalten Daten und keine Logik, die von Entitäten genutzt werden.
- Systeme enthalten die Logik und operieren auf Entitäten, die bestimmte Komponenten besitzen.
- Fördert Wiederverwendbarkeit und modulare Struktur.
Multiplattformentwicklung und Performance-Optimierung
Definition:
Entwicklung von Software, die auf mehreren Plattformen läuft und deren Leistung optimiert wird.
Details:
- Plattformen: PC, Konsole, Mobile
- Frameworks/Tools: Unity, Unreal Engine
- Plattformabhängige API-Anpassungen
- Optimierungstechniken: Profiling, Caching, Parallelisierung
- Verwendung von plattformunabhängigen Bibliotheken
- Speicher- und Laufzeitoptimierungen
- Beachten von Besonderheiten und Einschränkungen der Zielplattformen