Di: Andrea Zorzin Anno accademico 2006/2007 Corso di “Elementi di grafica digitale” Prof. Matjaz Hmeliak.

Slides:



Advertisements
Presentazioni simili
…Global Gest Deca S.r.l. 24/01/ Global gest – Deca S.r.l.
Advertisements

Un oggetto multifunzionale: la PlayStation
1 Introduzione ai calcolatori Parte II Software di base.
Interazione Uomo - Macchina
INTRODUZIONE Il framework.NET. Un po di storia Sin dalla prima versione del sistema operativo Windows (1990 circa), nacque la necessità di far comunicare.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità A1 Introduzione a Java.
Gestione Input Output A. Ferrari.
La Storia Recente dell’ Informatica
PROGETTO PER LA FORMAZIONE TECNOLOGICO – DIDATTICA DEI DOCENTI
Sistemi Operativi Menù: 1) Introduzione al sistema operativo
Ogni PC, per iniziare a lavorare, ha bisogno di un sistema operativo. Infatti questo è il primo programma che viene eseguito e che permette all'utente.
Prof. Emanuele Marino Concetti teorici di base della tecnologia dellinformazione.
CONOSCIAMO IL WINDOWS '95.
La gestione dell'audio Creazione, acquisizione, formati di file a cura di Loris Tissìno (
Introduzione a DirectX Diego Colombo Universita di Pisa Dipartimento di Informatica.
La comunicazione multimediale
SINCRONIZZAZIONE E TRASFERIMENTO VIA WEB DI IMMAGINI E DATI MULTIMEDIALI CON INFORMAZIONI GEOGRAFICHE E RAPPRESENTAZIONI CARTOGRAFICHE Laureando: Mitja.
Realizzazione di algoritmi video su FPGA
Introduzione allo studio dell’informatica
ECDL MODULO 1.1 Conoscere i sistemi di elaborazione
Sistema Operativo Preparazione e prima fase di installazione del sistema Reperite tutti i driver più aggiornati per il vostro hardware scaricandoli da.
Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica del computer.
Introduzione allinformatica. Cosè linformatica ? Scienza della rappresentazione e dellelaborazione dellinformazione ovvero Studio degli algoritmi che.
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 prove.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2005/06 prove generali.
Costruzione di interfacce Paolo Cignoni
OPEN OFFICE e IMPRESS Masucci Antonia Maria.
Architettura del World Wide Web
Struttura dei sistemi operativi (panoramica)
2) Sistemi operativi Lab. Calc. AA2004/05 - cap.2.
DirectX - OpenGL Corso di “Elementi di Grafica Digitale”
ADSL VOIP Voice Over IP.
9. Il termine Informatica ha invaso il nostro mondo quotidiano. La sua origine è nel termine francese Informatique, derivato dalla fusione fra Information.
UNIVERSITA’ STUDI DI ROMA “FORO ITALICO”
UNIVERSITA’ STUDI DI ROMA “FORO ITALICO”
1 Effetti impressionistici Daniele Marini. 2 Tecniche discrete di manipolazione del frame buffer: –Texture mapping –Antialiasing –Compositing –Alpha blending.
Rete Didattica Multimediale
Copyright © 2007 Toshiba Corporation. Tutti i diritti riservati. Progettato per una mobilità senza precedenti Perché Windows ® Vista è più efficace sui.
MODULO 01 Unità didattica 04
Modulo 1 - Hardware u.d. 3 (syllabus – 1.3.5)
Editoria multimediale lezione 5 Marco Lazzari Università di Bergamo Facoltà di Lettere e Filosofia A.A
PRESENTAZIONE di RICCARDO
Modulo 1 - Concetti di base della Tecnologia dell'Informazione
Come è fatto un computer
Concetti di base sul Software dei PC Unitre Anno
Roma, 13 maggio 2005Roma, 16 giugno 2005 slide 1 Flash Mobile Applicazioni cross platform grazie a Flash Lite Introduzione allintegrazione di media esterni.
VIRTUALIZZAZIONE Docente: Marco Sechi Modulo 1.
Architettura di OGL e pipe-line Daniele Marini Corso Di Programmazione Grafica.
Antialiasing tratto da: Han-Wei Shen.
Corso di Programmazione Grafica e Laboratorio Daniele Marini
Corso di Programmazione Grafica e Laboratorio Introduzione a OpenGL Prof. Daniele Marini.
Architettura di OGL e pipe-line Daniele Marini Davide Gadia Davide Selmo Corso Di Programmazione Grafica aa2005/2006.
Nome relatore, Titolo Windows 8 Pro: per le piccole imprese.
Introduzione all‘app Lync Windows Store Lync 2013.
GAC: mercato Verticale dedicato alle aziende che sviluppano attività su commessa, ovvero legate alla realizzazione di progetti o di prodotti non di serie.
Riferimento rapido per l’app © 2013 Microsoft Corporation. Tutti i diritti riservati. Schermata iniziale di Lync I riquadri dell'hub a sinistra nella schermata.
ABILAB HOMEBANKING ACCESSIBILE AUSILI E DISABILITA’
© 2012 Microsoft Corporation. Tutti i diritti sono riservati. Pianificare una riunione Lync È possibile pianificare una riunione Lync tramite il componente.
Riferimento rapido per © 2012 Microsoft Corporation. Tutti i diritti sono riservati. Lync Web App Partecipare a una riunione Lync con l'audio del computer.
GPGPU General Purpose Computation on GPU Emanuele Ruffaldi 2005 Corso su Elasticità non lineare ed Oggetti Deformabili.
MODULO 01 Unità didattica 04
IL VIDEO ON-LINE: DALLE ORIGINI ALLE PIATTAFORME DI VIDEO-SHARINg
Computer Graphics Marco Tarini Università dell’Insubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione.
Star Office è una suite di software di produttività personale commercializzata da Sun Microsystems. StarOffice nasce come software commerciale sviluppato.
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali (corso TIE) CORSO LAUREA MAGISTRALE IN SCIENZE E TECNOLOGIE DELLE PRODUZIONI ANIMALI.
Costruzione di interfacce Paolo Cignoni
GPU - Graphics Processing Unit Corso di Sistemi Paralleli Luigi La Torre Giugno 2012.
I Sistemi Operativi. Definizione Per Sistemi Operativi (di seguito SO) si intendono quei pacchetti software, a loro volta costituiti da più sottoprogrammi.
Implementazioni di un analizzatore di protocollo Esistono quattro fondamentali tradeoff per la realizzazione di un analizzatore di protocollo:  Analisi.
Breve Storia 3d prima generazione (escludiamo Wolf3d, Doom e Duke3d, che erano una sorta di 2D)  per ogni triangolo che compone una mesh calcoliamo la.
Transcript della presentazione:

