Real time → grafica di un videogioco praticamente. Non cut scenes ma game engine diciamo.
Parto da una descrizione di una scena, ovvero che cosa voglio andare a vedere e per arrivare all’immagine generata ho diversi tipi di renderer:
- opengl, pensato sul concetto di rusterizzazione
Noi lavoreremo con le mesh, vertici e coordinati spaziali. Le gpu moderne digeriscono punto, linea e triangolo come poligoni.
Rusterizzazione → descretizzazione di ciò che è espresso in maniera analitica.
Modello di illuminazione mi da la grafica migliore.
Settori che vanno in computer graphics:
- effettive di computer graphics
- videogiochi
Giochi non ne faremo, ma non facciamo nemmeno i game engine, ma perché vogliamo andare oltre quello: come sono fatti i game engine.
Disegnare qualcosa usando la pipeline moderna, vuol dire partire dall’inizio.
Step importanti nella computazione:
- Vertex specification
- vertex shader: programma in esecuzione nella nostra gpu. che cosa fa un vertex shader? Quello che ci pare, è un programma arbitrario. Il vertex shader si usa spesso per andare a fare trasformazioni geometriche delle nostre mesh.
- tessellation: raramente supportato in mobile/embedded
- geometry shader
- vertex post processing: ho dei vertici che sono fuori dal view port e non è normale da rimediare, lo devo sapere, non devo farlo andare oltre la pipeline.
- primitive assembly: assemblaggio delle primitive e decido di applicare trace culling. In questo caso pensiamo di dover andare scartare elementi che non ci interessa andare a renderizzare. Culling in tal senso vuole dire infatti scartare.
- rasterization:
- fragment shader: quasi sinonimo di pixel in cui gestisco tutti quanti i modelli di luce