Introduzione a API e game engine per la programmazione grafica



Documenti analoghi
BDX 3D-EDITOR (autore: Marco Bedulli) Scopo del software. Caratteristiche fondamentali. Linguaggi utilizzati. Navigazione 3D

Grafica 3D Interattiva

Architettura di un sistema operativo

1. BASI DI DATI: GENERALITÀ

Cos è. Interface - colibri .01. colibri Corso Garibaldi, Spoleto Tel info@lightage.it

Strumenti per lo sviluppo e la gestione di Ontologie

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi

Informatica. Prof. A. Longheu. Introduzione a Java

Strumenti di modellazione. Gabriella Trucco

OpenVAS - Open Source Vulnerability Scanner

Esercizi di JavaScript

Ibpm è lo strumento per la gestione dei processi, dalla modellazione, all esecuzione, al monitoraggio.

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche

Hardware delle reti LAN

PROTOTIPAZIONE DI UN TRADUTTORE DA SORGENTE PLC AD ASSEMBLY DI UNA MACCHINA VIRTUALE

Lezione 1. Introduzione e Modellazione Concettuale

Approccio stratificato

Dal sito del Polo Qualità di Napoli si può accedere a due piattaforme:

C++ E QT, BINOMIO PERFETTO

Strumenti informatici per la Lettura. una guida alle risorse, ai dispositivi, ai formati

Vodafone Device Manager. La soluzione Vodafone per gestire Smartphone e Tablet aziendali in modo semplice e sicuro

Dreamweaver CC Il Corso Fondamentale

Progettazione e Implementazione di API WebSocket per il Gateway Dog

Progettazione : Design Pattern Creazionali

Il CMS Moka. Giovanni Ciardi Regione Emilia Romagna

GOW GESTIONE ORDINI WEB

Il Sistema Operativo (1)

Esercitazione 1 primi passi e uso dei file

Implementazione di MVC. Gabriele Pellegrinetti

Lezione 4 La Struttura dei Sistemi Operativi. Introduzione

I Thread. I Thread. I due processi dovrebbero lavorare sullo stesso testo

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL

Università degli Studi "Roma Tre" Dipartimento di Informatica ed automazione. Facoltà di Ingegneria

Architetture Informatiche. Dal Mainframe al Personal Computer

Architetture Informatiche. Dal Mainframe al Personal Computer

AJAX e altre applicazioni di Javascript. Luca Fabbri

Port Community System del Porto di Ravenna CONFIGURAZIONE

Un nuovo modo per fare analisi e generare documenti dinamici

Relazione illustrativa degli Obiettivi di accessibilità

Architettura del. Sintesi dei livelli di rete. Livelli di trasporto e inferiori (Livelli 1-4)

Università Politecnica delle Marche. Progetto Didattico

VIRTUALIZZAZIONE. Docente: Marco Sechi Modulo 1

Ci sono circa centralini in Italia

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico

Scuola Professionale e Filologica Geom. F.Borgogna Vercelli

lem logic enterprise manager

REALIZZAZIONE DI UN LABORATORIO REMOTO PER ESPERIENZE DI ROBOTICA EDUCATIVA: LATO CLIENT

Realizzazione di una chat su protocollo HTTP

RIFERIMENTI ATTORI GLOSSARIO. ERRORI COMUNI REV. REQUISITI INGEGNERIA DEL SOFTWARE Università degli Studi di Padova

Nuova ECDL NASCE UNA NUOVA COMPETENZA. LA TUA.

Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base

Cosa è un foglio elettronico

Panoramica: che cosa è necessario

Progetto di Applicazioni Software

ICARO Terminal Server per Aprile

I.T.C. Mario Pagano Napoli

Progetto di Applicazioni Software

STUDIO MESSANO UFFICIO SVILUPPO NUOVE TECNOLOGIE

Lezione 9. Applicazioni tradizionali

ascoltare ispirare e motivare miglioramento problem solving Flex360 pianificare comunicare la vision organizzare