di: Andrea Zorzin Anno accademico 2006/2007 Corso di “Elementi di grafica digitale” Prof. Matjaz Hmeliak

2 DirectX componenti: DirectX (in origine chiamato "Game SDK") è una collezione di API per lo sviluppo semplificato di videogiochi per Windows. La 9.0c è la versione attuale delle librerie in Windows XP e precedenti, mentre in Windows Vista la versione attuale è la 10. Principali componenti di DirectX 9.0c sono: 1. DirectX Graphics: permette la presentazione a video di grafica 2D e 3D, interfacciandosi direttamente con la scheda video. È composto da una API di basso livello (Direct3D) ed una di alto livello (Direct3DX). Direct3D è concepito per applicazioni grafiche complesse e che richiedono un'alta frequenza di aggiornamento dello schermo. Direct3DX si basa su Direct3D per offrire potenzialità simili con minore complessità (ausiliaria). DirectX Graphics permette al programmatore di sfruttare direttamente le potenzialità dell'hardware del PC, eludendo Graphics Device Interface (GDI) e Display Device Interface (DDI) di Windows. Le funzioni non supportate dall'hardware vengono emulate via software dalle DirectX grazie al Hardware Emulation Layer (HEL).

3 Componenti (2)... 2.DirectInput: gestisce l'input dato dalla tastiera, dal mouse, dal joystick o da qualsiasi altra periferica di gioco 3.DirectPlay: fornisce supporto ai giochi di rete. (non più supportato perché pesante). 4.DirectSound: si interfaccia con la scheda audio per la riproduzione e la registrazione di effetti sonori. Supporta l'audio posizionale (che simula la spazialità del suono in 3D). 5.DirectMusic: supporta la riproduzione di musica (MIDI, ma non MP3). Offre la funzionalità di un sintetizzatore software all'occorrenza. 6.DirectShow: gestisce diversi file multimediali (per esempio filmati MPEG o audio MP3) e supporta lo streaming via Internet. 7.DirectSetup: permette al programmatore di rivelare le DirectX installate e aggiornarne i componenti durante l'installazione del proprio programma. 8.DirectX Media Objects: permette la modifica di streams audio e video, così da poterli poi riprodurre tramite DirectShow o DirectSound.

