giovedì 14 febbraio 2008

Nuove caratteristiche e ritorno

Urca, nessun post per più di 2 mesi. Tra impegni e poca voglia mi sono preso una vacanza (anche se in questo periodo ho lavorato pure a cassata, ma non più di una 20ina di giorni :) ).
Intanto benritrovati, se mai ci fosse qualcuno, e passiamo subito alle novità.

Cassata è un renderer davvero piccolo, ma estensibile a piacimento, e credo che sia questa la sua forza.Terminare cassata in se è solo metà del lavoro, visto che poi senza gli shader non saprebbe fare proprio nulla. Tuttavia terminare cassata sarebbe già un ottimo risultato, visto che una gran parte del lavoro sarebbe compiuta.
Sebbene la progettazione di cassata sia ancora grezza, con molte cose da risistemare, e piuttosto incompleta, posso dire che il grosso è stato fatto, terminando in questi giorni, ed ho un'idea abbastanza precisa di cosa sarà. Altro discorso sono gli shader ed i plugin, la cui progettazione non è neanche stata cominciata, ma Roma non si è fatta in un giorno :)

Altra buona notizia è che ho finalmente superato l'ultimo limite che avevo! Ora è possibile fare rendering con materiali non lineari (almeno sulla carta). Fatto questo, cassata è, almeno per le mie modeste conoscienze, il renderer più flessibile sulla piazza. Da quello che so (ma liberissimi di smentirmi) non c'è una sola cosa tra i renderer fotorealistici che non sia in grado di fare (fatta eccezione per certe tecniche di rendering scientifico, ma anche la è messo molto, molto bene), e, pur non essendo il suo scopo, anche come renderer non fotorealistico è piazzato piuttosto bene, permettendo sia effetti di shading particolari, come il toon, sia il controllo totale dell'illuminazione, sia effetti di postprocesso, come ad esempio lati sulle figure, effetti bozzetto, sfocatura delle immagini o magari anche effetto acquarello e tante altre cose, più molte altre caratteristiche che ora non sto a dire, e dopotutto non saprei neanche cosa dire, visto che essendo estensibile chi vuole può aggiungere altro (certo con qualche limite, ma neanche così tanti) :)
Faccio notare che il renderer non è affatto studiato per rendering non fotorealistici, e che questa applicazione deriva solo dalla flessibilità enorme presente in cassata, e che è stata un motore importante per tutto questo tempo.

Altra notizia, valuterò bene se è il caso di usare la GPL3 o superiori invece di (com'è attualmente) la GPL 2 o superiori, ora che sia le Qt che altre librerie che uso (od userò) sono anche GPL3.

Come codice non ho fatto praticamente nulla in questo periodo, ma vedrò se nei prossimi giorni riuscirò a fare qualcosa.

Beh, credo di aver esposto tutte le novità importanti, alla prossima :)

10 commenti:

prova ha detto...

Hehe Yota son 2 mesi infatti che vengo qua praticamente ogni 2 giorni a vedere se il lavoro procede :D
Buona fortuna! :P

Fulvio Satta ha detto...

Ti ringrazio :)
Comunque basta (se usi un aggregatore) che aggiungi il feed del blog a quelli che hai già, e vedrai automaticamente se ci sono nuovi post. Tralaltro puoi anche leggerli senza aprire il tuo browser preferito :)

characterx ha detto...

Ciao,grande idea ma il renderer dov'e',insomma
si puo' provare?

Fulvio Satta ha detto...

Il renderer lo trovi tra i link allegati al blog.
Certo, puoi provarlo, ma non renderizza nulla. A sto punto potresti provare torrone, ma è solo un giochino praticamente.
Comunque l'ho detto molte volte su blender.it (e tu sei utente di la se non sei un omonimo), quando mi hanno chiesto quanto ci sarebbe voluto, che ci vorrà molto tempo (un paio d'anni penso se non di più) per la prima versione, ed anche qua in qualche post ho fatto notare i tempi lunghi.

characterx ha detto...

Mah a me non sembrano tempi lunghissimi un
paio d'anni,anzi mi sembrano anche pochi.
Non avevo letto il post su blender.it,o meglio non l'avevo letto al momento del
messaggio.
La cosa che mi incuriosisce di piu' e' il
come fai a testare se funzioni dato che non renderizza nulla,lo so' e' una domanda
un po' cretina ma sai com'e'...anche perche' se tutto viene implementato tramite shader (quindi programmini a parte) il core che fa'?Cioe' quello a cui stai lavorando(possibilmente in parole mooolto povere).

Fulvio Satta ha detto...

Per testare se le cose funzionano vedo se le classi o le cose che vado scrivendo, dati degli input, cambiano stato come voglio.
Ad esempio è chiaro che se vado a leggere un file della scena e la classe che lo legge trova un errore quando non c'è, o capisce che deve renderizzare gli shader A e B quando sono A e C e via dicendo c'è qualcosa di sbagliato.

Non immaginare che l'unico riscontro che hanno i programmatori con l'applicazione sia ciò che poi l'utente vede, il programmatore può in qualche modo indagare e capire come funziona dal di dentro il programma, esaminandolo persino istruzione per istruzione (cosa un po' pazza nella maggior parte dei casi, ma in alcuni debug tediosi può essere utile).

Per quanto invece riguarda l'altra domanda che fai, cosa fa il core, beh, gestisce gli shader e li mette in comunicazione.
Gli shader si trovano in un ambiente ottimo, e facilitato, per il compito che devono fare. Le istruzioni che hanno a disposizione sono ad alto livello, e sono fornite dal core. Il core si occupa di metterli in comunicazione, anche in rete (per una render farm), di parallelizzarli (cosa un po' guidata dagli shader, ma in minima parte), il che è utile con molti core, pc, cpu od altro, li compila, in modo da essere indipendenti da qualunque piattaforma (e volendo, con un sacco di lavoro in più, si potrebbero pure compilare su schede grafiche o simili, o fare anteprime varie, in maniera quasi trasparente dallo shader, ed è una delle cose su cui sto studiando per ora).
Il core si occupa di mettere insieme gli shader, farli funzionare e fornire il loro "ambiente naturale".

Per fare un paragone potremmo dire che il core è gli strumenti, gli shader sono il fallegname. Non è la sega, non è il martello, non è la raspa che creano la sedia, ma se il fallegname non avesse questi strumenti gli sarebbe assai difficile farla. Gli strumenti però non limitano ciò che puoi fare in larga misura, ovvero se non ti va di fare una sedia ma vuoi fare un tavolo puoi farlo con gli stessi strumenti.

characterx ha detto...

Ah ho capito grazie,quindi tienici informati e in bocca al lupo!
Ti farei anche la domanda scema :"perche'
'cassata' e perche' 'torrone'" ma la salto.
Ciao. :)

Fulvio Satta ha detto...

Anche questa è una domanda frequente. Volevo un tema comune tra tutti i nomi del progetto, ero in cucina quando l'ho scelto, e così ho scelto i dolci, ed abbiamo cassata, torrone, creme, crepe e meringa, per ora, ma sicuramente cresceranno :)
Cassata è il nome del progetto principale essendo io siculo :)

Anonimo ha detto...

Il link laterale al "Progetto su sourceforge" è errato, mancano i ":" tra "http" e "//" :)

(ps. finalmente riesco a usare il mio openid per commentare un blog. ah. son soddisfazioni)

Fulvio Satta ha detto...

Grazie, ho visto solo ora il commento :)
Cambio subito :)