Thursday, November 13, 2008

Gourard Vs Phong











I was missing for a while. For a good reason: i've fight against the pixel shaders, and i've understood a lot of thing.
So, finally, i've implemented a new lighting model using the pixel shaders: the phong lighting.
The previous model was the gouraud lighting: the light is computed for each vertex of the mesh and the color of pixels between three vertexs are interpolated from the color of the three vertex.
With phong shading, every pixel colour is computed using the illumination model. No interpolation, so a more realistic result, as you can see from the screenshots and the video. Gourarud shading has a "segmented" look, the Phong Shading has a more gentile and realistic aspect. (Look at the spotlights on the skull.. the gourard, the first, looks like a sum of triangle, the phong, the second, is better).

--

Sono stato assente per un po'. Per una buona ragione: ho combattuto (duramente) con i pixel sharders, e ho imparato davvero diverse cose.
Cosi', finalmente, sono riuscito ad implementare un nuovo modello di illuminazione, utilizzando i pixel shaders. Precedentemente usavo il classico Gouraud shading, il quale calcolava l'illuminazione solo nei vertici della mesh, mentre per il colore dei pixel compresi tra tre vertici di un triangolo eseguiva una banale interpolazione, veloce ma poco accurata.
Con i pixel shaders invece son riuscito a calcolare correttamente l'illuminazione per ogni singolo pixel della mesh, senza bisogno di ricorrere all'interpolazione. Il risultato lo vedete negli screenshot e nel video: l'illuminazione gouraud appare piatta, spezzettata, mentre quella phong e' molto piu' accurata, gentile, realistica (guardate ad esempio le chiazze di luce sul teschio, nel gouraud shading, il primo, si notano i rettangoli che compongono la mesh, nel secondo teschio invece le macchie di luce sono molto piu' tondeggianti e piacevoli)

6 comments:

Anders said...

Grrr- horrible music that you are using. It really annoys me and makes me want to stop playing the video thtat you made

PdG said...

sorry, i cannot make everybody happy: if i use a death metal base i'll receive the hip-hop flames, if i use a drum-n-bass base, i'll receive the metal flames :)
The only thing i can do is to make totally silent videos.
If you prefer, tell me and i'll exclude all sounds on it (until i'll implement audio on the game)

Anonymous said...

oh noes, turning volume down is too hard!

Marte said...

perché non usare Musica classica ? :D

Ciao!
Oggi per caso sono capitato sul tuo blog, non so come, e mi ha davvero appassionato la lettura dall'inizio, fino ad oggi :D

Bravo e continua così!!
Da informatico, capisco la mancanza di tempo, lo scazzo, la poca voglia, ma mi piace vedere che sei andato avanti, nonostante tutto!
Sei un esempio :D

Io intanto torno a programmare il mio piccolo Pacman in Java :D
Mi da un sacco di soddisfazione, vedere quando qualcosa funziona :D

p.s: mi segno i feed, tu continua!!


Alcune note:

- nel sistema solare che hai realizzato, c'è anche la fascia di asteroidi?
- pensi di aggiungere anche comete? (l'effetto che c'è in spore é molto bello.. anzi spore é bello, provalo se puoi! non c'entra molto con quello che vuoi fare, ma nella sezione spaziale é interessante!)
- hai pensato ad una sorta di mappa galattica-punta-e-clicca con la quale muoversi velocemente di sistema in sistema? (conosciuti ovvio)
- se puoi prova anche Mass Effect, per l'effetto della mappa galattica, in un gioco alla elite sarebbe figo

vedi:

http://video.google.it/videosearch?q=mass%20effect%20galactic%20map&um=1&hl=it

- cosa ne pensi di Infinity?
http://it.youtube.com/watch?v=DCzDKj3hjOE

PdG said...

Prima di tutto grazie per i complimenti.

Cerchero' di rispondere con ordine

- Probabilmente lo implementero'. Pero' sono decisioni un po' premature, ho deciso per ora di dedicarmi al motore, quindi alle tecnologie grafiche per ottenere i vari effetti che poi mi serviranno (oggi ad esempio ho avuto i primi risultati col normal mapping). Se arrivero' ad avere un motore abbastanza maturo potro' poi pensare a tutti i dettagli.

- Per le comete stesso discorso. Per la realizzazione serve un sistema particellare, e shaders abbastanza complessi. Anche in questo caso e' un po' prematuro

- La mappa ci sara'. Ne ho realizzato un prototipo (che vedi discusso proprio all'inizio del blog). Per ora i miei sforzi sono tutti per l'engine. La mappa non e' particolarmente difficile da realizzare

- Mass Effect ha una mappa (ma anche tutto il resto) da urlo. Mass Effect e' pero' stato realizzato da un team di piu' di un centinaio di persone, esperte e che han lavorato al gioco almeno otto ore al giorno per qualche anno. E non solo sviluppatori, ma anche grafici, attori, tecnici delle luci ecc.. Evidentemente io col mio libretto preso da ibs non posso competere :)

Cosa ne penso di infinity? Che mi inginocchio e mi prostro davanti a cotal meraviglia :)

Marte said...

Per i complimenti: di nulla :D


Essendo pure io sviluppatore/analista di software, so quanto lavoro ci sta dietro a progetti così :D
Se potessi darti una mano, in compiti limitati e ben delineati (e soprattutto semplici ed indipendenti dal tuo lavoro, così da non rallentarti), sarei ben più che felice! :D