Wednesday, December 31, 2008

100


This is the message number 100, and what better day than the last day of the year to post it? :)

I'm just returned from vacation, my life in these days was a little messy due ti a lot of changes. So i'm a little confused, i've tryied to open the source and work on it, but i've not very mental fuel to do something of interesting.

The ships now has their own shadows, but it's still too much glossy. I need to work on maps and understand if there are the right approach.

So, happy new year and i hope to make others steps on 2009.

---

Questo e' il messaggio numero 100, e quale giono migliore dell'ultimo dell'anno per pubblicarlo? :)

Sono appena tornato dalle ferie natalizie, e la mia vita in questi giorni e' abbastanza caotica a causa di una serie di novita' che mi han lasciato davvero poca energia mentale da investire nel gioco. Ho provato ad aprire il progetto, ma ho visto che non riesco a concentrarmi, speriamo nei prossimi giorni vi sia piu' calma.

Per ora le astronavi hanno le loro ombre, che pero' sono ancora troppo imprecise. Cerchero' di lavorarci e capire se si riesce a rifinire, o se le shadow maps sono proprio inadeguate per il motore che mi serve.

Vi lascio augurandovi buon 2009 e chissa' che nell'anno nuovo riesca a fare altri passi avanti.

Wednesday, December 17, 2008

Happy Birthday


Today is the first blog's birthday!
I've some busy days: i'm changing my work, and i'm going for some day in vacation, so not very time (and mind) to dedicate to the developing. I don't know if with my new work i'll be time to continue my hobby but i've done the same question one year ago and.. i'm still here.
So: for now happy birthday Tau Ceti and i hope to see also the second birthday :)

--

Oggi e' il compleanno di questo blog!
Ho avuto giorni convulsi, sto cambiando lavoro e domani parto pure per una settimana di ferie. Cosi' il tempo (e la testa) per dedicarmi allo sviluppo non c'e. Con la mia nuova attivita' non so se avro' tempo per portar avanti questo hobby, ma in fondo le stesse cose le dicevo un anno fa e sono ancora qui.
Cosi', per il momento, buon compleanno Tau Ceti, e chissa' che il 17 Dicembre 2009 sia ancora qui a festeggiare :)

Friday, December 5, 2008

Shadow Maps reprise


Shadow maps are a good tool to display shadows into a scene, but has pro and cons.
Pros:
- are fast: you need to render the scene only twice to obtain it
- are simple: the shaders is not very complex, and it's easy to customize it.

Cons:
- are imprecise: the shadow is obtained with a projection of a 2d texture. This means jagged shadows when you are near to the object. With some filtering you can reduce the aliasing problem but not to eliminate
- are usable only with spotlight lamps. And the sun is not a spotlight, but an omnidiretional light.
- are good only if the light source is near to the object. If the distance grows, some errors appears, due to precision errors.

There's another option: to use a volume shadow, another tecnique to generate more precise shadows, but it's more complex and heavy (it's the same tecnique used in doom3 engine).
For now i'm trying to optimize the shadow maps, and some good result are born.

---

Proseguendo con lo studio delle shadow maps ho scoperto che sono un ottimo strumento per creare ombre ma hanno i loro pro e contro.

Pro:

- Sono molto veloci: basta renderizzare la stessa scena due volte per ottenere le ombre
- Sono di semplice implementazione: gli shaders sono abbastanza snelli ed e' facile mettervi mano

Contro:

- Sono imprecise: essendo il risultato di una proiezione di una texture bidimensionale, se la texture non ha una gran risoluzione si nota molto l'effetto "scalinatura" tipico dei pixel ingranditi. Effetto che si puo' ridurre applicando dei filtri ma non eliminare
- Sono utilizzabili solo con luci a cono (la classica lampada da scrivania). Il sole e' invece una luce omnidirezionale.. posso solo simularne l'effetto facendo si' che il cono di luce sia sempre puntato verso la telecamera dando l'impressione della omnidirezionalita', pero' cio' che sta fuori dal cono verra' erroneamente mostrato in ombra.
- Danno risultati decenti solo se la luce e' vicina all'oggetto.. piu' si allontana e piu' insorgono problemi dovuti alla precisione, con risultati spesso pessimi.

Una seconda possibilita' e' data dalle shadow volumes, una tecnica differente, piu' precisa ma purtroppo piu' complessa e pesante. Per intenderci e' la stessa tecnica usata nell'engine di Doom3.

Ad ogni modo per ora sto provando ad ottimizzare le shadow maps, e devo dire che ho ottenuto qualche buon risultato, come potete vedere dall'immagine e dal filmato.

Wednesday, December 3, 2008

Shadows Map

On 17 December 2007 i wrote my first post into this blog. I was writing some code to display a wireframed grid (the map), i had only some little idea about 3d, shaders and so on. I was not able to draw a flat sphere, i had no idea how to map a texture onto it, and i've never heared about uv coordinates.

Today, 3 December 2008, a year after, i have made my first step into the (very) complex world of shadow maps, and i'm very very proud about it. I know very well that my work will die sooner or later, i've no chanche to finish, alone, a game developed for hobby and with very little time. I knew on 17 December 2007, i know today, but it's a miracle to have reached this "advanced" aspect of a 3d engine.

You can see on this movie my first attempt to add shadows to the game. It's a bit raw for now (the green mesh is only for test), but.. works! I've to work more on it but i'm very happy

----

Il 17 Dicembre 2007 aprii il blog di Tau Ceti. Lo sviluppo era appena iniziato, vi era una griglia in wireframe che si ruotava col mouse, ed io avevo solo vaghe idee su come costruire un mondo tridimensionale. Non sapevo fare una sfera, ne sapevo come avvolgervi una texture, figuriamoci illuminarla. Le coordinate UV manco le avevo mai sentite, gli shader mi erano noti solo come oscuri componenti di una scheda video che piu' ce n'e' e meglio e', tirare una linea e ruotarla col mouse era gia' al limite della mia possibilita'.

3 Dicembre 2008, un anno dopo. Ho fatto i miei primi passi nel complesso mondo delle shadow maps, e sono davvero orgoglioso del percorso fatto in questi 12 mesi. So benissimo che il mio lavoro prima o poi sara' destinato a morire, visto che ci lavoro da solo e soltanto nei pochi buchi di tempo liberi. Lo sapevo anche il 17 Dicembre 2007, eppure mai mi sarei immaginato di arrivare dove sono arrivato oggi. Certo, siamo ancora al 1% del totale, ma va gia' oltre ogni mia piu' rosea aspettativa.
E per ora non ho alcuna intenzione di mollare, anzi sono molto motivato.

Quel che vi mostro e' un primo prototipo di shadow map, ovvero la tecnica per introdurre l'ombreggiatura dinamica nel motore del gioco. Ho creato una mesh semplice e dalla forma particolare in modo da far risaltare bene l'ombra: e' tutto ancora piuttosto grezzo e c'e' da lavorarci su, ma sono estremamente soddisfatto per i risultati