4 Cambiamenti in DirectX10 DirectX10 ha introdotto grossi cambiamenti che rivoluzioneranno il modo di scrivere applicazioni RealTime, ad esempio: Rimozione completa della fixed pipeline Cambiamenti in D3DX Lost Device automatico

5 Rimozione della Fixed Pipeline In DirectX10 c’è una filosofia diversa nell'utilizzo di Device. Non ci sono più le tipiche funzioni per agire via device sul rendering, in DirectX9 qualsiasi cosa (una texture, una vertex buffer o altro) deve e può essere creato soltanto tramite il device. Supponiamo device sia un puntatore alla classe IDirect3DDevice9 validato e funzionante: device->SetTexture(EsempioTexture); //Immette la texture per il prossimo rendering device->SetRenderState(D3DRS_LIGHTENABLE,false) //Disattiva le luci In questo piccolo esempio è possibile rendersi conto che tutto ciò che deve essere immesso per il rendering viene fatto via device. Questa è chiamata fixed pipeline. In D3D10 questa viene abolita, sostituendola con gli Shader: quindi ogni applicazione D3D10 dovrà essere correlata da almeno uno shader, altrimenti non sarà possibile renderizzare nulla. Questa rivoluzione porterà significative difficoltà a chi vuole avvicinarsi al mondo del 3D tramite Direct3D10, in quanto capire il meccanismo di rendering sarà più difficile

6 Esempio shader float4x4 ModelViewMatrix; struct a2v { float4 Position : POSITION; float4 Color : COLOR0; }; struct v2p { float4 Position : POSITION; float4 Color : COLOR0; }; void main( in a2v IN, out v2p OUT ) { OUT.Position = mul(IN.Position, ModelViewMatrix); OUT.Color = IN.Color; } Gli shader devono riprodurre il comportamento fisico del materiale che compone l'oggetto cui sono applicati. Si può quindi creare uno shader per i metalli, uno per la plastica, uno per il vetro e così via, e riutilizzarli più volte all'interno di una scena. Una volta modellato un oggetto complesso, come può essere ad esempio una finestra, si assocerà al modello della cornice uno shader per il legno, uno per la maniglia e uno per il vetro.

7 Altri cambiamenti Cambiamenti in D3DX Molte funzioni e classi sugli shader (D3DXCompileShaderFromFile, D3DXAssembleShaderFromFile) sono state passate da D3DX a D3D, cioè sono passate dalla libreria ausiliaria a quella principale. Questo sottolinea l’importanza degli shader in DX10. Sono state completamente rimosse varie classi per la gestione delle animazioni (ID3DXAllocateHiearchy,D3DXMeshContainer, D3DXFrame), da questo si può facilmente intuire che sarà disponiblie un nuovo sistema di animazioni. Lost Device automatico Direct3D10 sarà automaticamente in grado di gestire i lost device, ossia quelle condizioni in cui si perde il rendering della scena, ad esempio quando viene ridotta a icona una finestra in cui vi è un'applicazione D3D10. Con Direct3D9 in quel momento era necessario fermare il rendering. Geometry Shaders Un ulteriore aggiunta a DX10 sono i Geometry Shaders, essi sono un evolizione dei vertical shader. Un altro strumento su cui la Microsoft sta lavorando è XNA, un framework con lo scopo di assistere lo sviluppo di videogiochi integrando le direct, gli shader in linguaggio di alto livello (HLSL) e altro su diverse piattaforme.

8 Esempio di Geometry Shaders Normal mapping (Direct3D 9) dalla presentazione Microsoft WinHAC06

