DirectX - OpenGL Corso di “Elementi di Grafica Digitale”

Slides:



Advertisements
Presentazioni simili
Linguaggio R Raffaele Miele Dipartimento di Matematica e Statistica Università degli Studi di Napoli Federico II
Advertisements

1 Introduzione ai calcolatori Parte II Software di base.
Il Software.
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.
Classe III A A.s – 2011 Sistemi di Elaborazione e Trasmissione dell’Informazione 4 ore settimanali (2 laboratorio) Docenti Prof. Alberto Ferrari.
Gestione Input Output A. Ferrari.
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.
Il Sistema Operativo.
Introduzione a DirectX Diego Colombo Universita di Pisa Dipartimento di Informatica.
DAL MICROPROCESSORE AI SISTEMI EMBEDDED Informatica per lAutomazione II (Informatica B o II) Anno accademico 2008/2009 Prof. Giuseppe Mastronardi Ing.
Dr. Francesco Fabozzi Corso di Informatica
Informatica giuridica Hardware e software: glossario Lucio Maggio Anno Accademico 2000/2001.
ECDL MODULO 1.1 Conoscere i sistemi di elaborazione
Anno Accademico Corso di Informatica Informatica per Scienze Biologiche e Biotecnologie Anno Accademico
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.
Costruzione di interfacce Paolo Cignoni
1 Corso di Informatica (Programmazione) Lezione 4 (24 ottobre 2008) Architettura del calcolatore: la macchina di Von Neumann.
OPEN OFFICE e IMPRESS Masucci Antonia Maria.
Le prestazioni (velocità) di un singolo disco sono limitate dalla tecnologia usata, -per aumentare le prestazioni si può pensare di far operare in parallelo.
Architettura del World Wide Web
Struttura dei sistemi operativi (panoramica)
Software di base Il sistema operativo è un insieme di programmi che opera sul livello macchina e offre funzionalità di alto livello Es.organizzazione dei.
2) Sistemi operativi Lab. Calc. AA2004/05 - cap.2.
Estensioni allarchitettura di Von Neumann Vito Perrone Corso di Informatica A per Gestionali.
SOFTWARE I componenti fisici del calcolatore (unità centrale e periferiche) costituiscono il cosiddetto Hardware (alla lettera, ferramenta). La struttura.
Informatica giuridica Hardware e software: glossario Lucio Maggio Anno Accademico 2001/2002.
Labortaorio informatica 2003 Prof. Giovanni Raho 1 INFORMATICA Termini e concetti principali.
I SISTEMI OPERATIVI.
UNIVERSITA’ STUDI DI ROMA “FORO ITALICO”
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)
MODULO 01 Il computer.
COME È FATTO UN COMPUTER
Modulo 1 - Concetti di base della Tecnologia dell'Informazione
Concetti di base sul Software dei PC Unitre Anno
MicroSoft - Disk Operating System. MS-DOS è stato un sistema operativo commerciale della Microsoft Corporation dedicato ai personal computer con microprocessore.
SOFTWARE DI BASE Jacopo Caretti.
VIRTUALIZZAZIONE Docente: Marco Sechi Modulo 1.
Il Sistema Operativo (1)
ECDL Patente europea del computer
Alla fine degli anni quaranta nasceva il mito del cervello elettronico, e tutte le attività connesse allutilizzo del computer venivano indicate tramite.
Corso di Programmazione Grafica e Laboratorio Daniele Marini
Corso di Programmazione Grafica e Laboratorio Introduzione a OpenGL Prof. Daniele Marini.
Insegnamento “Tecniche audiovisive” Corso di Laurea in Ingegneria delle Comunicazioni Symbian Marco Teodori Assistente Ricercatore - Fondazione Ugo Bordoni.
Sistema Operativo (Software di base)
Di: Andrea Zorzin Anno accademico 2006/2007 Corso di “Elementi di grafica digitale” Prof. Matjaz Hmeliak.
GPGPU General Purpose Computation on GPU Emanuele Ruffaldi 2005 Corso su Elasticità non lineare ed Oggetti Deformabili.
INTERFACCE Schede elettroniche che permettono al calcolatore di comunicare con le periferiche, che possono essere progettate e costruite in modo molto.
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali (corso TIE) CORSO LAUREA MAGISTRALE IN SCIENZE E TECNOLOGIE DELLE PRODUZIONI ANIMALI.
Corso di Architetetture degli Elaboratori, A.A. 2004/ Architettura degli Elaboratori Elisa B.P. Tiezzi Orario ricevimento: Giovedì, ( Il materiale.
Sistemi operativi di rete Ing. A. Stile – Ing. L. Marchesano – 1/18.
Elementi di Informatica SciGeo a.a. 2002/2003. Docente Giorgio Delzanno Ufficio 104 – I piano Dipartimento di Informatica e Sc. Inf. Tel
Tecnologie dell'informazione e della comunicazione - Stacey S. Sawyer, Brian K. Williams Copyright © The McGraw-Hill Companies srl Introduzione.
Concetti di base Computer, HW e SW
GPU - Graphics Processing Unit Corso di Sistemi Paralleli Luigi La Torre Giugno 2012.
ISIA Duca degli Abruzzi a.s. 2010/2011 prof. Antonella Schiavon
I Sistemi Operativi. Che cosa sono? Il sistema operativo è un software di base che fa funzionare il computer. I Sistemi operativi più importanti sono:
I Sistemi Operativi. Definizione Per Sistemi Operativi (di seguito SO) si intendono quei pacchetti software, a loro volta costituiti da più sottoprogrammi.
La struttura di un computer
 Negli anni 40 i sistemi operativi non esistevano, i programmatori infatti avevano un accesso diretto alle risorse hardware.  Il primo sviluppo dei.
Programmazione orientata agli Oggetti Introduzione a Java.
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.
Il Software Il Software Zhang Rui Classe 1°B a. s
Definizione e obiettivi del Sistema Operativo. DIFFERENZA TRA SISTEMA OPERATIVO – SOFTWARE APPLICATIVO Sistema operativo è un insieme organico di programmi.
Transcript della presentazione:

DirectX - OpenGL Corso di “Elementi di Grafica Digitale” Prof. Matjaz Hmeljak Anno Accademico 2008/2009 DirectX - OpenGL Presentazione di Maicol Petozzi

DirectX DirectX è un set multimediale di API per lo sviluppo semplificato di videogiochi per Windows I componenti delle librerie DirectX sono disponibili al programmatore come oggetti corrispondenti alle specifiche COM (Component Object Model) Versioni attuali: Windows XP e precedenti: DirectX 9.0C Windows Vista: DirectX 10 (WGF 2.0) / DirectX 9.0L (WGF 1.0) WGF (Windows Graphics Foundation)

Nascita DirectX (1) Nel 1994-95 Microsoft è sul punto di rilasciare un nuovo SO Windows 95 (con qualche problema per il futuro del suo prodotto...) DOS Permette l’accesso diretto alla schede video, tastiera, mouse, periferiche audio e a tutte le altre parti del SO. Windows 95 Con il concetto di plug-and-play, limita l’accesso a tutti i dispositivi lavorando su un modello più standardizzato. HW HW Risultato: Il DOS sarebbe stato considerato come migliore piattaforma per la programmazione di videogiochi, limitando il successo di Win95 WIN DOS APP APP

Struttura a livelli per la grafica di Windows 95 alla sua uscita Nascita DirectX (2) (1) (2) (3) 1994 1995 1996 Fine ’94: Microsoft inizia lo sviluppo da zero di un API grafica Febbraio ’95: decide di acquisire British 3D RenderMorphics e la sua API Settembre ‘95: risviluppa l’API acquisita e rilascia la prima versione delle DirectX (con il nome di Windows Games SDK) Struttura a livelli per la grafica di Windows 95 alla sua uscita Struttura a livelli per la grafica di Windows 95 con l’introduzione di WG SDK

OpenGL OpenGL (Open Graphics Library) è una specifica che definisce un API per più linguaggi e piattaforme per scrivere applicazioni che producono computer grafica 2D e 3D OpenGL ha un ampio ventaglio di capacità: Sviluppo di videogiochi, applicazioni CAD, CAE e realtà virtuali Ambiente Unix: Standard di fatto per la computer grafica 3D Retrocompatibile - OpenGL è diventata nel tempo una API ad uso generico, con un ampio ventaglio di capacità - Una delle caratteristiche più apprezzate in ambito professionale è la retrocompatibilità tra le diverse versioni

OpenGL OpenGL garantisce due aspetti importanti: OpenGL è un API procedurale a basso livello Richiede al programmatore i passi precisi per disegnare una scena Al contrario, API descrittive ad alto livello richiedono una descrizione generica della scena Nascondere la complessità di interfacciamento con acceleratori 3D differenti Offrendo al programmatore un API unica ed uniforme Nascondere le capacità offerte dai diversi acceleratori 3D Richiedendo che tutte le implementazioni supportino completamente l'insieme di funzioni

GLU – GLUT - GLUI OpenGL viene arricchito dal vari pacchetti, che contengono librerie per fornire differenti funzionalità: GLU (GL Utility) contiene funzioni di più alto livello, utili ad esempio per la creazione di sfere o altri oggetti complessi o per impostare particolari matrici di proiezione e per facilitare alcune operazioni al programma client GLUT (GL Utility Toolkit) si tratta di un toolkit che permette di scrivere programmi completi nascondendo le differenze di implementazione tra i gestori finestre dei vari sistemi operativi. Non viene usata a livello professionale GLUI (GL User Interface) è una libreria per l’interfaccia grafica, basata su GLUT, che fornisce controlli come buttons, checkboxes, radio buttons e spinners alle applicazioni OpenGL

Nascita OpenGL (1) IRIS GL di Silicon Graphics (SGI) Predecessore di OpenGL Inizialmente nata come libreria grafica 2D Evoluta poi in grafica 3D Utilizzata su HW dedicato (IRIS graphics workstations) Tentativo di espansione nel mercato: Problemi passaggio Opengl parte dal suo predecessore, IRIS GL di Silicon Graphics. Libreria grafica inizialmente nata come 2D e successivamente evoluta in grafica 3D, era utilizzata su HW dedicato e ottimizzato, le IRIS graphics workstations. Quando SGI tentò di portare IRIS GL su altre piattaforme HW, ci furono dei problemi. Gli sforzi da parte di Silicon Graphics di incrementare la portabilità del suo prodotto, portarono come risultato la nascita di OpenGL. HW dedicato (IRIS graphics workstation) HW generico (Altre piattaforme HW ) Risultato Nasce OpenGL, risultato degli sforzi di SGI per incrementare la portabilità di IRIS GL

Nascita OpenGL (2) Il nuovo linguaggio offre: Potenzialità di (IRIS) GL Potenzialità di essere “Open” OpenGL Versione 1.0, 1 Giugno 1992 Con lo scopo di definire e promuovere lo standard nasce l’ARB (Architecture Review Board) Composto inizialmente da: SGI, Digital Equipment Corporation, IBM, Intel, Microsoft Successivamente altre aziende si uniscono all’ARB SGI controllava comunque le licenze OpenGL Adattabile a diverso HW e OS - Il nuovo linguaggio offre le potenzialità di IRIS GL e quelle di essere “Open”, cioè adattabile a diverso Hardware e Sistema Operativo. - La versione 1.0 di OpenGL viene pubblicata il 1 Giugno 1992. - Con lo scopo di definire e promuovere lo standard nasce l’organizzazione ARB (Architecture Review Board), composto inizialmente da: SGI, DEC, IBM, Intel e Microsoft. Successivamente altre aziende entrano a far parte dell’ARB, soprattutto i produttori di Hardware. In ogni caso SGI controllava comunque le licenze OpenGL.

Crescita a confronto OpenGL 1.0/1 DirectX 1.0 DirectX 2.0 2.0a giugno 1992   OpenGL 1.0/1 DirectX 1.0 settembre 1995 DirectX 2.0 1996 2.0a DirectX 3.0 3.0a 3.0b DirectX 4.0 DirectX 5.0 luglio 1997 marzo 1998 1.2 5.2 maggio DirectX 6.0 agosto ottobre 1.2.1 6.1 febbraio 1999 6.1a DirectX 7.0 7.0a 7.1 DirectX 8.0   novembre 2000 agosto 2001 1.3 8.0a 8.1 8.1a 8.1b 8.2 giugno 2002 1.4 DirectX 9.0 dicembre 2003 1.5 9.0a 9.0b 9.0c 2004 settembre OpenGL 2.0 2006 2.1 DirectX 10 2008 OpenGL 3.0

Struttura DirectX 9.0c DirectX Graphics Permette la presentazione a video di grafica 2D e 3D, interfacciandosi direttamente con la scheda video. È composto da due API: Direct3D: API di basso livello, concepita per applicazioni grafiche complesse, che richiedono un'alta frequenza di aggiornamento dello schermo (giochi). Fino alla versione 8.0 esistevano DirectDraw (grafica 2D) e Direct3D (solo grafica 3D). Direct3DX: API di livello alto, si basa su Direct3D per offrire potenzialità simili con minore complessità. Le funzioni non supportate dall'hardware vengono emulate via software dalle DirectX grazie al Hardware Emulation Layer (HEL), a scapito delle prestazioni.

Struttura DirectX 9.0c DirectInput Gestione input delle periferiche. Tastiera, mouse, joystick o altra periferica di gioco DirectPlay Fornisce supporto ai giochi di rete (non più supportato perché pesante) DirectSound Interfaccia con la scheda audio per la riproduzione-registrazione di effetti sonori DirectMusic Riproduzione di musica (MIDI, MP3). Offre la funzionalità di un sintetizzatore software DirectShow Gestione file multimediali (MPEG, MP3) e streaming via Internet DirectSetup Rileva le informazioni delle DirectX installate, eventualmente aggiorna le componenti DirectX Media Objects Permette la modifica di streams audio-video, usando DirectShow o DirectSound

Cambiamenti DirectX 10 Riprogettazione delle API Nuove DLL più veloci: Abbandono retrocompatibilità Windows Vista gestione parallela DirectX 10 versione ottimizzata e più performante DirectX 9.0L versione ottimizzata per il nuovo OS e retrocompatibile

Moduli DirectX 10 DirectInput Xinput DirectSound DirectPlay Modifica gestione periferiche di input Programmazione più semplice DirectSound Miglioramento qualità e gestione dell’audio DirectPlay Tramite tag permette di giocare online con un singolo username DirectShow Gestione più fluida/intelligente dei flussi audio e video DirectMusic Componente invariato Direct3D Xinput XACT (X3DAudio) Game for Windows Live Microsoft Media Foundation Direct3D10

Direct3D 10 Cambiamenti di rilievo: Maggiori possibilità per i programmatori (Shader Model 4.0 e Geometry Shaders) Specifiche hardware fisse Prestazioni migliorate (cicli di comando ridotti per frame) Riduzione Sovraccarico CPU: Riprogettazione chiamate di drawing e cambiamento di stato Riduzione dipendenza Scheda Video dalla CPU Esecuzione di più funzioni con un solo comando Insieme di istruzioni unificate (HLSL) Stream I/O (il Geometry Shader può scrivere nella memoria) Possibilità di Creare/Distruggere dati legati alla geometria della scena Ottimizzazioni anti-aliasing e supporto alla global illumination

Shader Model 4.0 +Velocità +Parallelismo (DirectX 8 – Shader Model 1.0/1.1): Separare nettamente i compiti in unità di elaborazione: Shader Pixel Shader: Maggior realismo della scena (illuminazione, texture) Vertex Shader: Calcoli su poligoni ed oggetti 3D (posizione) Miglioramento: Unified Shader Con le DirectX 8.0 per ottenere una velocità di elaborazione maggiore si è deciso di aumentare il parallelismo. Separando nettamente i compiti in unità di elaborazione, dette Shader. Inizialmente sono stati introdotti i PixelShader ed i VertexShader, i primi hanno il compito di rendere la scena più realistica (con effetti di illuminazione, ombre ed elaborazione delle texture [bump mapping]) mentre i vertex Shader si dedicano a calcoli dei vertici dei poligoni ed oggetti 3D (riguardanti la posizione, i parametri di illuminazione o posizione delle texture). Con l’arrivo delle DirectX 10 si è introdotto il Geometry Shader, che permette l’elaborazione di istruzioni riguardanti anche più di un vertice e viene utilizzato per... Un altro miglioramento con lo Shader Model 4.0 è stato l’unificazione degli Shader a livello HW. 2 Tipi di unità di esecuzione statiche Più unità di esecuzione, parallelismo 1 unità di esecuzione per tutte le istruzioni 1 Tipi di unità di esecuzione intelligente Unità per l’elaborazione dei vertici Unità per l’elaborazione dei pixel DirectX 9 con Shader Tradizionali DirectX 10 con Unified Shader

Versione Shader Model (Anno)   Versione Shader Model (Anno) 1.1 (2001) 2.0 (2002) 3.0 (2004) 4.0 (2006) Instruction Slots Vertex 128 256 512 64000 Pixel 4+8 32+64 Constant Registers 96 16x4096 8 32 224 Temporary Registers 12 4096 2 Input Registers 16 Render Targets ---- 1 4 Samplers Textures Max Texture Size 4048x4048 8096x8096 2D Texture Sizes No Yes Integer Operations Load Operations Sample Offsets Trascendental Operations Derivative Operations Flow Control S S/D Dynamic

Geometry Shader Introdotti con DirectX 10 Gestione di intere geometrie Controllo di più vertici per volta (punto, linea, triangolo) A differenza dei Vertex Shader = 1 vertice alla volta Possibilità di creare geometrie senza passare dalla CPU Gestione ombre-illuminazione-texture tramite GPU Possibilità di lavorare con più elementi grafici

Pipeline Grafica DirectX 10 HLSL (High Level Shader Language) è un linguaggio sviluppato da Microsoft per la creazione di shader da usare in DirectX (Molto simile al linguaggio Cg di Nvidia) L'HLSL permette di scrivere complessi calcoli grafici che possono essere eseguiti molto velocemente dalla GPU, e rappresenta inoltre il primo passo per una pipeline grafica completamente programmabile MEMORY VIDEO Stream Output Vertex Shader Geometry Shader Pixel Shader Input Assembler Output Merger Rasterizer Schema Pipeline Grafica DirectX 10

Geometry Shader Risultato grazie all’introduzione dei Geometry Shader: Si possono inserire molti più elementi grafici nella scena, senza sovraccaricare la CPU

Esempi DirectX 10 DirectX 9.0c

Esempi DirectX 10 DirectX 9.0c

Esempi DirectX 10 DirectX 9.0c

Esempi

Dove trovare le DirectX

OpenGL 3.0 2007 - Tante promesse da parte di ARB Riscrittura dell’intera API Innovazioni (in ambito di videogiochi) etc ... Stato attuale, 11 Agosto 2008 OpenGL 3.0: Espansione OpenGL 2.1 Implementazione delle sole funzionalità supportate da DirectX 10 Rimozione Fixed Function Pipeline Delusione da parte dei programmatori

Contributor Membership Sviluppo OpenGL Promoter Membership $25,000 annually Contributor Membership $7,500 annually

OpenGL ES OpenGL ES (Embedded System) è un API multi piattaforma, con accesso completo a funzioni di grafica 2D e 3D su sistemi embedded (cellulari, PDA, console) E’ un sottoinsieme di funzioni OpenGL che rappresenta un interfaccia flessibile di basso livello tra SW e acceleratori grafici Vantaggi: Standard e royalty-free Poco spazio in memoria e Basso consumo energetico Estensibile ed in Evoluzione Facile da usare e Ben documentata OpenGL ES è un API multi piattaforma, royalty-free con accesso completo a funzioni di grafica bidimensionale e tridimensionale sui sistemi embedded che includono dispositivi mobili, veicoli ed elettrodomestici. E’ un sottoinsieme ben definito di funzioni dell’API OpenGL e rappresenta un interfaccia flessibile di basso livello tra il software e gli acceleratori grafici. - Ognuno può ottenere la specifica OpenGL ES e implementare prodotti basati su questa API. Avendo un ampio supporto da parte di moltissimi produttori HW e SW rappresenta uno standard aperto e multi piattaforma. - Lo spazio embedded varia da PDA con processore a 400Mhz e 64MB di RAM a cellulari con processore a 50MHz e 1 MB RAM. OpenGL ES è stata sviluppata per adattarsi a queste differenze richiedendo un occupazione minima in memoria, un traffico dati/istruzioni minimo e supporto per operazioni sia intere che in virgola mobile. Nelle sue prime versioni non è stata assunta la presenza di processori in virgola mobile (Floating Point Unit, FPU). - OpenGL ES permette a nuove innovazioni hardware di essere accessibili dall’API attraverso il meccanismo delle estensioni. Quando tali estensioni diventano largamente accettate sono considerate per essere incluse dentro il nucleo dello standard OpenGL. Questo processo permette all’API di evolvere in maniera controllata. - Essendo basata su OpenGL, OpenGL ES si presenta ben strutturata con un design intuitivo e logico, non rappresenta una novità per gli sviluppatori e i produttori di hardware e ha già una vasta gamma di documentazione presente.

OpenGL ES Dove trovare OpenGL ES? OpenGL ES su Symbian OS e Android OpenGL ES 1.0/2.0 e Cg(Nvidia) su Playstation 3 è una delle API grafiche ufficiali OpenGL ES 1.1 è la libreria grafica per l’iPhone SDK OpenGL ES 2.0 è usata sulla console Pandora

Futuro: DirectX 11 Dove? HW? Quando? Novità? Windows Vista (Windows 7 e Futura console Microsoft) HW? Compatibilità con Schede Video DirectX 10-10.1 Quando? Durante l’anno, 2009 Novità? Shader Model 5.0 Tecnologia Tesselation: figure poligonali più dettagliate anche se viste da vicino Gestione Applicazioni Multi-threaded (CPU multi-core) Compute Shaders HLSL Version 5.0

Futuro: OpenGL 3.1 “OpenGL 3.0 è un solido passo nella direzione di rendere più snelle OpenGL,” Trevett – Vice President di Khronos membro Nvidia – “Ci sono elementi che sono stati pensati alla versione 3.0 e che usciranno nella versione 3.1” Uscita OpenGL 3.1 fra qualche mese

Bibliografia + Link “OpenGL Super Bible”, Richard S. Wright, Benjamin Lipchack http://www.google.com/ http://www.dholm.com/ http://www.bcb-tools.com/ http://underdeep.wordpress.com/ http://www.tomshw.it/ http://www.legitreviews.com/ http://wapedia.mobi/it/ http://www.overclock3d.net/ http://scriptionary.com/blog/ http://www.levysoft.it/ http://notebookitalia.it/ http://www.hwupgrade.it/ http://opengles.altervista.org/ http://wikipedia.org/ http://www.dinoxpc.com/ http://natonelbronx.wordpress.com/ http://www.opengl.org/ http://www.microsoft.com/ http://openskill.info/ http://www.cs.unc.edu/ http://www.programmazione.it/ http://www.webnews.it/ http://www.onehardware.it/ http://www.khronos.org/ http://www.apple.com/