Tecniche della comunicazione web - 8 CFU

CTStudio. overview workflow features interface

ALLINEARSI: IL DRIVER PER UNA INNOVAZIONE DI SUCCESSO!

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP

CMS: Content Management...

Programma del Corso. Dati e DBMS SQL. Progettazione di una. Normalizzazione

BrokerINFO La soluzione integrata per la distribuzione dei dati dei mercati finanziari. Advanced Advanced Technology Solutions

Overview SAP Workflow. ECORA Srl - Massimo Rastaldi m.rastaldi@eco-ra.it Cell

SERVICE MANAGER. Architettura Client-Server e Web based di Servizi Specializzati per la Gestione di Periferiche e Connettività

MOBS Flussi informativi sanitari regionali

ARCHIVIO GRAFICO ESTESO

15 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

La Metodologia adottata nel Corso

Estensioni e modelli. Ancora poco conosciuti, consentono di estendere la suite per l ufficio. Ecco come servirsene

L informatica INTRODUZIONE. L informatica. Tassonomia: criteri. È la disciplina scientifica che studia

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da

Programmazione a Oggetti Modulo B

Scopo della lezione. Informatica. Informatica - def. 1. Informatica

Realizzazione di uno strumento web-based per la simulazione remota di reti di sensori senza filo

Lezione1. Cos è la computer grafica. Lezione del 10 Marzo Michele Antolini Dipartimento di Ingegneria Meccanica Politecnico di Milano

Progettazione e Sviluppo dell Applicazione Web Share Mobile per Dispositivi Mobili Multipiattaforma. Elaborato di Laurea di: Marco Stanzani

Sito web per la presentazione e l accesso ai servizi di Ruven integrato con la piattaforma B2B del pacchetto software ERP Stratega.NET.

Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)

Corso Online Analista Programmatore Microsoft

CORSO ACCESS PARTE II. Esistono diversi tipi di aiuto forniti con Access, generalmente accessibili tramite la barra dei menu (?)

Progettazione e realizzazione di una GUI multi-piattaforma per applicazioni mediche in 2D

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1

Android. Implementare una interfaccia utente

Transcript:

Introduzione a API e game engine per la programmazione grafica OpenGL e WebGL Davide Gadia Corso di Programmazione Grafica per il Tempo Reale Laurea Magistrale in Informatica per la Comunicazione a.a. 2013/2014 Outline Differenze tra driver, API, game engine Introduzione alle API per la programmazione grafica Differenze tra Direct3D e OpenGL Evoluzione pipeline OpengL Varianti di OpenGL

Programmazione Grafica: da basso a alto livello Ambienti Visuali Game engine API Driver Driver grafici Ambienti Visuali Game engine API Driver Insieme di routine che controlla direttamente la scheda grafica Basso livello Hardware-dependent Specifico per ogni SO Di solito implementati da costruttori hardware

API per la programmazione grafica Ambienti Visuali Game engine API Driver Application Program Interface Librerie di livello + alto Set di procedure dedicate (solo) al rendering grafico in tempo reale Maggiore astrazione nella implementazione e comunicazione con hardware grafico (e i suoi driver) Direct3D OpenGL Game engine Ambienti di sviluppo completi Forniscono: IDE Ambienti Visuali Game engine API Driver Motore di rendering Librerie per gestione I/O, modelli, fisica, AI Tool di supporto per gestione asset e scenari.. Maggiore astrazione: Forte riusabilità e ottimizzazione sviluppo Indipendenza da piattaforma hardware Supporto per più API Esempi: Unreal Engine 3 Ogre3D Panda3D

Ambienti visuali Riduzione scrittura codice Applicazione costruita tramite blocchi visuali Ambienti Visuali Visual programming Possibilità di scripting ad alto livello Game engine API Possibilità di implementare facilmente applicazioni medio-bassa difficoltà Target allargato anche a non-programmatori Driver Designer, ecc Esempi: Quartz Composer (OSX) Vvvv (Windows) Puredata/GEM (cross-platform) Direct3D o OpengL? Sono i 2 maggiori competitors Nascono con approcci diversi Allo stato attuale, hanno all'incirca lo stesso livello di funzionalità e performance