9 Esempio di Geometry Shaders (2) Displacement Mapping (Direct3D 10) dalla presentazione Microsoft WinHAC06

10 OpenGL OpenGL (Open Graphics Library) è una specifica che definisce una API per più linguaggi e per più piattaforme per scrivere applicazioni che producono computer grafica 2D e 3D. L'interfaccia consiste in circa 250 diverse chiamate di funzione che si possono usare per disegnare complesse scene tridimensionali a partire da semplici primitive. È usato per sviluppare nell'industria dei videogiochi (nella quale compete con DirectX su Microsoft Windows), per applicazioni di CAD, realtà virtuale, e CAE. È lo standard di fatto per la computer grafica 3D in ambiente Unix. OpenGL assolve a due compiti fondamentali: 1.nascondere la complessità di interfacciamento con acceleratori 3D differenti, offrendo al programmatore una API unica ed uniforme; 2.nascondere le capacità offerte dai diversi acceleratori 3D, richiedendo che tutte le implementazioni supportino completamente l'insieme di funzioni OpenGL, ricorrendo ad un'emulazione software se necessario.

11 OpenGL (2) OpenGL è una API procedurale che opera a basso livello, che richiede al programmatore i passi precisi per disegnare una scena. Questo approccio si pone in contrasto con le API descrittive ad alto livello le quali operano su struttura dati ad albero (scene graph). La natura di OpenGL obbliga quindi i programmatori ad avere una buona conoscenza della pipeline grafica stessa, ma al contempo lascia una certa libertà per implementare complessi algoritmi di rendering. Storicamente, OpenGL ha esercitato una notevole influenza sullo sviluppo degli acceleratori 3D, promuovendo:  punti, linee e poligoni disegnati come primitive base;  una pipeline per il transform and lighting;  Z-buffering  Texture mapping  Alpha blending Una delle caratteristiche più apprezzate in ambito professionale è la retrocompatibilità tra le diverse versioni di OpenGL.

12 Generazione di chipset a confronto: R100 R100 - introdotto nel 2000, ATI introdusse il supporto alle liberie DirectX 7 e OpenGL 1.3. Con la tecnologia HyperZ ATI ottenne un incremento nel bandwidth e nel fillrate. R200 R200 - Il secondo chip di ATI introdusse DirectX 8.1 e OpenGL 1.4, progettato con tecnologia a shader programmabili, supportava il pixel shader 1.4, il più flessibile prima dell'introduzione del 2.0. R300 R300 - Rilasciato nel 2002, supportando le librerie DirectX 9 e OpenGL 2.0, rese ATI leader nel settore, grazie alla sua performance nel pixel shading.

13 R420 R420 - Vennero aggiunte le funzioni delle DirectX 9.0b, tra cui il Shader model 2b. R520 R520 - Lanciata nell'ottobre 2005, supporta il Shader Model 3.0, oltre che la tecnologia di rendering a virgola mobile per l'applicazione di effetti High dynamic range rendering e di Antialiasing. R600 R600 - Questa generazione è la prima di ATI con supporto alle DirectX 10, introdotte nel sistema operativo Microsoft Windows Vista, e ad utilizzare un'architettura a shader unificati. Il core grafico R600 è composto da 320 stream processors riuniti in matrici SIMD. La nuova linea è stata finalmente lanciata il 14 maggio 2007 (con sei mesi di ritardo rispetto ai piani dell'azienda). Include le schede HD2900 XT, HD2400 e HD2600 nel segmento desktop e HD2100, HD2300, HD2600 nel segmento notebook. Generazione di chipset a confronto:

14 Generazione di chipset a confronto: NV1 NV1 - La prima scheda video prodotta da NVIDIA. RIVA 128 e RIVA 128ZX RIVA 128 e RIVA 128ZX - Supporto per DirectX 5 e OpenGL 1; la prima scheda con supporto DirectX dell'azienda. RIVA TNT e RIVA TNT2 RIVA TNT e RIVA TNT2 - Supporto DirectX 6 e OpenGL 1; la serie che ha regalato il successo alla NVIDIA. GeForce 256 GeForce Supporto DirectX 7 e OpenGL 1, transform & lighting via hardware, introduce le DDR. GeForce 2 GeForce 2 - DirectX 7 e OpenGL 1

