Pipeline grafica: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Espansione, correzione e aggiunta di fonti e bibliografia |
Sistemazione ulteriore della voce |
||
Riga 3:
== Pipeline grafica 3D di base ==
[[File:Graphicspipeline-fig1.png|miniatura|336x336px|Fig.1 - Sistemi di coordinate 3D e terminologia]]
Qualsiasi utilizzo significativo del computer dedicato allo studio della geometria, implica
Per limitare l'output degli oggetti, si può usare spesso un vicino (''near'', ''front'', o ''hither'') e un lontano (''far'', ''back'', o ''yon'') ''piano di clipping''.<ref name=":0" /> Il volume
Lo step finale nel mappare un oggetto a un dispositivo grafico, comporta una mappatura che trasforma le coordinate del piano visivo in coordinate del dispositivo fisico.<ref name=":0" /> Questo è generalmente pensato come un processo a due fasi. Inizialmente, una prima mappa trasforma la finestra in una ''viewport''
[[File:Graphicspipeline
Attenzione: la distinzione fra "finestra" e "viewport" è spesso sfocata, e a volte, ciò che dovrebbe essere chiamato viewport viene chiamato finestra. La finestra specifica che <u>cosa</u> viene visto nelle coordinate utente, e la viewport specifica <u>dove</u> quel qualcosa viene visualizzato.<ref name=":0" /> Vedi la figura 3.
[[File:Graphicspipeline fig2.png|centro|miniatura|844x844px|Fig.2 - La pipeline grafica 3D di base]][[File:Pipeline OpenGL.svg|thumb|Pipeline OpenGL|429x429px]]
La pipeline può essere realizzata in [[software]] o in [[hardware]], sebbene per questioni di velocità e di prestazioni tutte le moderne [[scheda grafica|schede grafiche]] dispongono di diverse pipeline grafiche più o meno avanzate. Sebbene esistano molte implementazioni di una pipeline grafica tutte queste implementazioni suddividono il lavoro in quattro operazioni principali (riassumendo quanto detto in precedenza):▼
▲La pipeline può essere realizzata in [[software]] o in [[hardware]] sebbene per questioni di velocità e di prestazioni tutte le moderne [[scheda grafica|schede grafiche]] dispongono di diverse pipeline grafiche più o meno avanzate. Sebbene esistano molte implementazioni di una pipeline grafica tutte queste implementazioni suddividono il lavoro in quattro operazioni principali:
* [[Modellazione 3D|Modellazione]]: Durante questa fase vengono generati, come insieme di vertici, gli oggetti da rappresentare; ad esempio linee, poligoni, punti.
Line 22 ⟶ 21:
*[[Rasterizzazione]] o Scan Conversion: La scena è convertita da un insieme di vertici ad un insieme di pixels ([[bitmap]] o immagine [[raster]]).
=== Esempio dei passaggi degli shader in una pipeline grafica ===
== Gestione ==▼
{{Vedi anche|Shader}}Un ipotetico processo di funzionamento, con all'interno gli shader, potrebbe essere il seguente<ref>{{Cita libro|autore=M. Bailey, S. Cunningham|titolo=Graphics Shaders: Theory and Practise|edizione=2|anno=|editore=|città=|p=|pp=|ISBN=}}</ref>:▼
La pipeline grafica può essere gestita direttamente dal programma tramite accesso diretto all'hardware o può essere gestita tramite librerie grafiche che forniscono delle primitive di manipolazione che vengono utilizzate dal programma.<ref name=":0" /> Nella maggior parte dei casi vengono utilizzate le librerie grafiche sebbene queste introducano una leggera penalizzazione delle prestazioni permettano al programma di sfruttare le schede grafiche in commercio senza dover scrivere una versione apposita del programma per ogni tipologia di scheda grafica. Le più diffuse librerie grafiche tridimensionali sono [[OpenGL]] e [[DirectX]].▼
▲Un ipotetico processo di funzionamento potrebbe essere il seguente<ref>{{Cita libro|autore=M. Bailey, S. Cunningham|titolo=Graphics Shaders: Theory and Practise|edizione=2|anno=|editore=|città=|p=|pp=|ISBN=}}</ref>:
# La [[CPU]] invia le istruzioni e le coordinate 3D della scena alla GPU
# Nel vertex shader programmabile viene trasformata la geometria e vengono applicati alcuni effetti di illuminazione
Line 46 ⟶ 29:
# Vengono applicati ulteriori effetti tramite il pixel shader
# Viene effettuato il test di visibilità ([[z-test]]): se un pixel è visibile, viene scritto nel [[framebuffer]] per l'output su schermo.
▲== Gestione ==
▲La pipeline grafica può essere gestita direttamente dal programma tramite accesso diretto all'hardware o può essere gestita tramite librerie grafiche che forniscono delle primitive di manipolazione che vengono utilizzate dal programma.<ref name=":0" /> Nella maggior parte dei casi vengono utilizzate le librerie grafiche sebbene queste introducano una leggera penalizzazione delle prestazioni permettano al programma di sfruttare le schede grafiche in commercio senza dover scrivere una versione apposita del programma per ogni tipologia di scheda grafica. Le più diffuse librerie grafiche tridimensionali sono [[OpenGL]] e [[DirectX]].
== Note ==
Line 51 ⟶ 37:
== Bibliografia ==
* Frank Luna, Introduction to 3D Game Programming with DirectX 11, 2011
* [http://lvelho.impa.br/i3d11/clip/00210494.pdf James F. Blinn. ''A Trip Down the Graphics Pipeline: The Homogeneous Perspective Transform''. IEEE Comput. Graph. Appl., 1993.]
* [https://pdfs.semanticscholar.org/d291/591afede09b1049be57e0d1e394017c3aecb.pdf?_ga=2.142054066.1876649047.1496773235-480852760.1496773235 Jonathan Ragan-Kelley, Jaakko Lehtinen, Jiawen Chen, Michael Doggett, and Frédo Durand. ''Decoupled sampling for graphics pipelines''. ACM Trans. Graph., May 2011.]
|