Direct3D API proprietarie di Microsoft Parte di DirectX (che comprende API per suono, I/O, ecc) Solo sviluppo applicazioni Windows (desktop, mobile, Xbox) Nate esplicitamente per implementazione videogiochi su hardware consumer-level Prime versioni molto criticate, ma da versione 9 situazione migliorata E anche apprezzamento sviluppatori Con introduzione pipeline programmabile HLSL (High Level Shading Language) OpenGL Open Graphics Library mantenuta da OpenGL Architectural Review Board (ARB) Khronos Group Specifiche open Implementazione possibile da chiunque Cross-platform Binding per numerosi linguaggi Utilizzo per tutti gli ambiti applicativi della grafica in tempo reale Di fatto, era lo standard per gli applicativi e ambiti professionali Eredità di IrisGL, API proprietaria di SGI, da cui OpenGL derivano Solo rendering, servono librerie di terze parti per gestione di tutto il resto Con introduzione pipeline programmabile GLSL (OpenGL Shading Language)

Evoluzione Direct3D e OpenGL: differenze Specifiche Direct3D decise unicamente da Microsoft No accesso a specifiche da terze parti Storicamente, questo ha portato a una API dall'evoluzione più regolare Ma più chiusa OpenGL caratterizzata da supporto estensioni: Terze parti potevano implementare nuove funzioni non previste dallo standard Meccanismo di esposizione delle estenzioni alla API principali Possibile confusione: Funzioni implementate solo da un costruttore Funzioni implementate con nomi diversi da più costruttori Estensioni periodicamente valutate ed eventualmente inserite nelle nuove versioni delle specifiche

Pipeline OpenGL: deprecation model Introdotto nelle specifiche 3.0 Metodo usato per rimuovere funzionalità Necessità di semplificare e ottimizzare la pipeline Nonostante il rischio di intaccare in alcuni casi la retrocompatibilità (backward compatibility)

Pipeline OpenGL: deprecation model Utilizzo struttura dati context Contiene shaders e altri dati Full context: Inclusione di tutte le funzionalità delle specifiche correnti Anche quelle deprecate Forward compatible context Inclusione solo delle funzionalità non deprecate Situazione simile a versioni future delle specifiche

Pipeline OpenGL: context profiles Introduzione profili ai contesti introdotti in 3.0 Possibilità di ulteriore controllo delle funzionalità dei contesti Full context: Core profile: Inclusione di tutte le funzionalità della specifica corrente Compatible profile: Inclusione di tutte le funzionalità di tutte le specifiche passate e presenti Forward compatible context Core profile: Inclusione solo delle funzionalità non deprecate della specifica corrente Compatible profile: Non supportato

Applicazione OpenGL in sintesi Sinteticamente, ogni applicazione OpenGL effettua i seguenti passi: Crea gli shader Crea buffer objects e carica i dati nei buffer Collega i dati nei buffer objects alle variabili degli shader

Altre versioni di OpenGL Fork delle specifiche principali OpenGL ES WebGL OpenGL ES OpenGL for Embedded Systems Smartphone, tablet, consolle portatili Attuale versione 3.0 Agosto 2012 Pipeline basata sulle specifiche OpenGL 3.3 Senza Geometry shader Pipeline programmabile GLSL ES (un sottoinsieme del linguaggio GLSL)