15 GeForce 3 GeForce 3 - DirectX 8.0 e OpenGL 1.2, possiede un'architettura che permette di risparmiare banda verso la memoria. GeForce 4 GeForce 4 - DirectX 8.1 (tranne le MX), OpenGL 1.4 e una versione economica (MX) basata sulla GeForce 2. GeForce FX GeForce FX - DirectX 9 e OpenGL 1.5. GeForce 6 GeForce 6 - DirectX 9.0c e OpenGL 2.0, offriva shader migliorati, consumi ridotti e supporto per la configurazione SLI. GeForce 7 GeForce 7 - DirectX 9.0c e OpenGL 2.0, supporto per WDDM, anti- aliasing TSAA e TMAA, SLI GeForce 8 GeForce 8 - DirectX 10 e OpenGL 2.0, architettura unificata per gli shader, anti-aliasing CSAA, tecnologia Quantum Effects per la gestione della fisica. Generazione di chipset a confronto:

16 I perché di DirectX... DirectX permette di accelerare l'accesso all'hardware ed evitare i comuni canali di comunicazione di Windows in modo da incrementare sensibilmente le performance. Inoltre DirectX riveste due ruoli, quello di driver veloce e di API. Non è possibile dividere queste due funzioni. Ciò significa che un programma che sfrutta OpenGL non può appoggiarsi a DirectX per avere una via preferenziale verso la scheda video, infatti tale via è utilizzabile solamente se il canale viene aperto dalle API Direct3D (o DirectDraw) e se vengono utilizzate le routine grafiche proprie di tali API. Quando si utilizza OpenGL il compito di aggirare le normali procedure di Windows è affidato alle GL Extension del sistema operativo (WGL).

17...e quelli di OpenGL Il meccanismo di estensione di OpenGL è probabilmente il punto su cui è più intensa la disputa fra le due APIs. OpenGL include un meccanismo in cui qualsiasi driver può far conoscere le proprie estensioni all’API, introducendo così nuove funzionalità. Ciò permette che la nuova funzionalità sia esposta rapidamente, ma questo può creare confusione se diversi fornitori implementano estensioni simili con APIs diverse. Molte di queste estensioni sono standardizzate periodicamente dal consorzio di revisione dell’architettura di OpenGL ed alcuni entrano a far parte del core delle successive versioni di OpenGL.

18 Confronto fra Direct3D e OpenGL Mentre OpenGL può essere implementata su qualsiasi sistema operativo, DirectX è compatibile solo con sistemi Microsoft. L’azienda di Redmond definisce periodicamente le API riguardanti tale libreria mentre OpenGL viene implementata dal consorzio OpenGL Architectural Review Board (ARB). I meccanismi di diffusione delle API sono, per OpenGL, “Include e Librerie”; per DirectX oggetti COM.

19 Immagini a confronto DirectX 9 DirectX 10 Halo Quake 4 Crysis

20 OpenVG (Open Vector Graphics) E’ uno standard API progettato da un gruppo di lavoro composto da diverse aziende del settore. OpenVG è stato progettato per grafica vettoriale 2D con hardware accelerato. Il suo scopo principale sono i telefoni cellulari, console come la PlayStation 3 e altri prodotti dell'elettronica di consumo per ottimizzare l'utilizzo di risorse nel disegno delle interfacce utente. In particolare permette di accelerare sequenze Flash o SVG. Il gruppo OpenVG fu formato il 6 luglio 2004, la prima bozza delle specifiche fu rilasciata alla fine del 2004, mentre la versione 1.0 fu rilasciata il primo agosto Finora non vi è alcuna implementazione open source, ma il 16 gennaio 2007, Zack Rusin ha annunciato dal suo blog l'inizio di una implementazione open source di OpenVG poggiata su QtOpenGL di Trolltech. Il motivo maggiore per questa scelta è da ricercarsi nelle presunte qualità e prestazioni di QtOpenGL che secondo gli sviluppatori surclasserebbe ogni altro framework di grafica vettoriale.

21 Fonti Wikipedia ( OpenSkills ( GPGPU ( ecc…