WebGL OpenGL ES per il Web API Javascript per grafica in tempo reale all'interno dei browser Utilizza Canvas di HTML5 Tramite interfaccia DOM (Document Object Model) senza utilizzo plugin Attuali specifiche 1.0 Marzo 2011 Ricalcano quasi completamente specifiche 2.0 delle OpenGL ES Draft specifiche 2.0 Settembre 2013 Funzionalità adeguate a quelle presenti in OpenGL ES 3.0 HTML5 Prima idea 2004 Primo Draft 2008 Working draft Dicembre 2012 Stable Recommendation prevista per 2014 Punti principali: Retrocompatibilità Modularità Abbandono elementi markup superati da potenzialità CSS Enfasi su importanza scripting DOM Integrazione elementi grafici e multimediali senza plugin Introduzione numerose API per lo sviluppo di applicazioni Web

HTML5 API HTML5 Canvas e WebGL Applicazioni OpenGL richiedono la creazione di un rendering context Una finestra di solito creata tramite una chiamata ad una API di sistema O tramite librerie specifiche per GUI WebGl usa Canvas come contesto Regioni renderizzabili definite all'interno di codice HTML API Javascript possono accedere e renderizzare la Canvas

WebGL in ambiente Windows Windows non supporta direttamente WebGL ANGLE project Almost Native Graphics Layer Engine Chrome e Firefox Traduzione chiamate API OpenGL ES in chiamate Direct3D Implementazione WebGL Programmare in OpenGL/WebGL non facile Basso livello, solo chiamate per rendering Ripetitività di chiamate per cambiare parametri Necessità implementazione librerie e/o funzioni per ogni altra necessità Creare una finestra, gestire input, ecc.. Oppure è necessario utilizzare altre librerie Non immediato/veloce riuscire a concentrarsi sul contenuto/obiettivo dell'applicazione

Implementazione WebGL Utilizzo framework di (più) alto livello Maggiori funzionalità a disposizione nello stesso ambiente Classi permettono di astrarre dai dettagli di basso livello Integrazione di librerie per fisica ecc Concentrazione sul contenuto Si perde però la piena consapevolezza di cosa sta succedendo Implementazione WebGL Framework per sviluppo WebGL Molte proposte http://www.khronos.org/webgl/wiki/user_contributions Alcuni progetti più robusti, altri in fase preliminare Costante: documentazione scarsa Apprendimento + legato ad esempi

Cenni ai game engine Game engine: SW per la implementazione di videogame Estensibile Flessibile Modulare Fornisca le varie funzionalità previste nello sviluppo di un videogame Serva come base per lo sviluppo di diversi tipi di videogame senza bisogno di grosse modifiche

Cenni ai game engine Game engine costituito da un insieme di sub-engine/tool per lo sviluppo e la gestione delle risorse

Cenni ai game engine Al variare del tipo di videogame, maggiore importanza di uno/più sub-engine rispetto agli altri: Videogame corsa auto: physics engine MMPORG: network layer Di conseguenza: game engine sviluppati per famiglie di videogame specifici Cenni ai game engine Sviluppo game engine include sempre più tool ad alto livello per la gestione di asset, livelli ecc Aumento velocità produzione Piccole produzioni Prototipazione Asset manager Gestione/caricamento/ecc delle risorse necessarie per il videogame/livello Modelli Texture Suoni Ecc... Level editor Tool dedicato per la progettazione (visuale e/o tramite scripting e pannelli di configurazione) di un livello di gioco/mappa

Cenni ai game engine Nascita game engine sempre più ad alto livello Es: Unity Gestione caricamento e modifica modelli tramite GUI visuali Gestione ad alto livello grafo della scena Inserimento di shader, game logic, ecc da insiemi di default IDE integrata Programmazione/scripting mirato a necessità specifiche del progetto da sviluppare Produzione per piattaforme multiple References Homepage OpenGL www.opengl.org Slide corso SIGGRAPH 2012 Introduction to Modern OpenGL Programming http://elrond.informatik.tu-freiberg.de/papers/siggraph2012_1/content/courses/modern-opengl-programming.pdf Differenze HTML5 e HTML4 Webgl http://www.w3.org/tr/html5-diff/ https://www.khronos.org/registry/webgl/specs/1.0/ http://www.khronos.org/webgl/wiki/main_page http://www.khronos.org/registry/webgl/specs/latest/2.0/