<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4170818885714399458</id><updated>2012-02-12T21:36:24.705+02:00</updated><category term='rendering'/><category term='cassata'/><category term='3D'/><category term='miei progetti'/><title type='text'>Insane elucubrations</title><subtitle type='html'>Discussioni su progetti di programmazione e su ciò che passa alla mente dell'autore.&lt;br&gt;

In particolare sono presenti informazioni sulla lavorazione di un renderer unbias chiamato cassata.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://yotavga.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://yotavga.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Fulvio Satta</name><uri>http://www.blogger.com/profile/11729293953092866918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_ZwXoFby8_yU/SuMfWWT9rkI/AAAAAAAAADY/9Pzinv1csVc/S220/miciocappello.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>28</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4170818885714399458.post-7970822920969448520</id><published>2008-04-01T19:38:00.009+02:00</published><updated>2008-04-02T00:29:40.310+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='miei progetti'/><category scheme='http://www.blogger.com/atom/ns#' term='rendering'/><category scheme='http://www.blogger.com/atom/ns#' term='cassata'/><title type='text'>Post non adatto ai deboli di cuore</title><content type='html'>Questo post è il più lungo, complesso ed addentro a cassata che abbia mai scritto fino ad ora, per cui ne è consigliabile una lettura solo a chi ha molta voglia, o vuole interessarsi a come funziona cassata.&lt;br /&gt;Si tratta di un riepilogo di tutto quello che è stato fatto fino ad ora, unito a moltissime cose nuove, ed in effetti è il lavoro che ho svolto negli ultimi tempi, nei quali codice ne ho scritto pochissimo, ed anticipa un libro che ho intenzione di scrivere per tutti gli sviluppatori vari.&lt;br /&gt;Attenzione che non si tratta di nulla di immutabile, ogni cosa che citerò in questo post potrà essere cambiata in futuro, e presumibilmente qualcosa lo sarà. È comunque un post molto indicativo sul funzionamento di cassata e sul suo futuro e le sue possibilità, ne raccomando quindi la lettura a tutti coloro che sono sufficientemente motivati. Eviterò il più possibile termini ed espressioni che potrebbero risultare complessi per chi non è molto addentro all'argomento, ma non credo che riuscirò ad evitarli completamente, per cui cercate di seguire meglio che potete, eventualmente con wikipedia alla mano (meglio quello inglese). :)&lt;br /&gt;&lt;br /&gt;Per prima cosa cominciamo col vedere quali sono i componenti in cassata.&lt;br /&gt;Il primo componente è il core, è un demone, quindi un'applicazione che funziona in background. Gestisce tutti i lavori, ognuno dei quali è una scena. Potrebbe essere carino, più avanti, poter stabilire delle priorità sulle scene, o cose simili, in modo da poter renderizzare delle scene di prova senza appesantire le altre, ma non è una priorità.&lt;br /&gt;&lt;br /&gt;Poi ci sono i plugin. Questi sono di due tipi. Il primo fornisce delle funzioni utilizzabili dagli shader. Il secondo filtra tutti i file, eccetto uno (che citerò dopo), presi da cassata, per interpretare qualunque file in una maniera che sia comprensibile a cassata od agli shader.&lt;br /&gt;Questo secondo tipo di plugin è interessante, perché tramite questo è possibile aggiungere tipi di immagini non supportate (ad esempio una png sarà letta tramite un plugin, per dire), oppure interpretare shader scritti in qualunque linguaggio si voglia (purché un plugin sia in grado di tradurlo in un unico linguaggio compreso da cassata) e via dicendo.&lt;br /&gt;&lt;br /&gt;Altri componenti, già abbondantemente citato, sono gli shader. Gli shader sono dei componenti fondamentali, che dicono come renderizzare qualcosa, ma il loro ruolo preciso sarà chiaro solo più avanti nel post.&lt;br /&gt;&lt;br /&gt;Quindi ci sono i front end. Ogni modellatore potrà avere un suo front end (o più di uno) per poter integrare cassata direttamente all'interno del modellatore stesso. In più c'è un front end ufficiale, sganciato da altri modellatori, meringa (che tralaltro è il progetto più avanti dell'insieme di progetti cassata). Tramite i front end si usa cassata, che ricordo che rimane in background, nascosto all'utente. Ovviamente si può accedere con più front end contemporaneamente a cassata, perciò non è necessario che ognuno di questi possieda ogni caratteristica immaginabile, poiché è sempre possibile avviarne un altro se serve.&lt;br /&gt;&lt;br /&gt;Poi ci sono i file di scena. Questi non fanno altro che passare parametri agli shader, crearne istanze e definire parametri per ogni pass (cos'è un pass sarà più chiaro dopo).&lt;br /&gt;Una scena può includere altre scene, al più filtrate coi plugin precedenti. Solo la prima scena non può essere filtrata (e questa è l'unica eccezione che dicevo prima).&lt;br /&gt;È importante notare che in questo modo è possibile scrivere front end che in maniera completamente trasparente passino scene di un renderer a cassata. Questa pratica è possibile ma in genere non raccomandabile, perché probabilmente converrebbe utilizzare l'altro renderer, che con ottime probabilità avrebbe prestazioni migliori di cassata e non richiederebbe del lavoro aggiuntivo per scrivere front end che traducano le scene ed eventualmente plugin o shader apposta. In alcuni casi comunque può essere conveniente.&lt;br /&gt;&lt;br /&gt;Quindi ci sono tutti i dati. I dati vengono visti come shader da altri shader, quando filtrati dai vari plugin, per cui non si è limitati a nessun tipo. È anche possibile leggere suoni, filmati, immagini vettoriali, testo o qualunque altra cosa venga in mente. L'unica richiesta è avere plugin adatti a leggere il file in questione.&lt;br /&gt;&lt;br /&gt;Da questo primo riepilogo è possibile già cogliere una sfumatura della flessibilità di cassata, che però faccio notare, come si può notare da quello che ho già datto, non fa molto. Offre solo la possibilità di estendersi. Alcuni plugin o shader saranno ufficiali, ma molte cose non sono fatte direttamente dal progetto ufficiale. Possono invece essere estese da altri utenti.&lt;br /&gt;A tal proposito nascono due esigenze. La prima, più complessa, è argomento di discussione più avanti nel post, e riguarda la compatibilità tra le varie cose scritte. Sarebbe spiacevole se più utenti scrivessero cose diverse e poi non si potessero usare nello stesso progetto.&lt;br /&gt;&lt;br /&gt;La seconda è più semplice da risolvere. C'è il rischio che certi plugin o shader non vengano più mantenuti, oppure rimangano sconosciuti.&lt;br /&gt;Quello che mi piacerebbe fare è prendere quei plugin o shader che abbiano una certa licenza e che siano interessanti, e mantenerli, come viene fatto col linux kernel coi moduli, all'interno dei progetti ufficiali. L'autore potrebbe sempre continuare a mantenere il suo lavoro, ma nel momento in cui mancasse la sua partecipazione un altro utente potrebbe occuparsene, ed inoltre il suo lavoro sarebbe visibile a tutti e già presente quando s'installa cassata.&lt;br /&gt;&lt;br /&gt;Ora passo a spiegare come funziona il core.&lt;br /&gt;Un buon modo per approcciarsi al suo funzionamento è vedere come viene renderizzata una scena. Per spiegare questo però prima ho bisogno di spiegare cos'è un pass almeno brevemente, la spiegazione più completa verrà data quando descriverò le scene.&lt;br /&gt;Un pass è una variante di un rendering. Potrebbe avere una qualità diversa, un oggetto in meno, qualunque cosa.&lt;br /&gt;&lt;br /&gt;Per prima cosa un front end crea una scena. Quindi passa il file di scena e tutte le informazioni su dove trovare tutti gli altri file utili a cassata, che lo analizza e ritorna eventuali errori.&lt;br /&gt;Successivamente il front end dice di renderizzare un dato pass. Cassata apre un thread e comincia a definire tutte le relazioni tra le sottoscene (che saranno più chiare in seguito) e gli shader. Compila tutti gli shader, quindi mette in esecuzione quello o quelli che servono per ricavare la scena. Quando viene fatta la richiesta di qualche dato (ad esempio l'immagine finale) da parte del front end invia il dato, dopo averlo filtrato col plugin apposito.&lt;br /&gt;Ha anche il ruolo di sincronizzare i thread, ed i processi nel caso del rendering in rete.&lt;br /&gt;Inoltre fornisce una libreria completa di funzionalità utili al rendering agli shader.&lt;br /&gt;&lt;br /&gt;Una particolarità molto interessante del core è che utilizza un terzo tipo di plugin, nascosto. Questo renderizza ogni sottoscena, ma utilizzando tipi differenti a seconda del caso e della qualità richiesta, non scendendo così a compromessi ne in velocità ne in qualità (facendo così scegliere all'utente).&lt;br /&gt;&lt;br /&gt;Passo a descrivere gli shader. Come si è visto, il core non renderizza alla fin fine nulla, direttamente. Tutto il compito è lasciato agli shader.&lt;br /&gt;Gli shader sono probabilmente la parte più complessa ed articolata di cassata, ma grazie agli elementi presenti su core e plugin il compito di scrivere uno shader è parecchio semplificato.&lt;br /&gt;&lt;br /&gt;Gli shader sono dei programmi, spesso di piccola dimensione. Una cosa che li contraddistingue è quella di rimanere in esecuzione. Altri shader, o cassata stesso, possono eseguire determinate funzioni sullo shader.&lt;br /&gt;Ogni shader ha variabili con varie visibilità: a livello di funzione, thread, processo, istanza. Potrebbero introdursi altre visibilità a seconda dell'esigenza. Comunque è anche importante evitare di scrivere sulle variabili con visibilità d'istanza perché molto lente da sincronizzare in rete. Ancora non ho bene in mente come superare il problema di prestazioni in proposito, ma fortunatamente è abbastanza raro utilizzarle.&lt;br /&gt;La parallelizzazione è gestita a livello di shader, ma a livello molto alto. Ad esempio potrebbero esserci delle funzioni per lanciare ed integrare raggi, ed i raggi lanciati vengono automaticamente parallelizzati.&lt;br /&gt;Va detto che scrivere uno shader risulta in genere semplicissimo, perché il core ed eventualmente i plugin offrono funzionalità di livello molto alto. Ad esempio tutte le strutture di accelerazione geometrica non sono fatte tramite shader.&lt;br /&gt;&lt;br /&gt;L'usare shader può sembrare un notevole rallentamento. Tuttavia non è così. Intanto gli shader vengono compilati da un JIT, inoltre vengono ottimizzati per la CPU sul quale gireranno (sarebbe itneressante riuscire anche a fare qualcosa su GPU, ma non ho ancora studiato bene l'argomento). Inoltre è possibile compiere ottimizzazioni per scena. Effettivamente gli shader possono essere più lenti che senza, ma potrebbero persino essere più veloci.&lt;br /&gt;&lt;br /&gt;Gli shader sono studiati per risultare modulari, e potersi combinare in vari modi. Ad esempio si potrebbero avere shader che rappresentano una geometria, una camera, un metodo per renderizzare la scena e tanto altro.&lt;br /&gt;Rimane quindi importante, come accennato prima, fare in modo che gli shader possano lavorare correttamente assieme. È importantissimo quindi, in seguito, scrivere degli standard che non è obbligatorio seguire, ma che è caldamente raccomandato per poter collaborare con gli altri shader.&lt;br /&gt;Faccio notare che facendo in questo modo è molto facile ridefinire metodi di rendering e quant'altro, e difatti cassata, sebbene sia orientato all'unbias non è unbias. Non solo almeno. :)&lt;br /&gt;&lt;br /&gt;Vanno ancora descritti gli algoritmi utilizzati nel core, cosa che verrà fatta più avanti nel post.&lt;br /&gt;&lt;br /&gt;Ora descrivo le scene. Come ho detto prima una scena è davvero semplice. Per capire com'è fatta però bisogna spiegare qualche concetto.&lt;br /&gt;Ogni scena contiene delle sottoscene. Queste sottoscene sono semplicemente delle parti che possono venire calcolate senza condividere la stessa memoria. Possono fornire risultati indipendenti, ma anche che possono servire ad altre sottoscene. In questo proposito esistono due modi di comunicare tra le sottoscene. Uno è quello di produrre tutto il risultato, e solo dopo passarlo alle sottoscene a cui serve. L'altro è quello di produrre dati mano a mano quando servono e passarli tra le varie sottoscene.&lt;br /&gt;Un esempio di utilizzo di questo secondo metodo è ad esempio utilizzare due scene, una che renderizza una stanza, l'altra che renderizza un'altra stanza con un televisore che mostra la prima stanza, il tutto rimanendo unbias. Tralaltro le scene possono avere dipendenze circolari, così ad esempio, nella scena di prima, entrambe le stanze hanno un televisore che mostra l'altra stanza, od ad esempio se stessa.&lt;br /&gt;&lt;br /&gt;Le scene inoltre definiscono i parametri passati ad uno shader. Possono venire passati anche altri shader, come parametri, il che li rende tutti legati tra di loro.&lt;br /&gt;Un altro modo di passare parametri agli shader è tramite i pass. Un pass non è altro che un profilo che dice quali scene renderizzare, i filtri da utilizzare per ritornare i vari dati (quindi qua per esempio si sceglie che tipo di immagine utilizzare) ed eventuali variabili da passare ad i vari shader per personalizzarli.&lt;br /&gt;&lt;br /&gt;Detto questo passiamo a vedere quali sono gli algoritmi utilizzati all'interno di cassata. Va detto che questa lista è davvero incompleta, e moltissimi algoritmi sicuramente verranno aggiunti, specialmente per prestazioni migliori.&lt;br /&gt;&lt;br /&gt;Innanzitutto cassata nasce come unbias, e rimane tale quando possibile, a meno di non fornire la scelta. Ovvero quando è possibile fornire una tecnica unbias per risolvere un problema viene fornita, e poi, se presente, si può pensare di fornire anche tecniche bias.&lt;br /&gt;Detto questo non può mancare la presenza di integratori montecarlo. Vista la somiglianza tra integratori montecarlo e quasi-montecarlo si potranno usare entrambi. Questi sono onnipresenti. Sebbene inoltre non sia indispensabile, e si possano usare anche rendering basati su patch, è ovviamente fondamentale fornire tecniche di ray tracing. In particolare probabilmente le tecniche preferite saranno quelle unbias bidirezionali, possibilmente utilizzando tutte le path intermedie e riutilizzando tutte le path che si possono riutilizzare. Un'idea potrebbe essere MLT, ma sono fiducioso che si possa fare altrettanto con tecniche meno determinate da un singolo percorso importante della luce.&lt;br /&gt;&lt;br /&gt;Un'altra tecnica importante è l'uso dell'aritmetica affine. Questa tecnica è utilizzata specialmente per il displacement, ma viene utilizzata anche per molti altri compiti. Permettendo di trovare gli errori massimi compiuti nei calcoli è facile ridurli fino ad una soglia scelta dall'utente. Ad esempio per il displacement si potrebbe utilizzare inizialmente un intervallo infinito, trovando il massimo displacement possibile. Quindi lo si dividerebbe sempre di più in modo da ottenere una precisione sempre maggiore di dove andrà un dato punto. Infine, quando si sa che il punto sarebbe sicuramente all'interno di una sfera estremamente piccola, lo si prende per valido. È una tecnica estremamente precisa e molto veloce, certo però non veloce come modificare le geometrie, ma comunque risulta una tecnica che non da errori con geometrie poco fitte o problemi simili.&lt;br /&gt;&lt;br /&gt;Un problema che mi ha assillato per molto tempo era come mettere nella zuppa delle tecniche pure qualcosa che permetta di utilizzare materiali non lineari. Questo perché apparte questo particolare non c'è scena che cassata, secondo i termini detti prima, non può renderizzare con la qualità voluta. La soluzione l'ho trovata nel rendering basato su patch. Si fanno diversi rendering uno di seguito all'altro convergendo alla soluzione. Non ho una dimostrazione formale (che tralaltro sarebbe anche complicata), ma sono arrivato alla conclusione che facendo le cose in un certo modo (che non spiego qua perché ancora si stanno affinando) sia possibile convergere sempre ad una soluzione se questa esiste, e guidare, pure, ad una specifica soluzione, qual'ora ne esistano diverse. Questo però richiede un buon modo per produrre patch delle geometrie. Questo modo non è complicato, visto che si possono riutilizzare, ad esempio, le coordinate uv, e tralaltro può essere riutilizzata questa parte di cassata per fare ogni tipo di bake su texture.&lt;br /&gt;&lt;br /&gt;Un'altra cosa che mi piacerebbe includere in cassata, e che già in gran parte si più fare con gli strumenti di cui ho parlato nel post è l'inserimento di simulatori, fisici e non, ed in particolare tecniche di auralizzazione. Non sono cose assurde da inserire ma richiedono un bel po' di lavoro sugli shader, e quindi non sono minimamente una priorità, tuttavia sono previsti.&lt;br /&gt;&lt;br /&gt;Ovviamente tutte le tecniche sono condite ovunque con caching, e dove possibile vorrei aggiungere anche memoizzazione.&lt;br /&gt;&lt;br /&gt;Un'altra cosa sulla quale lavorare (che volendo si può fare anche con quello che già si ha, ma va migliorata) è poter ricominciare il rendering da un punto dove si era arrivati, o progressivamente migliorare un rendering, od ancora unire più pass senza troppi interventi da parte del front end.&lt;br /&gt;Sarebbe carina anche una certa forma d'interattività da parte del front end, in modo che possa cambiare un certo numero di cose in corso.&lt;br /&gt;&lt;br /&gt;Detto questo avrò tralasciato molte cose, ma dovrei aver dato un quadro più o meno possibile di cos'è cassata e come funziona. Se qualcuno avrà voglia di leggere tutto e commenterà sarà il benvenuto, specialmente se ha qualche idea in mente. Faccio presente comunque che cassata è tanto flessibile da poterlo davvero considerare il più flessibile tra i renderer che conosco, il suo difetto principale sarà probabilmente prestazionale, ma architetturalmente è studiato per potersi ottimizzare enormemente, così nel tempo potrà diventare anche più veloce di molti renderer che mirano alla velocità più che alla flessibilità. Questo certamente richiederà tempo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4170818885714399458-7970822920969448520?l=yotavga.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yotavga.blogspot.com/feeds/7970822920969448520/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4170818885714399458&amp;postID=7970822920969448520' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/7970822920969448520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/7970822920969448520'/><link rel='alternate' type='text/html' href='http://yotavga.blogspot.com/2008/04/post-non-adatto-ai-deboli-di-cuore.html' title='Post non adatto ai deboli di cuore'/><author><name>Fulvio Satta</name><uri>http://www.blogger.com/profile/11729293953092866918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_ZwXoFby8_yU/SuMfWWT9rkI/AAAAAAAAADY/9Pzinv1csVc/S220/miciocappello.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4170818885714399458.post-603485240309050456</id><published>2008-02-14T03:31:00.007+02:00</published><updated>2008-02-14T03:54:14.299+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='miei progetti'/><category scheme='http://www.blogger.com/atom/ns#' term='rendering'/><category scheme='http://www.blogger.com/atom/ns#' term='cassata'/><title type='text'>Nuove caratteristiche e ritorno</title><content type='html'>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 :) ).&lt;br /&gt;Intanto benritrovati, se mai ci fosse qualcuno, e passiamo subito alle novità.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;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 :)&lt;br /&gt;&lt;br /&gt;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) :)&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;Come codice non ho fatto praticamente nulla in questo periodo, ma vedrò se nei prossimi giorni riuscirò a fare qualcosa.&lt;br /&gt;&lt;br /&gt;Beh, credo di aver esposto tutte le novità importanti, alla prossima :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4170818885714399458-603485240309050456?l=yotavga.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yotavga.blogspot.com/feeds/603485240309050456/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4170818885714399458&amp;postID=603485240309050456' title='10 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/603485240309050456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/603485240309050456'/><link rel='alternate' type='text/html' href='http://yotavga.blogspot.com/2008/02/nuove-caratteristiche-e-ritorno.html' title='Nuove caratteristiche e ritorno'/><author><name>Fulvio Satta</name><uri>http://www.blogger.com/profile/11729293953092866918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_ZwXoFby8_yU/SuMfWWT9rkI/AAAAAAAAADY/9Pzinv1csVc/S220/miciocappello.jpg'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4170818885714399458.post-7844952049839618265</id><published>2007-11-28T05:26:00.001+02:00</published><updated>2007-11-28T05:44:26.994+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='miei progetti'/><category scheme='http://www.blogger.com/atom/ns#' term='rendering'/><category scheme='http://www.blogger.com/atom/ns#' term='cassata'/><title type='text'>Che affinità hai con cassata?</title><content type='html'>Ottime notizie da un lato, bruttine (ma non poi particolarmente brutte) dall'altro.&lt;br /&gt;&lt;br /&gt;Dopo aver passato delle ore a studiare documenti su internet per risolvere il problema del displacement (tant'è che oggi non ho programmato nulla) posso dire di aver trovato le basi teoriche per risolverlo!&lt;br /&gt;&lt;br /&gt;Si tratta dell'aritmetica affine, un bellissimo modello di analisi numerica autovalidante.&lt;br /&gt;Questa teoria mi permette non solo di risolvere il problema del displacement, ma anche di risolvere altri problemi secondari e di ottimizzare maggiormente alcune cose dentro cassata.&lt;br /&gt;Si tratta, è vero, di un'approssimazione, ma del tutto paragonabile come dimensioni e caratteristiche a quella che viene fuori usando i numeri in virgola mobile, e la si può ridurre a piacere, in modo, appunto, da renderla davvero paragonabile a quella generata svolgendo calcoli col tipo usato al momento. In pratica è possibile accorparla all'unica approssimazione numerica che ho mai fatto in tutto il renderer (quasi inevitabile), ed è sufficiente aumentare i temi di rendering e la ram usati per ridurla (qual'ora ce ne sia bisogno, non è una cosa così comune :) ).&lt;br /&gt;Tra parentesi faccio notare che tutti i renderer unbias non sono davvero unbias per colpa di queste approssimazioni, però sono talmente piccole e trascurabili che non le si prende minimamente in considerazione. Di contro il mio sarebbe il primo renderer unbias di cui sono a conoscienza che aumentando i tempi di rendering è in grado di far diminuire a piacere questi errori.&lt;br /&gt;&lt;br /&gt;Fin qua direi ottime notizie. La "brutta" notizia è che l'introduzione dell'aritmetica affine mi porterà via del tempo in progettazione.&lt;br /&gt;Anche se a livello di codice in questo punto della lavorazione di cassata le cose da fare per riadattare ciò che ho già scritto sono pressocché nulle, la progettazione, per quanto non cambi proprio visceralmente, è comunque condizionata in quasi tutto ciò che ho fatto, ed ho bisogno di un periodo di tempo per rimettere le cose apposto.&lt;br /&gt;Oltretutto si tratta di una tecnica nuova, che non conoscevo fino a 10 ore fa. Anche se ho già letto e compreso molte cose, prima di poterla padroneggiare bene passerà un po'.&lt;br /&gt;&lt;br /&gt;Credo di aver detto tutto, alla prossima :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4170818885714399458-7844952049839618265?l=yotavga.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yotavga.blogspot.com/feeds/7844952049839618265/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4170818885714399458&amp;postID=7844952049839618265' title='3 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/7844952049839618265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/7844952049839618265'/><link rel='alternate' type='text/html' href='http://yotavga.blogspot.com/2007/11/che-affinit-hai-con-cassata.html' title='Che affinità hai con cassata?'/><author><name>Fulvio Satta</name><uri>http://www.blogger.com/profile/11729293953092866918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_ZwXoFby8_yU/SuMfWWT9rkI/AAAAAAAAADY/9Pzinv1csVc/S220/miciocappello.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4170818885714399458.post-4643196937704691383</id><published>2007-11-27T04:03:00.001+02:00</published><updated>2007-11-27T04:53:37.751+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='miei progetti'/><category scheme='http://www.blogger.com/atom/ns#' term='rendering'/><category scheme='http://www.blogger.com/atom/ns#' term='cassata'/><title type='text'>Novità e parecchio codice nuovo</title><content type='html'>Ormai penso che l'avrete capito. Ogni tanto faccio un mare di cose per cassata e poi mi eclisso per un breve periodo :)&lt;br /&gt;È qualche giorno che sono sopra il codice e sono molte le novità sia in fase di progettazione che d'implementazione. Penso che mi ci dedicherò ancora pochi giorni e poi riavrò una bella eclissi di un paio di settimane o chissà quanto XD&lt;br /&gt;&lt;br /&gt;Intanto illustro quanto è stato fatto in questa settimana (giorno più giorno meno ho lavorato una settimana).&lt;br /&gt;&lt;br /&gt;Ho implementato (non è proprio finito, ma diciamo quasi, piccole modifiche verranno fatte mano a mano andrò avanti) il parser per le scene XML.&lt;br /&gt;Davvero complicatissimo, è attualmente la parte più complessa dell'intero cassata, ed anche a renderer finito penso rimarrà tra le più complesse in assoluto, probabilmente nella top 5.&lt;br /&gt;Per chi fosse curioso ecco il codice:&lt;br /&gt;&lt;span style="display: block;" id="formatbar_Buttons"&gt;&lt;span class="on down" style="display: block;" id="formatbar_CreateLink" title="Collegamento" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://cassata.svn.sourceforge.net/viewvc/cassata/trunk/src/Scene.cpp?revision=128&amp;amp;view=markup"&gt;scene.cpp&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cassata.svn.sourceforge.net/viewvc/cassata/trunk/src/Scene.h?revision=128&amp;amp;view=markup"&gt;scene.h&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Altre implementazioni sono state fatte qua e la, in particolare ho cominciato a definire il sistema dei plugin per i tipi, ma ancora c'è moltissimo da fare (forse riuscirò ad abbozzare tutto prima della prossima pausa, chissà XD ).&lt;br /&gt;&lt;br /&gt;Per quanto riguarda la progettazione ho definito meglio il sistema per gli shader, e tralaltro (non che sia proprio "progettazione") mi sono informato un po' meglio sul discorso licenze.&lt;br /&gt;Qua c'è una lista degli shader che verranno utilizzati nel rendering:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;camera:&lt;/span&gt; Sceglie quali raggi emettere o catturare;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;geometry:&lt;/span&gt; Indica dove i raggi sbattono;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;material:&lt;/span&gt; Mostra in che modo i raggi interagiscono laddove sbattono;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;layer&lt;/span&gt;: Indica quali oggetti disegnare;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;filter&lt;/span&gt;: Combina vari layer come si vuole;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;volume:&lt;/span&gt; Indica come i raggi si comportano dove non rimbalzano;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;generic:&lt;/span&gt; Produce risultati utili agli altri tipi.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Poiché lo reputo interessante ecco una descrizione più approfondita di cosa si più fare ed a cosa servono tutti e 7 i tipi di shader:&lt;br /&gt;&lt;br /&gt;Lo shader camera indica come funziona l'"occhio" che vede la scena. Cosa è in grado di vedere e cosa no.&lt;br /&gt;Questo include anche i colori visibili, la polarizzazione, il DoF, il motion blur ed altre cose simili. Per capire perché anche queste cose influiscono pensate ad una macchina fotografica, dove potete cambiare esposizione, apertura ed altre cose simili.&lt;br /&gt;Effetti come il glow non sono del tutto rappresentabili però in questo shader (come si vedrà vengono svolti dal filter).&lt;br /&gt;&lt;br /&gt;Lo shader geometry indica la geometria di un oggetto.&lt;br /&gt;Oggetti vari, come nurbs, mesh o qualunque altra cosa, verranno implementati con questo.&lt;br /&gt;&lt;br /&gt;Lo shader material dice come una geometria gestisce i raggi. Un material può anche emettere raggi, nel qual caso è una sorgente luminosa.&lt;br /&gt;&lt;br /&gt;Lo shader layer è probabilmente il più semplice dopo il generic, ma spiegarlo non è così semplice. Vediamo cosa riesco a fare :)&lt;br /&gt;Questo shader modifica la posizione e la visibilità degli oggetti, in pratica compone la scena. Se per esempio un oggetto si muove nella scena, scompare e riappare, od ancora viene visto solo da certi oggetti viene deciso dal layer (per esempio se di un oggetto si vede solo l'ombra questo verrà fatto coi layer).&lt;br /&gt;&lt;br /&gt;Lo shader filter sembrerebbe un classico postprocesso delle immagini (quello che fanno i nodi in blender, per intenderci).&lt;br /&gt;Sebbene lo scopo sia esattamente quello, l'approccio è parecchio differente. Il tutto avviene infatti in maniera completamente unbias, e così è del tutto ininfluente la risoluzione delle immagini.&lt;br /&gt;Effetti come il glow, postprocesso delle immagini o cose simili vengono fatti qua.&lt;br /&gt;&lt;br /&gt;Lo shader volume è davvero molto interessante. Può cambiare a suo piacimento ciò che vuole di un raggio. Direzione, intensità, può generarne anche dal nulla, può fare ciò che vuole. In realtà fa anche quello che fanno material e geometry, ma non solo.&lt;br /&gt;Il motivo per cui esistono material e geometry è che in molti casi simulare ciò che viene richiesto per fare oggetti tramite il volume (cosa che risulterebbe senza dubbio più realistica ma indistinguibile ad occhio nudo) è semplicemente improponibile in termini di tempo.&lt;br /&gt;Alcuni effetti, come ombre e luci volumetriche, fuoco, fumo ed altre cose simili, sono fatte tramite questo shader. Se si vuole ottenere il massimo realismo con effetti come il subsurface scattering lo si può fare sempre con questo shader, ma lo sconsiglio per via dei tempi. Sarà presente un'approssimazione (estremamente più realistica di quella che c'è in blender in ogni caso) come shader material per l'SSS, per cui generalmente non si dovrà aspettare una vita.&lt;br /&gt;&lt;br /&gt;Lo shader generic serve solo per appoggiare gli altri shader, fornisce codice che non deve così essere riscritto per ogni singolo shader che ne fa uso, ma che così può essere scritto una sola volta.&lt;br /&gt;&lt;br /&gt;Va detto che tutti gli shader sono praticamente identici tra loro, cambia solo il modo in cui il renderer li tratta, e tutti gli shader possono essere collegati nei modi più disparati per offrire cose molto interessanti.&lt;br /&gt;Per esempio supponiamo di avere 2 materiali, uno opaco ed uno semitrasparente. Vogliamo che il materiale semitrasparente agisca come superficie che sta sopra quello opaco. Si scrive un terzo shader, ASSOLUTAMENTE GENERICO, che fa la sovrapposizione di 2 materiali e gli si collegano i 2 materiali assieme. Et voila, le jeu son fé :) (sarà giusto il mio francese? XD )&lt;br /&gt;&lt;br /&gt;Tutti gli shader sono in funzione del tempo in qualche modo, quindi tutti animabili.&lt;br /&gt;Inoltre tutti gli shader descrivono com'è fatta la scena, non come renderizzarla. Le 2 cose sono totalmente svincolate.&lt;br /&gt;&lt;br /&gt;Ciò che sto cercando di fare (con un discreto successo) è di avere tutto totalmente unbias.&lt;br /&gt;Non sono sicuro di poter fare tutto unbias, in particolare c'è un solo, singolo aspetto che mi lascia perplesso: il displacement!&lt;br /&gt;Ho già pensato ad alcune soluzioni approssimate, ma è proprio quello che voglio evitare.&lt;br /&gt;Una delle cose belle di un renderer unbias è che la descrizione della scena è totalmente ignara di come la scena verrà renderizzata, con quale qualità. Non si va a fornire, oggetto per oggetto, qualche parametro sulla qualità di un oggetto perché questo appaia correttamente nella scena. Tutte le soluzioni da me pensate per il displacement hanno questo problema, e comunque non sono unbias. Alcune sono anche abbastanza belle da vedere e veloci, ma non sono unbias.&lt;br /&gt;Sono scettico sulla possibilità di trovare una soluzione a questo che è in effetti l'unico ostacolo reale a ciò che voglio fare tra quelli che ho incontrato finora, e se sarà necessario inserirò il displacement alla meno peggio, però se troverò qualcosa per risolvere il problema la inserirò ben volentieri, e continuerò a cercare in proposito (nota che con gli shader volume, facendo oggetti reali, e non approssimazioni come fa il geometry, sono abbastanza fiducioso che si possa rappresentare il displacement in maniera unbias, ma la cosa è davvero troppo lenta per poter esser presa in considerazione).&lt;br /&gt;&lt;br /&gt;Per il resto, ho fatto un altro post interminabile, dico che avevo dimenticato le metaball dall'elenco del post precedente, che saranno realizzate e sono possibili in maniera unbias, a presto con altre notizie :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4170818885714399458-4643196937704691383?l=yotavga.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yotavga.blogspot.com/feeds/4643196937704691383/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4170818885714399458&amp;postID=4643196937704691383' title='7 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/4643196937704691383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/4643196937704691383'/><link rel='alternate' type='text/html' href='http://yotavga.blogspot.com/2007/11/novit-e-parecchio-codice-nuovo.html' title='Novità e parecchio codice nuovo'/><author><name>Fulvio Satta</name><uri>http://www.blogger.com/profile/11729293953092866918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_ZwXoFby8_yU/SuMfWWT9rkI/AAAAAAAAADY/9Pzinv1csVc/S220/miciocappello.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4170818885714399458.post-7500062943047310773</id><published>2007-10-29T01:38:00.000+02:00</published><updated>2007-10-30T00:39:29.264+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='miei progetti'/><category scheme='http://www.blogger.com/atom/ns#' term='rendering'/><category scheme='http://www.blogger.com/atom/ns#' term='cassata'/><title type='text'>Wow, che forme!</title><content type='html'>Mi sono preso una giornata sabatica per cercare informazioni sulle geometrie, ed ho fatto davvero delle bellissime scoperte.&lt;br /&gt;La prima, prima su tutte, è quella di poter realizzare le superfici di suddivisione con suddivisione infinita! Il che vuol dire massima correttezza nel rendering, e la tecnica non è neanche particolarmente lenta, anzi! :D&lt;br /&gt;La tecnica si può applicare sicuramente alle catmull-clark ed alle loop, penso anche alle doo-sabin ma non sono ancora sicuro.&lt;br /&gt;&lt;br /&gt;Molte delle tecniche che vado ad esporre fra poco sono molto complesse, a livello matematico in genere, ma a volte anche a livello implementativo. Quindi non verranno implementate a breve. Però sono tutte previste per delle versioni future di cassata, c'è solo da aspettare :)&lt;br /&gt;&lt;br /&gt;Ecco le cose che verranno implementate (e che sono sicuramente tecnicamente possibili):&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Shader per le geometrie. Questo permette di fare geometrie personalizzate, ad esempio frattali, ma qualunque cosa venga in mente va benissimo.&lt;/li&gt;&lt;li&gt;Geometrie infinite. Questo vuol dire semplicemente che si possono ad esempio fare dei piani (cosa utile quando si fa magari qualche scena di prova e si han problemi con l'orizonte :) ).&lt;/li&gt;&lt;li&gt;Mesh, NURBS e superfici di suddivisione catmull-clark, loop e doo-sabin. Le prime 2 a scelta con suddivisione "tradizionale" od infinita (quindi senza più problemi di suddivisione insufficente od altro). Per l'ultima solo la prima soluzione. Tutte le superfici di suddivisione supporteranno anche parametri speciali come piegature ed altre cose simili.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Displacement, sia tramite texture procedurali che immagini.&lt;/li&gt;&lt;li&gt;CSG, Constructive Solid Geometry, ovvero le operazioni booleane, quindi intersezioni, unioni e differenze (da quel che ho capito sono davvero utili a livello di CAD anche nel rendering, a seconda di come si affronta il rendering). È ancora da decidere come combinare questa tecnica con l'UV-Mapping.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Ecco invece quello che mi piacerebbe implementare ma che non sono sicuro sia possibile, per problemi tecnici:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Doo-sabin suddivise all'infinito come le altre superfici di suddivisione. Sono quasi convinto che si possa fare, ma non ne sono sicuro ancora al 100%.&lt;/li&gt;&lt;li&gt;Displacement con suddivisioni infinite, quindi un displacement perfetto, senza alcun problema di risoluzione, ne rallentamenti all'aumentare di questa, e via dicendo. Purtroppo da questo punto di vista sono abbastanza scettico sulla sua realizzabilità, ma comunque non si sa mai.&lt;/li&gt;&lt;li&gt;Applicazione perfetta delle texture su superfici di suddivisione all'infinito. Quest'ultimo punto non deve trarre in inganno perché comunque l'applicazione delle texture sulle superfici di suddivisione, col metodo detto prima, è ottima. Solo che non è proprio perfetta. Sono abbastanza convinto che si possa risolvere, ma non sicuro come per il primo punto di questa lista.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Invece qua c'è una lista delle cose da valutare per l'inserimento (l'unico scopo che avrebbero è ottimizzare il rendering, poiché sono già realizzabili con le strutture viste prima):&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Punti, curve ed altre cose di questo genere, che normalmente non verrebbero visualizzate perché sono adimensionali o monodimensionali, ma che poi verrebbero "ispessite". Possono essere utili per le particelle, per il pelo e per altre tecniche simili. Alternative possibili sono le nurbs o le superfici di suddivisione, ma sono abbastanza lente, quindi avere un oggetto appositamente progettato per queste cose, che permetta di velocizzare il rendering, è senza dubbio preferibile. Faccio comunque notare che la maggior parte delle cose fatte con le particelle possono essere simulate molto meglio con dei materiali appositi. Non è così nel caso del pelo, ma per esempio per fuoco o fumo probabilmente conviene fare un materiale apposito (ma dipende comunque tutto dai casi). È probabile che verranno introdotte.&lt;/li&gt;&lt;li&gt;Geometrie più semplici come sfere, coni, cilindri, cuboidi ed altre cose simili. Sono tutte estremamente facili da rappresentarsi con le nurbs, ma è da decidere se vale davvero la pena di fare una struttura ottimizzata per gestirle. Non ho idea di quanto siano importanti per alcuni modellatori che ne fanno uso, o per un qualche modo di "fare grafica", se saranno importanti verranno implementate.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Lo so che sono una mole enorme di roba, ma non vuol dire che si debbano realizzare tutte ora, anzi. Probabilmente prima che si realizzino tutte passeranno almeno 2-3 anni. Questo post era solo per dire cosa aspettarsi sulle geometrie nei prossimi anni con cassata :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4170818885714399458-7500062943047310773?l=yotavga.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yotavga.blogspot.com/feeds/7500062943047310773/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4170818885714399458&amp;postID=7500062943047310773' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/7500062943047310773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/7500062943047310773'/><link rel='alternate' type='text/html' href='http://yotavga.blogspot.com/2007/10/wow-che-forme.html' title='Wow, che forme!'/><author><name>Fulvio Satta</name><uri>http://www.blogger.com/profile/11729293953092866918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_ZwXoFby8_yU/SuMfWWT9rkI/AAAAAAAAADY/9Pzinv1csVc/S220/miciocappello.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4170818885714399458.post-3345077721266811070</id><published>2007-10-24T02:24:00.000+02:00</published><updated>2007-10-24T02:39:50.947+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='miei progetti'/><category scheme='http://www.blogger.com/atom/ns#' term='cassata'/><title type='text'>Il primo formato non si scorda mai</title><content type='html'>In attesa di avere la nuova estensione ho cominciato a progettare ciò che ci starà dentro il file.&lt;br /&gt;La progettazione è durata poco, un'oretta, anche se c'è da dire che ci penso già da molto, ma proprio perché è durata poco, unito al fatto che ancora molte parti di cassata vanno scritte, la rende solo ed esclusivamente un riferimento, probabilmente cambierà molto nel futuro.&lt;br /&gt;Ciononostante ho fatto in modo che fosse la più corretta possibile.&lt;br /&gt;&lt;br /&gt;Ho scritto un semplice file di esempio che illustra ciò che ho pensato, ecco il &lt;a href="http://cassata.svn.sourceforge.net/viewvc/cassata/trunk/scene.xml?revision=110&amp;amp;view=markup"&gt;link&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Nel punto dove c'è ??? non c'è una bizzarra sintassi, ma ancora quella zona è "oscura" :D .&lt;br /&gt;Per il resto, per chi fosse già pratico di XML, noterà che c'è qualche bizzarro uso dei tag, in particolare quell'in invece dei tag diretti, ed un lettore attento noterà anche le use.&lt;br /&gt;Questo è per il particolare meccanismo di uso degli shader che stò progettando per cassata, che non ho mai esposto qui perché ancora troppo immaturo.&lt;br /&gt;Molte cose di quelle che si vedono nel file si riferiscono a cose future, perciò se volete sapere qualcosa chiedete pure.&lt;br /&gt;&lt;br /&gt;Quanto cambierà del file che potete vedere non lo so proprio. Penso abbastanza, ma è difficile fare stime, chi vivrà vedrà :)&lt;br /&gt;&lt;br /&gt;Per il resto rimanete sintonizzati per altre succulente novità :D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4170818885714399458-3345077721266811070?l=yotavga.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yotavga.blogspot.com/feeds/3345077721266811070/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4170818885714399458&amp;postID=3345077721266811070' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/3345077721266811070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/3345077721266811070'/><link rel='alternate' type='text/html' href='http://yotavga.blogspot.com/2007/10/il-primo-formato-non-si-scorda-mai.html' title='Il primo formato non si scorda mai'/><author><name>Fulvio Satta</name><uri>http://www.blogger.com/profile/11729293953092866918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_ZwXoFby8_yU/SuMfWWT9rkI/AAAAAAAAADY/9Pzinv1csVc/S220/miciocappello.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4170818885714399458.post-1882344241407911504</id><published>2007-10-23T03:14:00.000+02:00</published><updated>2007-10-23T03:24:08.751+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='miei progetti'/><category scheme='http://www.blogger.com/atom/ns#' term='cassata'/><title type='text'>Una prova di creatività</title><content type='html'>Dico subito che i lavori stanno andando benissimo e lisci come l'olio.&lt;br /&gt;Ora però ho bisogno della vostra creatività :)&lt;br /&gt;Ho bisogno di trovare una bella estensione per i file di descrizione della scena.&lt;br /&gt;&lt;br /&gt;Ecco i requisiti che mi piacerebbe avesse:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;estensione di 3 caratteri&lt;/li&gt;&lt;li&gt;il nome deve potersi leggere come un dolce detto in italiano. La lettura può non essere letterale ma artistica (ad esempio non so quanti di voi sanno che png si legge ping :) ),&lt;/li&gt;&lt;li&gt;il nome è un acronimo in inglese che descrive cos'è il file,&lt;/li&gt;&lt;li&gt;il nome contiene la lettera C, che nell'acronimo va espansa con "Cassata".&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Proponete quello che volete, va bene pure che non rispetti qualcuno dei punti, ma più ne rispetta meglio è. Alla fine sceglierò la più bella, se ce n'è qualcuna che mi convince.&lt;br /&gt;&lt;br /&gt;Per dare un'idea di cosa si potrebbe fare, a me è venuto in mente crd, cassata rendering definition, che si legge cardo, e non va bene sia perché la lettura è troppo artificiosa (ok artistica ma qui si esaggera) sia perché il cardo non è un dolce :)&lt;br /&gt;&lt;br /&gt;Ok, allegate tutte le soluzioni che volete allora come commenti, abbondate pure se ne avete tante, se sceglierò una delle vostre estensioni, a meno che non vogliate il contrario (magari per ragioni di privacy o che so io) potete comunicarmi il vostro nome e cognome (anche via email se preferite), che provvederò a metterli nel README indicando che quello è l'autore del nome dell'estensione :)&lt;br /&gt;Se preferite darmi il nome e cognome solo nel caso in cui il vostro nome viene scelto mi sta bene pure, basta che me lo comunichiate e mi diate un recapito per contattarvi (se non lo possiedo già). Non mi approprierò di nessun nome che avete scelto a meno che non scriviate PER ISCRITTO che volete rimanere anonimi nel commento. Mi raccomando, sennò mi obbligate a scartare la vostra estensione a priori :)&lt;br /&gt;&lt;br /&gt;Per il resto, inventate, inventate :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4170818885714399458-1882344241407911504?l=yotavga.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yotavga.blogspot.com/feeds/1882344241407911504/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4170818885714399458&amp;postID=1882344241407911504' title='4 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/1882344241407911504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/1882344241407911504'/><link rel='alternate' type='text/html' href='http://yotavga.blogspot.com/2007/10/una-prova-di-creativit.html' title='Una prova di creatività'/><author><name>Fulvio Satta</name><uri>http://www.blogger.com/profile/11729293953092866918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_ZwXoFby8_yU/SuMfWWT9rkI/AAAAAAAAADY/9Pzinv1csVc/S220/miciocappello.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4170818885714399458.post-3767973406330422146</id><published>2007-10-19T02:34:00.000+02:00</published><updated>2007-10-19T15:35:29.417+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='miei progetti'/><category scheme='http://www.blogger.com/atom/ns#' term='cassata'/><title type='text'>Si ricomincia!</title><content type='html'>Finalmente ricomincio il lavoro :)&lt;br /&gt;Dico subito che non ho scritto ancora codice, ma mi sono messo a progettare un po' di cose, e poiché sono sempre per uno sviluppo aperto vi illustro subito le novità.&lt;br /&gt;&lt;br /&gt;La roadmap stà cambiando notevolmente, non è ancora pronta la nuova quindi non la pubblico, ma sappiate che la vecchia roadmap sta subbendo molti cambiamenti.&lt;br /&gt;Per ora mi limito a dire cosa cambia nella 0.1.&lt;br /&gt;&lt;br /&gt;Innanzitutto fermo alcune cose (ovviamente solo momentaneamente) che erano previste per la 0.1, in particolare il rendering distribuito, che verrà presumibilmente reinserito prima dell'uscita della 1.0, ma non ora.&lt;br /&gt;Questo nonostante sia una delle cose più avanti col progetto, ed il motivo è che la complessità aggiunta è molto grande, ed aggiungerla ora è davvero molto pesante.&lt;br /&gt;Il codice comunque rimane, in attesa di essere ripreso in seguito.&lt;br /&gt;&lt;br /&gt;Un'altra cosa che cambia è il supporto dei job, che si modifica un po'.&lt;br /&gt;Per spiegare come funzionano i job è necessario spiegare come funziona il processo di rendering e come viene suddiviso.&lt;br /&gt;&lt;br /&gt;Innanzitutto abbiamo le scene. Ogni scena è un qualcosa che vogliamo renderizzare. Potrebbe essere un'immagine, un filmato e quant'altro.&lt;br /&gt;Poiché per ora è prematuro cominciare a lavorare su cose come i filmati mi sono limitato al rendering di immagini, e di queste parlerò, più avanti potrò facilmente estendere il tutto in modo che funzioni anche coi filmati :)&lt;br /&gt;Inizialmente cassata renderizzerà solo una scena alla volta, cosa che ovviamente cambierà.&lt;br /&gt;&lt;br /&gt;Ogni scena è composta da una serie di layer. I layer sono rendering da fare singolarmente (in realtà la faccenda non sarà sempre così semplice, ho già in mente qualche chicca molto succulenta, ma prima di parlarne voglio avere le idee più chiare).&lt;br /&gt;I layer servono per fare compositing, regolare l'intensità luminosa quando il rendering è finito e quant'altro.&lt;br /&gt;Inizialmente cassata renderizzerà solo un layer per scena.&lt;br /&gt;Ogni layer può avere un tipo diverso usato internamente (leggi il mio &lt;a href="http://yotavga.blogspot.com/2007/09/altre-novit-sulla-progettazione.html"&gt;vecchio post&lt;/a&gt; per capire di che parlo).&lt;br /&gt;&lt;br /&gt;Ogni layer è composto da pass. I pass inizialmente saranno virtualmente identici tra di loro, ma in futuro potrebbero essere realizzati con tecniche diverse (magari anche scelte dinamicamente per aumentare la velocità del rendering il più possibile).&lt;br /&gt;Ogni pass sarà un rendering corretto, ed unendo più pass si diminuirà progressivamente il rumore. L'importanza dei pass deriva principalmente da 2 motivi:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;L'utente decide di fare un pass ad una data qualità, viene un rendering e decide che quel rendering va bene, gli piace, ma è troppo rumoroso. Esegue quindi altri pass (magari uno solo ad alta qualità) per ridurre il rumore. Così facendo è possibile sia migliorare la qualità di un rendering, sia riprendere un rendering cominciato precedentemente (ovviamente solo tra un pass e l'altro), sia magari generare un'anteprima in pochi minuti e poi decidere che va bene e migliorarne la qualità.&lt;/li&gt;&lt;li&gt;Si potrebbero fare tanti pass con il rendering distribuito, e poi unirli tutti assieme in un secondo momento. Questo semplifica molto l'architettura distribuita ed ha buone prestazioni, ma tuttavia non è detto che siano le migliori possibili e poi bisognerà analizzare meglio la situazione.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Infine ogni pass viene ritagliato in job. Ogni job inizialmente si occuperà di renderizzare alcuni pixel dell'immagine. In futuro questi schemi potrebbero cambiare, a seconda dell'algoritmo utilizzato per la generazione del pass, ma in ogni caso un job si occupa di creare un frammento di pass.&lt;br /&gt;L'importanza di un job deriva dal fatto che ogni job è eseguito su un thread diverso, e quindi è possibile utilizzare più core o CPU o quant'altro, e che ogni job può essere virtualmente eseguito su un altro computer, e quindi dare un'altra possibilità di rendering distribuito.&lt;br /&gt;&lt;br /&gt;Detto questo vi lascio, se riesco scriverò del codice già sabato (domani, o meglio oggi visto l'orario, avrò degli impegni e non penso che riuscirò a fare nulla, ma non si sa mai :D ).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4170818885714399458-3767973406330422146?l=yotavga.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yotavga.blogspot.com/feeds/3767973406330422146/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4170818885714399458&amp;postID=3767973406330422146' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/3767973406330422146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/3767973406330422146'/><link rel='alternate' type='text/html' href='http://yotavga.blogspot.com/2007/10/si-ricomincia.html' title='Si ricomincia!'/><author><name>Fulvio Satta</name><uri>http://www.blogger.com/profile/11729293953092866918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_ZwXoFby8_yU/SuMfWWT9rkI/AAAAAAAAADY/9Pzinv1csVc/S220/miciocappello.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4170818885714399458.post-609231635699958960</id><published>2007-10-04T00:19:00.001+02:00</published><updated>2007-10-19T15:35:29.417+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='miei progetti'/><category scheme='http://www.blogger.com/atom/ns#' term='cassata'/><title type='text'>Pausa ed interni</title><content type='html'>Beh, per prima cosa, come avevo detto qualche giorno fa sul forum di &lt;a href="http://www.blender.it/forum/index.php"&gt;blender.it&lt;/a&gt;, sono in pausa. Quando riprenderò mi farò sentire con le novità.&lt;br /&gt;In attesa della fine della pausa ho preparato un grafico che descrive l'architettura interna di Cassata, ve lo mostro e poi ne commento ogni parte:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ZwXoFby8_yU/RwQpU_h8Q0I/AAAAAAAAAB0/ae0aeQTCtPg/s1600-h/Funzionamento.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_ZwXoFby8_yU/RwQpU_h8Q0I/AAAAAAAAAB0/ae0aeQTCtPg/s400/Funzionamento.png" alt="" id="BLOGGER_PHOTO_ID_5117260517227643714" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Consiglio di cliccarci su per ottenere l'ingrandimento.&lt;br /&gt;Per prima cosa descrivo il funzionamento di Cassata globale, poi fornirò informazioni su ogni blocco e sullo stato attuale.&lt;br /&gt;&lt;br /&gt;L'interfaccia (che comunica con l'esterno sia con altri cassata per il rendering distribuito, sia con il modeler o comunque il front end) dice che compiti svolgere al commander.&lt;br /&gt;Questo, capito qual'è il suo compito, comanda di nuovo l'interfaccia (per comandare altri cassata in rendering distribuito) ed instanzia diversi job. Ogni job è eseguito su un thread diverso.&lt;br /&gt;Il job si occupa di renderizzare una parte dell'immagine. Una volta partito tutto i job comunicheranno con la camera, e sarà lei ad invocare l'integratore montecarlo e poi scrivere sull'immagine.&lt;br /&gt;&lt;br /&gt;Ora andiamo blocco per blocco:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Interface: S'interfaccia coi front end e con altri cassata.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Lo stato attuale è già buono, anche se necessita di parecchie modifiche. Comunque è funzionante.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Commander: Decide come dividere il lavoro e che lavori fare.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Attualmente esiste, ma è davvero embrionale.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Configuration Engine: Legge il file di configurazione di Cassata e decide come influenzare le procedure di rendering e qualunque altra cosa.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Attualmente esiste e funziona correttamente, ma saranno da aggiungersi opzioni mano a mano che serviranno.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Job 1... n: Eseguono un lavoro.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Esistono, ma sono appena accennati e l'interfaccia è totalmente da rivedere.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Scene Engine: Gestisce l'intera scena, compreso il contenuto.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Praticamente non esiste.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Camera: Gestisce la camera.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Nulla ancora fatto.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Image: Dove viene generata l'immagine, il filmato o quant'altro.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Nulla ancora fatto.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Montecarlo Integrator: Esegue l'integrazione montecarlo. La magia dell'unbias avviene qui.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Nulla ancora fatto.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Shader Engine: Interpreta gli shader e li esegue.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Nulla ancora fatto.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Mesh 1... n: In realtà non solo mesh, ma qualunque altro oggetto. Fornisce la geometria del oggetto della scena.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Non ancora cominciato.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Geometry Engine: Fornisce la geometria della scena.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Lo si vede agganciato allo shader engine perché in futuro mi piacerebbe che lo fosse, ma probabilmente questo collegamento avverrà dopo Cassata 1.0.&lt;/li&gt;&lt;li&gt;Non ancora cominciato.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Material Engine: Gestisce tutti i materiali. Viene interrogato dal geometry engine quando necessario.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Non ancora cominciato.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Material 1... n: I materiali della scena. Come La camera (ed in futuro anche le geometrie) viene comandato da shader.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Non ancora cominciato.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;Come vedete il lavoro da fare è tanto e non garantisco che l'architettura interna non cambierà.&lt;br /&gt;Ma andiamo a vedere cosa non c'è nel diagramma.&lt;br /&gt;Moltissimi collegamenti non sono esattamente così o non sono presentati, per semplicità e pulizia del disegno. Ho descritto ad alto livello il funzionamento del renderer, senza scendere eccessivamente nei dettagli, e quindi volutamente ho deciso di tralasciare i dettagli nella scena.&lt;br /&gt;Oltre a questo ho evitato di mettere l'architettura a plugin e l'architettura di caching.&lt;br /&gt;La prima perché è pressocché ovunque ed il disegno sarebbe diventato troppo pesante.&lt;br /&gt;La seconda è pure quasi ovunque ed ancora non progettata, per cui non sapevo neanche cosa mettere.&lt;br /&gt;Mancano anche tutte le gestioni dei layer, soprattutto perché per ora la progettazione è troppo immatura.&lt;br /&gt;Mancano anche molti componenti minori, che in un insieme ad alto livello come questo non erano necessari.&lt;br /&gt;&lt;br /&gt;Per il resto non c'è altro da dire, alla prossima :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4170818885714399458-609231635699958960?l=yotavga.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yotavga.blogspot.com/feeds/609231635699958960/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4170818885714399458&amp;postID=609231635699958960' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/609231635699958960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/609231635699958960'/><link rel='alternate' type='text/html' href='http://yotavga.blogspot.com/2007/10/pausa-ed-interni.html' title='Pausa ed interni'/><author><name>Fulvio Satta</name><uri>http://www.blogger.com/profile/11729293953092866918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_ZwXoFby8_yU/SuMfWWT9rkI/AAAAAAAAADY/9Pzinv1csVc/S220/miciocappello.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_ZwXoFby8_yU/RwQpU_h8Q0I/AAAAAAAAAB0/ae0aeQTCtPg/s72-c/Funzionamento.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4170818885714399458.post-2654706416441565076</id><published>2007-09-20T03:36:00.000+02:00</published><updated>2007-10-19T15:35:29.418+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='miei progetti'/><category scheme='http://www.blogger.com/atom/ns#' term='cassata'/><title type='text'>Gli sviluppi degli sviluppi dello 0.1</title><content type='html'>Attualmente mi trovo in un continuo alternarsi di fasi di progettazione e di scrittura del codice, è una fase piuttosto complessa perché è il cuore di tutto cassata 0.1.&lt;br /&gt;Sono soddisfatto pienamente del lavoro svolto fino ad ora ma sono ancora all'inizio e fin quando non raggiungerò la versione 0.1 credo che cassata sarà un casino.&lt;br /&gt;Il motivo è assai semplice: cassata 0.1 contiene, in piccola parte, quasi tutti i punti della roadmap e non solo, anche molto altro. In pratica la maggior parte dei punti della roadmap non saranno un'innovazione completa, ma solo un profondo miglioramento.&lt;br /&gt;Questo fa capire qual'è la complessità della versione che sto sviluppando ora.&lt;br /&gt;&lt;br /&gt;Quello che ho fatto fino ad ora a livello di codice è solo l'abbozzo di tantissime tecnologie che per ora non servono a nulla ma che quando unite porteranno a tutta la parte più complessa della versione attuale. Tutto il codice è stato testato ad eccezione dell'architettura plug in, i cui test arriveranno quando caricherò questi plugin (fra parecchio penso).&lt;br /&gt;Quello che è stato invece fatto a livello di progettazione è molto di più.&lt;br /&gt;Ho riprogettato buona parte della rete e dell'interfaccia DBus, abbozzato le politiche dei job, diversi dettagli sulla lettura e sulla composizione di una scena.&lt;br /&gt;Ho anche approfondito alcune tecniche di accelerazione del bidirectional path tracing.&lt;br /&gt;&lt;br /&gt;A proposito della roadmap ci sono stati enormi cambiamenti fino ad ora, e molti ce ne saranno, rispetto alla vecchia. Penso che cassata 1.0 sarà più ricco di innovazioni rispetto a quelle scritte, anche se questo richiederà del tempo in più.&lt;br /&gt;Pubblicherò la nuova roadmap quando printa, ma va detto che fondamentalmente non ci sono cambiamenti "vitali" con la vecchia, ma tante piccole cose che però possono fare la differenza.&lt;br /&gt;&lt;br /&gt;Purtroppo la 0.1 è ancora piuttosto lontana (ricordo che la 0.1 sarà un renderer a tutti gli effetti, solo scarno e lento), tuttavia i progressi fatti sono notevoli.&lt;br /&gt;&lt;br /&gt;Francamente la complessità di alcune parti di questa versione mi spaventano e scoraggiano un po', ma visti i successi che ho avuto ed il fatto di avere tutto sommato le idee relativamente chiare mi confortano. In ogni caso mai come ora credo di aver bisogno del vostro tifo ;)&lt;br /&gt;&lt;br /&gt;Arrivederci alle prossime innovazioni, e mi raccomando, fate il tifo ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4170818885714399458-2654706416441565076?l=yotavga.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yotavga.blogspot.com/feeds/2654706416441565076/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4170818885714399458&amp;postID=2654706416441565076' title='2 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/2654706416441565076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/2654706416441565076'/><link rel='alternate' type='text/html' href='http://yotavga.blogspot.com/2007/09/gli-sviluppi-degli-sviluppi-dello-01.html' title='Gli sviluppi degli sviluppi dello 0.1'/><author><name>Fulvio Satta</name><uri>http://www.blogger.com/profile/11729293953092866918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_ZwXoFby8_yU/SuMfWWT9rkI/AAAAAAAAADY/9Pzinv1csVc/S220/miciocappello.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4170818885714399458.post-5112651942340608724</id><published>2007-09-11T03:34:00.000+02:00</published><updated>2007-10-19T15:35:29.418+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='miei progetti'/><category scheme='http://www.blogger.com/atom/ns#' term='cassata'/><title type='text'>Altre novità sulla progettazione</title><content type='html'>La progettazione del nuovo pezzo di cassata è quasi terminata, e presto ricomincerò a scrivere codice.&lt;br /&gt;In attesa di quest'evento descrivo altre caratteristiche di cassata degne di nota, che verranno (in parte o completamente) introdotte proprio con la nuova progettazione.&lt;br /&gt;&lt;br /&gt;Per prima cosa la precisione (questa credo che sia l'innovazione più grande, poiché non conosco altri renderer che fanno una cosa simile).&lt;br /&gt;Ogni layer (vedremo cos'è un layer tra qualche riga) può essere renderizzato a varie precisioni. L'aumento di precisione è necessario all'aumentare della complessità del rendering, ma aumentare la precisione porta un costo, il tempo di rendering. Quindi conviene mantenere la precisione la più bassa possibile per avere tempi di rendering bassi, ma non troppo bassa per non commettere errori nel rendering.&lt;br /&gt;Siccome la scelta della precisione ottimale dipende dalla complessità della scena il sistema da me scelto (scelta da parte dell'utente) credo che sia il più affidabile.&lt;br /&gt;Ecco le precisioni che ci saranno sicuramente (ma altre potrebbero aggiungersi):&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;fast &lt;- più veloce possibile mantenendo un minimo di precisione. Utile per scene di complessità bassa e medio/bassa. In molti casi è identico a single precision, ma in caso l'architettura lo permetta può avere una precisione anche più bassa.&lt;/li&gt;&lt;li&gt;single precision &lt;- viene usato il tipo float. Utile per scene di media complessità.&lt;/li&gt;&lt;li&gt;double precision &lt;- viene usato il tipo double. Utile per scene di complessità elevata.&lt;/li&gt;&lt;li&gt;personalizzata &lt;- l'utente sceglie esattamente la precisione voluta. Questo metodo è estremamente più lento dei precedenti ed è pensato solo per precisioni estremamente elevate. Raramente si avrà bisogno di tanta precisione, ma se volete realizzare l'intero sistema solare con dentro la terra le persone, ehi, siete pazzi XD Però potete :D (anche se la quantità di spazio e di tempo necessari mi sa che sono davvero proibitive, quindi insomma, potete in teoria :) )&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Un'altra cosa interessante sono i layer. Ogni layer è una scena che viene renderizzata singolarmente. In seguito (probabilmente dopo cassata 1.0) i layer verranno usati per postprocesso. In attesa di ciò però c'è già un buon modo per utilizzarli. Ispirandomi spudoratamente a Simulens™ (un componente di Maxwell Render™) è possibile cambiare, dopo aver renderizzato una scena, l'intensità di ogni gruppo di luci (ed un gruppo può contenere anche solo una luce). In questo modo è possibile, senza renderizzare alcunché, manipolare in buona quantità l'illuminazione. Non si possono quindi spostare le luci o cambiare di colore, ma si può tranquillamente cambiarne l'intensità a piacere :)&lt;br /&gt;Tutti gli oggetti sono condivisi tra i vari layer, così da non doverli ripetere di volta in volta.&lt;br /&gt;&lt;br /&gt;Un altro concetto importante sono i gruppi. Ogni oggetto potrà appartenere a più gruppi, e "vedrà" solo gli oggetti che appartengono ad uno o più gruppi scelti a piacere. La camera ha pure un insieme di gruppi che vede.&lt;br /&gt;Questo permette di fare un primo (ma non sarà comunque l'unico) approccio al rendering non fotorealistico, ed un primo avvicinamento ai fotoinserimenti, perché questa tecnica permette di fare oggetti senza ombra, oggetti che proiettano solo ombre, oggetti che vengono riflessi ma non visti, lamp che fanno luce ma non esistono nella scena e via dicendo. È possibile pensare a qualunque combinazione di effetti, in questo senso. Non è difficile mostrare che sono tutte possibili.&lt;br /&gt;&lt;br /&gt;Queste erano le cose da dire degne di nota. Inutile dire che la progettazione non è stata solo questo, questo anzi è da vedersi come un risultato molto parziale, quando sarà finita riprenderò a scrivere codice :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4170818885714399458-5112651942340608724?l=yotavga.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yotavga.blogspot.com/feeds/5112651942340608724/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4170818885714399458&amp;postID=5112651942340608724' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/5112651942340608724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/5112651942340608724'/><link rel='alternate' type='text/html' href='http://yotavga.blogspot.com/2007/09/altre-novit-sulla-progettazione.html' title='Altre novità sulla progettazione'/><author><name>Fulvio Satta</name><uri>http://www.blogger.com/profile/11729293953092866918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_ZwXoFby8_yU/SuMfWWT9rkI/AAAAAAAAADY/9Pzinv1csVc/S220/miciocappello.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4170818885714399458.post-2250204178632234094</id><published>2007-09-08T03:02:00.000+02:00</published><updated>2007-10-19T15:35:29.418+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='miei progetti'/><category scheme='http://www.blogger.com/atom/ns#' term='cassata'/><title type='text'>Primo codice per cassata</title><content type='html'>Finalmente il primo codice è scritto. Illustro cosa ho fatto fino ad ora.&lt;br /&gt;&lt;br /&gt;Sono pronte tutte le classi per la comunicazione tra vari cassata (che comunicano in TCP) e tra un cassata ed un'interfaccia grafica. Tutta l'architettura è piuttosto flessibile ed elegante, sembrerebbe (ma son sempre in agguato) bug priva di bug (è già stata testata adeguatamente) ed il metodo di comunicazione è completamente indipendente da quel che c'è sopra.&lt;br /&gt;&lt;br /&gt;Oltre a questo è pronta la classe che comanda tutti i thread di rendering, è già stata abbozzata la classe che serve a gestire un thread di rendering ed esiste già la classe (già funzionante anche se con poche opzioni) che legge (e condiziona già le altre classi) il file di configurazione del renderer.&lt;br /&gt;&lt;br /&gt;Come se non bastasse è già stato preparato un test framework (senza test attualmente) e la documentazione del codice generata con doxygen. Il tutto sono poco più di 2.000 linee di codice, attualmente (non male, considerando che ho scritto tutto in 8 giorni).&lt;br /&gt;&lt;br /&gt;L'unica scelta che potrebbe far storcere il naso a qualcuno è che ho usato una grossissima dipendenza: le Qt.&lt;br /&gt;Mi rendo conto che una dipendenza così grossa non è bello averla in un demone, però mi semplifica davvero enormemente le cose, ho potuto scrivere quello che ho scritto così velocemente e pressocché senza bug solo grazie a questa e quindi credo che lo scotto da pagare sia tutto sommato poca cosa.&lt;br /&gt;&lt;br /&gt;Per il futuro so già per sommi capi su cosa lavorare ma prima di rimettermi sul codice è necessaria una pausa di riflessione e studio, in maniera da sapere esattamente cosa implementare.&lt;br /&gt;Ho già scelto in tal proposito un'altra dipendenza, eigen, per la gestione di vettori e matrici.&lt;br /&gt;&lt;br /&gt;A presto allora con ancora altri aggiornamenti :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4170818885714399458-2250204178632234094?l=yotavga.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yotavga.blogspot.com/feeds/2250204178632234094/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4170818885714399458&amp;postID=2250204178632234094' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/2250204178632234094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/2250204178632234094'/><link rel='alternate' type='text/html' href='http://yotavga.blogspot.com/2007/09/primo-codice-per-cassata.html' title='Primo codice per cassata'/><author><name>Fulvio Satta</name><uri>http://www.blogger.com/profile/11729293953092866918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_ZwXoFby8_yU/SuMfWWT9rkI/AAAAAAAAADY/9Pzinv1csVc/S220/miciocappello.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4170818885714399458.post-61917977285158537</id><published>2007-08-29T17:21:00.000+02:00</published><updated>2007-10-19T15:35:29.419+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='miei progetti'/><category scheme='http://www.blogger.com/atom/ns#' term='cassata'/><title type='text'>Primi passi verso cassata 0.1</title><content type='html'>Visto che per ora, essendo in fase di progettazione e di studio, non scrivo codice direttamente per cassata, ho deciso di dare notizie qui degli sviluppi.&lt;br /&gt;Molte delle cose che scrivo sono ancora attualmente in progettazione, quello che scrivo non vuole rispecchiare il risultato finale con cassata, si tratta solo di quello che ho pensato fino ad ora.&lt;br /&gt;&lt;br /&gt;Il renderer sarà un demone. Questo si metterà in comunicazione, eventualmente, con altri demoni (tramite TCP?) per eseguire calcolo distribuito. I demoni eseguiranno il rendering separatamente e di tanto in tanto si sincronizzeranno tra di loro.&lt;br /&gt;La sincronizzazione prevede anche il passaggio di comandi, in maniera tale da permettere di comandare a distanza tutta la procedura di rendering.&lt;br /&gt;I singoli demoni vengono controllati tramite dbus, il che permette di integrare perfettamente il renderer nella gui di un modeler. Oltre a questo verrà creata una semplice gui (sempre che comunica tramite dbus) per usare il renderer stand alone.&lt;br /&gt;Ogni demone possiede da 0 a più thread per il rendering. Generalmente si vorranno tanti thread quante sono le CPU (od i core o quant'altro) possedute dal computer che esegue il demone. Tuttavia questo non è detto, si potrebbe ad esempio voler eseguire il demone senza thread, in modo da non compilare in locale, ma inviare semplicemente comandi da inviare alla rete.&lt;br /&gt;&lt;br /&gt;Per inquadrare le possibilità di quest'architettura mostro uno scenario tipico in uno studio grafico di grosse dimensioni (ad esempio pixar).&lt;br /&gt;Ci saranno 2 tipologie di computer: quelli dei grafici e quelli che renderizzano. Tutti eseguiranno cassata, ma i computer dei grafici avranno semplicemente un cassata che non renderizza, gli altri renderizzeranno.&lt;br /&gt;Un grafico, a questo punto, vorrà eseguire un rendering. Questo rendering verrà semplicemente inviato ai computer che renderizzano, e (a seconda della configurazione della rete) potrà partire subito il rendering, in parallelo agli altri, oppure accodarsi ed attendere che qualche altro rendering termini. Il grafico vedrebbe la sua opera come se fosse lui stesso a renderizzare, ma sfruttando tutta l'enorme rete che c'è dietro e potendo, intanto, continuare a lavorare senza rallentare il rendering.&lt;br /&gt;&lt;br /&gt;Qualunque commento, lo sapete, è ben accetto :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4170818885714399458-61917977285158537?l=yotavga.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yotavga.blogspot.com/feeds/61917977285158537/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4170818885714399458&amp;postID=61917977285158537' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/61917977285158537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/61917977285158537'/><link rel='alternate' type='text/html' href='http://yotavga.blogspot.com/2007/08/primi-passi-verso-cassata-01.html' title='Primi passi verso cassata 0.1'/><author><name>Fulvio Satta</name><uri>http://www.blogger.com/profile/11729293953092866918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_ZwXoFby8_yU/SuMfWWT9rkI/AAAAAAAAADY/9Pzinv1csVc/S220/miciocappello.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4170818885714399458.post-8347675773930262255</id><published>2007-08-27T20:06:00.000+02:00</published><updated>2007-10-19T15:35:29.419+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='miei progetti'/><category scheme='http://www.blogger.com/atom/ns#' term='cassata'/><title type='text'>Rieccomi :D</title><content type='html'>Per prima cosa dico subito che si è cambiato obbiettivo.&lt;br /&gt;&lt;br /&gt;So che vado contro quello che avevo detto, tuttavia ho deciso di passare direttamente a cassata, e non perdere altro tempo, visto che già ne è passato molto.&lt;br /&gt;Questo però vuol dire che le cose da cambiare e ristrutturare durante la lavorazione di cassata 1.0 saranno tantissime, e sconsiglio vivamente l'uso di cassata in produzione (ovvero in qualcosa che non sia un semplice test) fino all'uscita della prima versione stabile.&lt;br /&gt;Una cosa potrebbe funzionare oggi e non funzionare domani, per cui siete avvertiti.&lt;br /&gt;&lt;br /&gt;Detto questo ecco la road map attuale di cassata 1.0. È soggetta a cambiamenti anche pesanti, prendetela solo come linea di massima:&lt;br /&gt;&lt;br /&gt;0.1  struttura interna&lt;br /&gt;0.2  interfaccia XML&lt;br /&gt;0.3  acceleratori geometrici&lt;br /&gt;0.4  acceleratori d'integrazione&lt;br /&gt;0.5  shader dei materiali&lt;br /&gt;0.6  acceleratori degli shader&lt;br /&gt;0.7  shader delle texture&lt;br /&gt;0.8  interfaccia libreria&lt;br /&gt;0.9  shader delle camere&lt;br /&gt;0.10 geometrie complesse&lt;br /&gt;1.0  revisione completa e porting&lt;br /&gt;&lt;br /&gt;Il numero accanto indica a quale versione si troverà quello che si trova alla sua destra.&lt;br /&gt;Analizziamo punto per punto, per descrivere cosa verrà fatto.&lt;br /&gt;&lt;br /&gt;0.1: Verrà definita la struttura interna del renderer, a questo punto dovrei essere in grado di disegnare qualcosa, anche se molto poco. Integratori montecarlo, ray casting e mesh vengono introdotti in questa versione.&lt;br /&gt;&lt;br /&gt;0.2: Viene definita l'interfaccia XML, che sebbene sarà soggetta a forti cambiamenti (come tutto) fino alla versione 1.0, sarà il più possibile somigliante alla sua forma finale.&lt;br /&gt;&lt;br /&gt;0.3: Vengono sviluppati i primi acceleratori geometrici, per poter renderizzare anche scene geometricamente complesse.&lt;br /&gt;&lt;br /&gt;0.4: Vengono introdotti altri integratori montecarlo, ad esempio un'idea potrebbe essere l'introduzione del bidirectional ray tracing. In questa parte vengono comunque sviluppati solo gl'integratori più utili, ed in generale la 1.0 non è detto che sarà prestazionalmente poi così veloce.&lt;br /&gt;&lt;br /&gt;0.5: Si definisce l'interfaccia degli shader, quindi gli shader dei materiali (che permettono di definire BSDF ed EDF di ogni materiale). Teoricamente sarebbero rappresentabili anche le texture tramite gli shader dei materiali, ma ho volutamente deciso di separare le 2 cose, perché le texture spesso sono disegnate o generate indipendentemente dal materiale.&lt;br /&gt;&lt;br /&gt;0.6: Qua vengono definite alcune strutture atte ad accelerare gli shader, che in ogni caso possono (in caso d'impossibilità di questo punto) essere interpretate. Principalmente questa fase prevederà un JIT. Più avanti si potrebbe pensare a qualche sistema adatto ad usare gli shader tramite schede grafiche.&lt;br /&gt;&lt;br /&gt;0.7: A questo punto si generano le texture. Fino a questo punto ci sarà un minimo supporto per le texture (quasi inesistente), ma da questo punto in poi si potranno definire tutte le texture che si vogliono, sia immagini (anche di tipi sconosciuti, basta scrivere lo shader adatto) che procedurali.&lt;br /&gt;&lt;br /&gt;0.8: Viene definita un'interfaccia per il renderer. Fino a questo punto l'interfaccia esisteva già, ma è solo qua che viene definita piuttosto bene, e pressocché non soggetta a grossi cambiamenti.&lt;br /&gt;&lt;br /&gt;0.9: Viene definito il terzo (ed ultimo per quanto riguarda la versione 1.0) tipo di shader di cassata. Permette di definire camere, anche complesse. Da questo shader dipenderanno effetti comuni, come la profondità di campo o la sfocatura dovuta al movimento (DoF e motion blur), ma anche effetti più complessi, ad esempio tone mapping o qualunque altra cosa possa venire in mente. Anche lo spazio di colore dipende da questo, quindi, tanto per dire, è tramite questo che si sceglierà se avere un'immagine in bianco e nero od a colori. Teoricamente qua potrebbe starci anche quello che avviene su blender coi composite nodes, ma ho intenzione di prevedere le cose in maniera più pulita dopo la 1.0.&lt;br /&gt;&lt;br /&gt;0.10: L'aggiunta di geometrie, nei miei progetti (ambiziosissimi), sarebbe controllabile via shader. Purtroppo questa è una parte piuttosto complessa, e perciò è posticipata a dopo della versione 1.0. In attesa però di avere questa caratteristica saranno proposte (in questa versione) le geometrie più comuni, come le nurbs, le superfici di suddivisione, forse anche il displacement (che sarà sicuramente presente in versioni successive, c'è solo da chiedersi se verrà introdotto in questa :) ).&lt;br /&gt;&lt;br /&gt;1.0: Qua c'è una revisione completa del codice, per trovare bug. Inoltre viene completato, o cominciato il porting sulle piattaforme dove non funziona ancora cassata. Probabilmente windows sarà la piattaforma più complessa in proposito.&lt;br /&gt;&lt;br /&gt;Ragazzi, è uscito Cassata :D&lt;br /&gt;&lt;br /&gt;A questo punto del lavoro le potenzialità di cassata saranno già molto alte. Certo però mancheranno tantissime altre cose. Non aspiro ad avere un renderer completo dalla prima versione (probabilmente quello che voglio, a questo ritmo, si avrebbe all'incirca per cassata 3.0).&lt;br /&gt;&lt;br /&gt;Come vedete il lavoro è tanto, ma procedendo un passetto alla volta non dovrebbe essere troppo difficile. Purtroppo i tempi sono lunghi. Lavorando continuamente prevedo una media all'incirca pari ad un mese per ogni minor version (ma non sono tutte di circa un mese, ce ne sono alcune più lunghe ed altre più corte), e quindi 11 mesi per cassata 1.0. Ovviamente questo non avverrà, perché c'è sempre (come ce ne sono stati già) qualche momento di pausa in cui non lavorerò, o di grandi impegni dove lavorerò meno. Sarebbe utile quindi trovare qualcuno, ma più avanti, non a questo punto del lavoro. Da soli questo progetto è davvero lungo.&lt;br /&gt;&lt;br /&gt;È lungo, ma reggibile, anche da solo una persona. Anche ipotizzando di impiegare 5 anni (per cassata 3.0), al termine del progetto si avrebbe un renderer ottimo.&lt;br /&gt;Quello che davvero mi piacerebbe, invece, da parte di voi utenti, è la formazione di una comunità che crei shader e quant'altro. Davvero da soli non è possibile fare tutte queste cose, ma se ognuno fa un materiale quando gli serve, crea una texture procedurale, crea qualcosa che sia venuto bene, e lo rende disponibile alla comunità ben presto si creano librerie enormi di cose già pronte e riutilizzabili nei propri lavori. Come ho detto non posso fare tutto io, ma se ci si unisce si può fare molto.&lt;br /&gt;&lt;br /&gt;Visto che il post è corto (è corto, no? XD ) passo a discutere il sondaggio pubblicato.&lt;br /&gt;&lt;br /&gt;Ecco i risultati del sondaggio:&lt;br /&gt;&lt;br /&gt;Trovi utile il progetto cassata?&lt;br /&gt;&lt;br /&gt;2 voti: Non capisco come ho fatto a vivere senza&lt;br /&gt;12 voti:  Davvero utile, mi piacerebbe che uscisse il prima possibile&lt;br /&gt;2 voti:  Credo che sia un buon progetto, come ce ne sono molti&lt;br /&gt;0 voti:  Sono indifferente&lt;br /&gt;0 voti:  Non lo trovo un progetto interessante&lt;br /&gt;0 voti:  Lo trovo un progetto pessimo&lt;br /&gt;0 voti:  Vai a zappare va...&lt;br /&gt;&lt;br /&gt;Questo risultato da un lato mi dice che chi mi segue è chi è interessato al progetto. Il che è buono perché chi mi da consigli mi dice esattamente cosa vorrebbe aggiunto senza stravolgere nulla (consigliate quindi :D ), ma è anche male perché non ho pareri troppo contrastanti, che poi alla fine aiutano molto a capire se la direzione presa è quella giusta. Penso che una via di mezzo da questo punto di vista sarebbe stata meglio.&lt;br /&gt;Dall'altro lato invece l'aver voti tutti alti mi da la forza di continuare, ho il tifo :D&lt;br /&gt;&lt;br /&gt;Beh, che altro dire. Chi ha avuto la forza di leggere tutto ha il mio rispetto XD&lt;br /&gt;A presto con novità dal mondo cassata :D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4170818885714399458-8347675773930262255?l=yotavga.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yotavga.blogspot.com/feeds/8347675773930262255/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4170818885714399458&amp;postID=8347675773930262255' title='4 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/8347675773930262255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/8347675773930262255'/><link rel='alternate' type='text/html' href='http://yotavga.blogspot.com/2007/08/rieccomi-d.html' title='Rieccomi :D'/><author><name>Fulvio Satta</name><uri>http://www.blogger.com/profile/11729293953092866918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_ZwXoFby8_yU/SuMfWWT9rkI/AAAAAAAAADY/9Pzinv1csVc/S220/miciocappello.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4170818885714399458.post-1233659279605872506</id><published>2007-08-19T03:28:00.000+02:00</published><updated>2007-10-19T15:35:29.419+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='miei progetti'/><category scheme='http://www.blogger.com/atom/ns#' term='cassata'/><title type='text'>Come potete vedere: pausa</title><content type='html'>Com'è successo altre volte (credo altre 3) il progetto è attualmente in pausa, e già da un po' (almeno un paio di settimane). Penso di riprendere fra non molto, tuttavia non è una garanzia, dipende dagl'impegni.&lt;br /&gt;Comunque non pensiate che il progetto sia morto, anzi. Se ha sopravvissuto ad altre 3 pause (credo) uscendone sempre più rinvigorito non vedo perché non dovrebbe resistere a questa :)&lt;br /&gt;Presto ricomincerò a lavorare.&lt;br /&gt;&lt;br /&gt;Intanto dico cosa avevo fatto. Il porting verso le modifiche che porteranno a poter introdurre i KD Tree è quasi completo, ma permangono 2 bug da correggere. Corretti questi e fatta un'altra oretta di lavoro, bug permettendo le modifiche saranno completate e potrò passare all'implementazione dei KD Tree. La cosa che ovviamente mi spaventa di più sono quei 2 bug XD&lt;br /&gt;&lt;br /&gt;In ogni caso allora a presto, poi dirò anche che ne penso del sondaggio che ho fatto, al mio rientro :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4170818885714399458-1233659279605872506?l=yotavga.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yotavga.blogspot.com/feeds/1233659279605872506/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4170818885714399458&amp;postID=1233659279605872506' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/1233659279605872506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/1233659279605872506'/><link rel='alternate' type='text/html' href='http://yotavga.blogspot.com/2007/08/come-potete-vedere-pausa.html' title='Come potete vedere: pausa'/><author><name>Fulvio Satta</name><uri>http://www.blogger.com/profile/11729293953092866918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_ZwXoFby8_yU/SuMfWWT9rkI/AAAAAAAAADY/9Pzinv1csVc/S220/miciocappello.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4170818885714399458.post-20716547904885610</id><published>2007-07-27T17:25:00.000+02:00</published><updated>2007-10-19T15:35:29.420+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='miei progetti'/><category scheme='http://www.blogger.com/atom/ns#' term='cassata'/><title type='text'>Secondo documento</title><content type='html'>Ecco il secondo documento che scrivo.&lt;br /&gt;Probabilmente molto più interessante del precedente per i lettori, visto che parla di cosa dovrebbe essere in futuro cassata.&lt;br /&gt;&lt;br /&gt;Il link, come quello precedente, è provvisorio, verranno spostate tutte cose nel repository ufficiale di cassata più avanti, in ogni caso eccolo:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://yotavga.altervista.org/futuro.pdf"&gt;http://yotavga.altervista.org/futuro.pdf&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ancora una volta fate copia-incolla, visto che altervista controlla la provenienza quando si segue un link ed esclude qualunque percorso proveniente da un altro sito.&lt;br /&gt;&lt;br /&gt;Alla prossima :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4170818885714399458-20716547904885610?l=yotavga.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yotavga.blogspot.com/feeds/20716547904885610/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4170818885714399458&amp;postID=20716547904885610' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/20716547904885610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/20716547904885610'/><link rel='alternate' type='text/html' href='http://yotavga.blogspot.com/2007/07/secondo-documento.html' title='Secondo documento'/><author><name>Fulvio Satta</name><uri>http://www.blogger.com/profile/11729293953092866918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_ZwXoFby8_yU/SuMfWWT9rkI/AAAAAAAAADY/9Pzinv1csVc/S220/miciocappello.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4170818885714399458.post-3263507524128904766</id><published>2007-07-25T22:23:00.000+02:00</published><updated>2007-10-19T15:35:29.420+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='miei progetti'/><category scheme='http://www.blogger.com/atom/ns#' term='cassata'/><title type='text'>Lunga ristrutturazione per torrone</title><content type='html'>Ho finito lo studio che mi serviva per i kd-tree. Ora però, per poter implementare tutto ciò che ho imparato e pensato, e lasciare anche spazio per nuove cose, la struttura interna di torrone non è più sufficente. È necessario ristrutturarlo profondamente e riscriverne alcune componenti.&lt;br /&gt;Il lavoro comincerà oggi stesso, e penso che occuperà 1-2 settimane.&lt;br /&gt;Però fra una settimana parto (per pochi giorni), quindi mettete in conto 3 settimane come tempo massimo.&lt;br /&gt;Vi farò sapere delle novità più avanti.&lt;br /&gt;Alla prossima :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4170818885714399458-3263507524128904766?l=yotavga.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yotavga.blogspot.com/feeds/3263507524128904766/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4170818885714399458&amp;postID=3263507524128904766' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/3263507524128904766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/3263507524128904766'/><link rel='alternate' type='text/html' href='http://yotavga.blogspot.com/2007/07/lunga-ristrutturazione-per-torrone.html' title='Lunga ristrutturazione per torrone'/><author><name>Fulvio Satta</name><uri>http://www.blogger.com/profile/11729293953092866918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_ZwXoFby8_yU/SuMfWWT9rkI/AAAAAAAAADY/9Pzinv1csVc/S220/miciocappello.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4170818885714399458.post-8988218609310284271</id><published>2007-07-22T20:54:00.000+02:00</published><updated>2007-10-19T15:35:29.420+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='miei progetti'/><category scheme='http://www.blogger.com/atom/ns#' term='cassata'/><title type='text'>Il primo articolo sull'architettura di cassata</title><content type='html'>Ho completato il primo articolo sull'architettura di cassata. Sono solo alcune idee, e come tali vanno prese. Nulla di definitivo ne altro. Per chi volesse leggerlo:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://yotavga.altervista.org/gestione_memoria.pdf"&gt;http://yotavga.altervista.org/gestione_memoria.pdf&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Si consiglia di fare copia-incolla del link, poiché altervista fa dei controlli sulla provenienza e non mostra i link se presi da altri siti.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4170818885714399458-8988218609310284271?l=yotavga.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yotavga.blogspot.com/feeds/8988218609310284271/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4170818885714399458&amp;postID=8988218609310284271' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/8988218609310284271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/8988218609310284271'/><link rel='alternate' type='text/html' href='http://yotavga.blogspot.com/2007/07/il-primo-articolo-sullarchitettura-di.html' title='Il primo articolo sull&apos;architettura di cassata'/><author><name>Fulvio Satta</name><uri>http://www.blogger.com/profile/11729293953092866918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_ZwXoFby8_yU/SuMfWWT9rkI/AAAAAAAAADY/9Pzinv1csVc/S220/miciocappello.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4170818885714399458.post-4187301647643712520</id><published>2007-07-20T15:19:00.000+02:00</published><updated>2007-10-19T15:35:29.421+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='miei progetti'/><category scheme='http://www.blogger.com/atom/ns#' term='cassata'/><title type='text'>A proposito dei ritardi su cassata</title><content type='html'>So di non dovere spiegazioni a nessuno, ma questo post vuole segnalare che il progetto non è morto.&lt;br /&gt;Ho molti impegni oltre questo progetto, il che ha causato quasi un fermo di cassata, ma solo temporaneo, conto di riprendere nel giro di al massimo qualche settimana, salvo imprevisti.&lt;br /&gt;Mi spiace che il progetto debba subire simili ritardi, ma essendo solo e non facendo solo questo non posso mandare il progetto avanti ogni giorno.&lt;br /&gt;Comunque le idee che mi vengono e ronzano in testa non si fermano ;)&lt;br /&gt;A presto quindi :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4170818885714399458-4187301647643712520?l=yotavga.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yotavga.blogspot.com/feeds/4187301647643712520/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4170818885714399458&amp;postID=4187301647643712520' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/4187301647643712520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/4187301647643712520'/><link rel='alternate' type='text/html' href='http://yotavga.blogspot.com/2007/07/proposito-dei-ritardi-su-cassata.html' title='A proposito dei ritardi su cassata'/><author><name>Fulvio Satta</name><uri>http://www.blogger.com/profile/11729293953092866918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_ZwXoFby8_yU/SuMfWWT9rkI/AAAAAAAAADY/9Pzinv1csVc/S220/miciocappello.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4170818885714399458.post-2101052772183350697</id><published>2007-07-12T16:42:00.000+02:00</published><updated>2007-10-19T15:35:29.421+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='miei progetti'/><category scheme='http://www.blogger.com/atom/ns#' term='cassata'/><title type='text'>A proposito di cassata 1.0</title><content type='html'>Ho deciso di scrivere un post un po' diverso dai classici post che scrivo in genere, per descrivere cosa stò facendo ora e cosa penso di fare per il futuro.&lt;br /&gt;&lt;br /&gt;Qualcuno dei lettori (e ce ne sono, a me sembra che siano quasi tutti su blender.it XD ) probabilmente sa qual'è l'importanza di un'interfaccia, ma ne parlerò qui per spiegarlo anche a chi non lo sapesse.&lt;br /&gt;Innanzitutto va detto che per interfaccia non intendo gui. Intendo quello strato che interpreta le scene e comunica con gli shader.&lt;br /&gt;&lt;br /&gt;Una buona interfaccia è indispensabile, perché deve rimanere a lungo. Immaginate che cosa succederebbe se di punto in bianco cambio il modo in cui si salva una scena. Chiunque stia facendo dei lavori ci penserà 100 volte prima di decidere di aggiornare. Questo è un grave problema per il progresso tecnologico del renderer.&lt;br /&gt;&lt;br /&gt;Perciò ciò che mi serve è un'interfaccia che sia stabile (dovrà cambiare profondamente solo in casi rarissimi), flessibile (dovrò poter sviluppare tante cose nel frattempo) e che non leda le prestazioni.&lt;br /&gt;Fare un'interfaccia così necessita anche di sapere per lo meno per sommi capi verso che direzione potrà espandersi internamente il renderer, e quindi diventa tutto un equilibrio di difficile soluzione.&lt;br /&gt;&lt;br /&gt;Ho intenzione di fare uscire diverse versioni di cassata (la prima sarà la 0.1) ritenute relativamente stabili, e man mano sempre più complete, con l'unico limite di avere un'interfaccia ancora da stabilizzarsi.&lt;br /&gt;La versione 1.0 invece, infine, avrà un'interfaccia stabile, ma uscirà fra parecchio tempo (anni?).&lt;br /&gt;Questo ovviamente non vuol dire che cassata sarà inusabile, solo che mi prenderò diverso tempo per la stabilizzazione dell'interfaccia. Nel frattempo già cassata sarà utilizzabilissimo, e chissà, magari avrà una discreta cerchia di utenti.&lt;br /&gt;&lt;br /&gt;Prima di far uscire comunque cassata 0.1 voglio almeno avere una vaga idea di come sarà l'interfaccia. Per farlo devo sperimentare e provare tante cose, perché come detto l'architettura interna influenzia anche la progettazione dell'interfaccia. Questo è quello che stò facendo attualmente.&lt;br /&gt;&lt;br /&gt;Per quanto riguarda l'uscita di cassata 0.1, come data indicativa, e soggetta comunque anche a cambiamenti notevoli (non prendetela seriamente, è solo un'indicazione) vorrei farla uscire intorno a fine 2007 - inizio 2008. Raggiunta cassata 0.1 vorrei che già fosse possibile renderizzare scene comuni, con la disponibilità di almeno shader per costruire materiali abbastanza diffusi in natura (anche magari approssimati ma con approssimazioni decenti) e non troppo lento. Per intenderci vorrei riuscire, per lo meno, ad ottenere immagini qualitativamente (ma probabilmente non prestazionalmente) al livello di indigo 0.5.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4170818885714399458-2101052772183350697?l=yotavga.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yotavga.blogspot.com/feeds/2101052772183350697/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4170818885714399458&amp;postID=2101052772183350697' title='2 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/2101052772183350697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/2101052772183350697'/><link rel='alternate' type='text/html' href='http://yotavga.blogspot.com/2007/07/proposito-di-cassata-10.html' title='A proposito di cassata 1.0'/><author><name>Fulvio Satta</name><uri>http://www.blogger.com/profile/11729293953092866918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_ZwXoFby8_yU/SuMfWWT9rkI/AAAAAAAAADY/9Pzinv1csVc/S220/miciocappello.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4170818885714399458.post-2219307686472770842</id><published>2007-07-04T22:35:00.000+02:00</published><updated>2007-07-04T22:50:23.291+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='miei progetti'/><category scheme='http://www.blogger.com/atom/ns#' term='rendering'/><category scheme='http://www.blogger.com/atom/ns#' term='cassata'/><title type='text'>Ma che bel dipinto!</title><content type='html'>Molte modifiche. Diversi bug sono stati corretti, in particolare uno sull'illuminazione globale ed uno sul conto dei raggi.&lt;br /&gt;Ma soprattutto ora funzionano le texture :D&lt;br /&gt;&lt;br /&gt;Per l'occasione, per mostrare quanto influenzia l'illuminazione indiretta, ho prodotto 2 rendering, identici eccetto che per il calcolo dell'illuminazione indiretta:&lt;br /&gt;&lt;br /&gt;Innanzitutto mostro unimmagine senza illuminazione indiretta, durata circa 6 minuti e mezzo con un consumo della CPU del 75% (1.080.000 raggi):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ZwXoFby8_yU/RowH2aZEDbI/AAAAAAAAAA0/92uOR0sGnns/s1600-h/prova_def11a.png"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_ZwXoFby8_yU/RowH2aZEDbI/AAAAAAAAAA0/92uOR0sGnns/s400/prova_def11a.png" alt="" id="BLOGGER_PHOTO_ID_5083446710773222834" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Quella invece completa è durata poco meno di 2 ore e mezza, con un consumo della CPU dell'80% (33.777.037.841.920 raggi):&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ZwXoFby8_yU/RowGf6ZEDaI/AAAAAAAAAAs/nvtMry1keSU/s1600-h/prova_def11.png"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_ZwXoFby8_yU/RowGf6ZEDaI/AAAAAAAAAAs/nvtMry1keSU/s400/prova_def11.png" alt="" id="BLOGGER_PHOTO_ID_5083445224714538402" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;Ho voluto mettere il consumo della CPU e lo metterò d'ora in poi perché spesso faccio altre cose e falso i tempi altrimenti a seconda di cosa faccio mentre renderizzo. In particolare i vecchi rendering erano spesso sopra il 90% (spesso abbondantemente).&lt;br /&gt;&lt;br /&gt;Comunque come si capisce lo sfondo è una texture, precisamente un'immagine OpenEXR.&lt;br /&gt;&lt;br /&gt;Il codice volendo può usare tranquillamente già texture procedurali e quant'altro, e c'è un'implementazione completa dell'uv mapping.&lt;br /&gt;&lt;br /&gt;Alla prossima :)&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4170818885714399458-2219307686472770842?l=yotavga.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yotavga.blogspot.com/feeds/2219307686472770842/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4170818885714399458&amp;postID=2219307686472770842' title='2 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/2219307686472770842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/2219307686472770842'/><link rel='alternate' type='text/html' href='http://yotavga.blogspot.com/2007/07/ma-che-bel-dipinto.html' title='Ma che bel dipinto!'/><author><name>Fulvio Satta</name><uri>http://www.blogger.com/profile/11729293953092866918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_ZwXoFby8_yU/SuMfWWT9rkI/AAAAAAAAADY/9Pzinv1csVc/S220/miciocappello.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_ZwXoFby8_yU/RowH2aZEDbI/AAAAAAAAAA0/92uOR0sGnns/s72-c/prova_def11a.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4170818885714399458.post-3583888838141957131</id><published>2007-06-26T22:53:00.000+02:00</published><updated>2007-10-19T15:35:29.421+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='miei progetti'/><category scheme='http://www.blogger.com/atom/ns#' term='cassata'/><title type='text'>Qualche modifica interessante</title><content type='html'>Sono stato via per via della linea, ora mancherò 6 giorni perché domani parto, ma intanto vi tengo informati sui pochi progressi su torrone (c'ho lavorato solo ieri, causa studio).&lt;br /&gt;&lt;br /&gt;Molte ristrutturazioni, qualche piccola ottimizzazione (da poco, sembrerebbe inferiore al 10%) ma soprattutto ristrutturazioni interne che mi permettono, finalmente, di poter modificare il codice in maniera da poter inserire informazioni locali sulla mesh (e non solo globali). Questo vuol dire texture ovviamente. Ma le texture verranno in seguito (prossima cosa da fare). Inoltre credo che farò diverse altre cosette tramite queste modifiche.&lt;br /&gt;Ho cominciato a studiare pure le libOpenEXR per il supporto delle texture (ebbene si, supporto alle HDRi fin da fra poco :) ).&lt;br /&gt;&lt;br /&gt;Inoltre è arrivato il libro, che ho cominciato a leggere. Molto interessante, ho preso diversi spunti già e penso che imparerò molto. Finita la faccenda texture mi metterò, come promesso, a fare un kd-tree.&lt;br /&gt;&lt;br /&gt;Nient'altro da aggiungere, ci si vedrà a presto, dopo che sarò tornato :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4170818885714399458-3583888838141957131?l=yotavga.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yotavga.blogspot.com/feeds/3583888838141957131/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4170818885714399458&amp;postID=3583888838141957131' title='2 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/3583888838141957131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/3583888838141957131'/><link rel='alternate' type='text/html' href='http://yotavga.blogspot.com/2007/06/qualche-modifica-interessante.html' title='Qualche modifica interessante'/><author><name>Fulvio Satta</name><uri>http://www.blogger.com/profile/11729293953092866918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_ZwXoFby8_yU/SuMfWWT9rkI/AAAAAAAAADY/9Pzinv1csVc/S220/miciocappello.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4170818885714399458.post-1200509075987863910</id><published>2007-06-08T17:23:00.000+02:00</published><updated>2007-06-11T21:50:10.586+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='miei progetti'/><category scheme='http://www.blogger.com/atom/ns#' term='rendering'/><category scheme='http://www.blogger.com/atom/ns#' term='cassata'/><title type='text'>Nuovo rendering e notizie varie</title><content type='html'>Son stato via perché avevo internet giù.&lt;br /&gt;&lt;br /&gt;Ho implementato delle nuove ottomizzazioni, che permettono di avere anche più di 2 volte il rendering più veloce in molti casi. Il rendering che mostro ora è durato poco meno di 2 ore:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ZwXoFby8_yU/RmmbV92oUZI/AAAAAAAAAAk/g1FEwtYtHik/s1600-h/prova_def10.png"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_ZwXoFby8_yU/RmmbV92oUZI/AAAAAAAAAAk/g1FEwtYtHik/s400/prova_def10.png" alt="" id="BLOGGER_PHOTO_ID_5073757256892830098" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Il numero di raggi valutati per questo rendering è ben 7.711.423.254.272 (ora posso controllarlo grazie ad una modifica al renderer). Attenzione che però i raggi non sono tutti indipendenti tra di loro, al contrario il numero di raggi totalmente indipendenti tra di loro è poco più di un milione.&lt;br /&gt;&lt;br /&gt;Ora mi fermerò, sono in attesa di un libro, &lt;a href="http://www.amazon.com/Physically-Based-Rendering-Implementation-Interactive/dp/012553180X"&gt;Physically Based Rendering: From Theory to Implementation&lt;/a&gt;, che mi permetterà di approfondire ora varie cose sulle geometrie, in futuro anche diversi aspetti sui materiali e su diverse altre cose.&lt;br /&gt;&lt;br /&gt;Alla prossima.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4170818885714399458-1200509075987863910?l=yotavga.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yotavga.blogspot.com/feeds/1200509075987863910/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4170818885714399458&amp;postID=1200509075987863910' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/1200509075987863910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/1200509075987863910'/><link rel='alternate' type='text/html' href='http://yotavga.blogspot.com/2007/06/nuovo-rendering-e-notizie-varie.html' title='Nuovo rendering e notizie varie'/><author><name>Fulvio Satta</name><uri>http://www.blogger.com/profile/11729293953092866918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_ZwXoFby8_yU/SuMfWWT9rkI/AAAAAAAAADY/9Pzinv1csVc/S220/miciocappello.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ZwXoFby8_yU/RmmbV92oUZI/AAAAAAAAAAk/g1FEwtYtHik/s72-c/prova_def10.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4170818885714399458.post-2903267764268773879</id><published>2007-06-04T20:03:00.000+02:00</published><updated>2007-10-19T15:35:29.422+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='miei progetti'/><category scheme='http://www.blogger.com/atom/ns#' term='cassata'/><title type='text'>Ora si sta al calduccio! - supplemento 1</title><content type='html'>Dimenticavo, i tempi di rendering dell'immagine mostrata sono intorno alle 2 ore e mezza :)&lt;br /&gt;&lt;br /&gt;A che ci sono do qualche altro dato: per ogni pixel vengono sparati 4 raggi col jittering, l'illuminazione diretta è calcolata con 32 raggi, quindi ogni raggio quando sbatte si può dividere in massimo 16 raggi, con una probabilità di venire assorbito proporzionale (ma in parte sceglibile dall'utente) al BSDF ed all'angolazione del raggio (questo per accelerare la convergenza).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4170818885714399458-2903267764268773879?l=yotavga.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yotavga.blogspot.com/feeds/2903267764268773879/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4170818885714399458&amp;postID=2903267764268773879' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/2903267764268773879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/2903267764268773879'/><link rel='alternate' type='text/html' href='http://yotavga.blogspot.com/2007/06/ora-si-sta-al-calduccio-supplemento-1.html' title='Ora si sta al calduccio! - supplemento 1'/><author><name>Fulvio Satta</name><uri>http://www.blogger.com/profile/11729293953092866918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_ZwXoFby8_yU/SuMfWWT9rkI/AAAAAAAAADY/9Pzinv1csVc/S220/miciocappello.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4170818885714399458.post-4057969212232729472</id><published>2007-06-04T17:14:00.000+02:00</published><updated>2007-06-04T17:18:29.911+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='miei progetti'/><category scheme='http://www.blogger.com/atom/ns#' term='rendering'/><category scheme='http://www.blogger.com/atom/ns#' term='cassata'/><title type='text'>Ora si sta al calduccio!</title><content type='html'>Fatto il rendering, ho chiuso la camera un po' indietro (eh, si sta al calduccio :D ), il rendering non è di altissima qualità ma è più decente. Si vede il tetto più chiaro ed anche l'ombra risulta più luminosa. Inoltre la luminosità è salita anche perché ho aumentato l'emissione luminosa dell'area light presente sul tetto.&lt;br /&gt;&lt;br /&gt;Buona visione:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_ZwXoFby8_yU/RmQs09vbb-I/AAAAAAAAAAU/2nQdywfgfaw/s1600-h/prova_def10.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_ZwXoFby8_yU/RmQs09vbb-I/AAAAAAAAAAU/2nQdywfgfaw/s400/prova_def10.png" alt="" id="BLOGGER_PHOTO_ID_5072228368764334050" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4170818885714399458-4057969212232729472?l=yotavga.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yotavga.blogspot.com/feeds/4057969212232729472/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4170818885714399458&amp;postID=4057969212232729472' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/4057969212232729472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/4057969212232729472'/><link rel='alternate' type='text/html' href='http://yotavga.blogspot.com/2007/06/ora-si-sta-al-calduccio.html' title='Ora si sta al calduccio!'/><author><name>Fulvio Satta</name><uri>http://www.blogger.com/profile/11729293953092866918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_ZwXoFby8_yU/SuMfWWT9rkI/AAAAAAAAADY/9Pzinv1csVc/S220/miciocappello.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_ZwXoFby8_yU/RmQs09vbb-I/AAAAAAAAAAU/2nQdywfgfaw/s72-c/prova_def10.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4170818885714399458.post-3013052932236523016</id><published>2007-06-04T02:15:00.000+02:00</published><updated>2007-10-19T15:35:29.422+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='miei progetti'/><category scheme='http://www.blogger.com/atom/ns#' term='cassata'/><title type='text'>Conferme sull'illuminazione globale</title><content type='html'>Il titolo non è simpatico come i precedenti, ma mica posso inventarmene uno ogni volta :D&lt;br /&gt;&lt;br /&gt;Dunque, do la conferma che tutti i test sono passati, e sembrerebbe che l'illuminazione globale funzioni bene.&lt;br /&gt;&lt;br /&gt;Ho svolto diverse modifiche al renderer, sebbene piccole, che permettono ora una velocizzazione del rendering di più del 30%, ed inoltre ho modificato la scena, che ora da molto più valore al lavoro svolto.&lt;br /&gt;&lt;br /&gt;Purtroppo ottenere un'immagine buona non è cosa semplice, sembra che il rendering duri più di 8 ore, davvero troppo.&lt;br /&gt;Stò valutando se è il caso di eseguire domani un rendering apposto, oppure fare un rendering decente ma non ottimo, domani deciderò.&lt;br /&gt;&lt;br /&gt;Finita questa parte credo che i ritmi scenderanno temporaneamente un po', apparte i vari altri impegni ho da studiare ed approfondire lo studio dei kd-tree, che conosco molto poco, e che (per chi non fosse pratico di strutture dati simili) permetteranno di velocizzare molte operazioni con le geometrie, specialmente per quanto riguarda le collisioni dei raggi sulle superfici.&lt;br /&gt;&lt;br /&gt;Molto è ancora da fare, ma onestamente non credevo di arrivare a risultati così buoni in così poco tempo.&lt;br /&gt;Non conto che durerà ancora a lungo XD Però finché dura meglio :D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4170818885714399458-3013052932236523016?l=yotavga.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yotavga.blogspot.com/feeds/3013052932236523016/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4170818885714399458&amp;postID=3013052932236523016' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/3013052932236523016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/3013052932236523016'/><link rel='alternate' type='text/html' href='http://yotavga.blogspot.com/2007/06/conferme-sullilluminazione-globale.html' title='Conferme sull&apos;illuminazione globale'/><author><name>Fulvio Satta</name><uri>http://www.blogger.com/profile/11729293953092866918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_ZwXoFby8_yU/SuMfWWT9rkI/AAAAAAAAADY/9Pzinv1csVc/S220/miciocappello.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4170818885714399458.post-2164398836229015458</id><published>2007-06-03T03:27:00.000+02:00</published><updated>2007-06-09T02:37:18.599+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='miei progetti'/><category scheme='http://www.blogger.com/atom/ns#' term='rendering'/><category scheme='http://www.blogger.com/atom/ns#' term='cassata'/><title type='text'>E luce fu!</title><content type='html'>Qualche aggiornamento.&lt;br /&gt;&lt;br /&gt;Per prima cosa ho completato la gestione dell'illuminazione indiretta, ma il renderer risulta molto lento.&lt;br /&gt;Per chi mi seguisse da qualche tempo saprà che è una cosa che ripeto sempre :D Il renderer attualmente è incredibilmente più veloce che all'inizio, ma risulta ancora molto lento :)&lt;br /&gt;&lt;br /&gt;Domani farò numerosi test per vedere se è tutto ok, quindi vi darò la conferma o smentita che sia tutto apposto, ma per ora sembra tutto perfetto.&lt;br /&gt;&lt;br /&gt;Vi mostro un rendering un po' rumoroso, durato un'ora e mezza (i tempi cominciano a rialzarsi, come si vede):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ZwXoFby8_yU/RmIZntvbb9I/AAAAAAAAAAM/zKXshtZaaVc/s1600-h/prova_def9.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_ZwXoFby8_yU/RmIZntvbb9I/AAAAAAAAAAM/zKXshtZaaVc/s400/prova_def9.png" alt="" id="BLOGGER_PHOTO_ID_5071644300456718290" border="0" /&gt;&lt;/a&gt;Faccio notare un po' di cose altrimenti difficili da vedere.&lt;br /&gt;&lt;br /&gt;La parte centrale dell'ombra non è più nera, ma grigia, merito dei riflessi sulle pareti :D&lt;br /&gt;&lt;br /&gt;Le parti più illuminate sono quelle più in fondo, questo perché mancando la parete più vicina alla camera, i raggi che si trovano vicini alla camera tendono a fuggire via, nel vuoto. È possibile notare (alzate la luminosità se non riuscite a vederlo) che la parte più in fondo del tetto è un po' più chiara. Nulla di che, ma si vede che ci sono i riflessi.&lt;br /&gt;&lt;br /&gt;Il corpo fluttuante, di sotto, è completamente assorbente, quindi non riflette nulla.&lt;br /&gt;&lt;br /&gt;Per il resto non c'è altro da dire, farò un rendering che lo valorizzi di più, ho già alzato la luminosità, domani farò altre prove.&lt;br /&gt;&lt;br /&gt;Al prossimo post :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4170818885714399458-2164398836229015458?l=yotavga.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yotavga.blogspot.com/feeds/2164398836229015458/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4170818885714399458&amp;postID=2164398836229015458' title='2 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/2164398836229015458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/2164398836229015458'/><link rel='alternate' type='text/html' href='http://yotavga.blogspot.com/2007/06/qualche-aggiornamento.html' title='E luce fu!'/><author><name>Fulvio Satta</name><uri>http://www.blogger.com/profile/11729293953092866918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_ZwXoFby8_yU/SuMfWWT9rkI/AAAAAAAAADY/9Pzinv1csVc/S220/miciocappello.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_ZwXoFby8_yU/RmIZntvbb9I/AAAAAAAAAAM/zKXshtZaaVc/s72-c/prova_def9.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4170818885714399458.post-8975061714020498243</id><published>2007-06-01T16:53:00.000+02:00</published><updated>2007-10-19T15:35:29.422+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='miei progetti'/><category scheme='http://www.blogger.com/atom/ns#' term='cassata'/><title type='text'>Ma non diciamo cassate!</title><content type='html'>Salve a tutti.&lt;br /&gt;&lt;br /&gt;Questo blog nasce per l'esigenza di trovare un posto per parlare di un mio progetto, cassata, ma penso che lo utilizzerò anche ad altri scopi. Per chi fosse interessato solo a cassata potrà visionare i post etichettati "cassata", e tralasciare gli altri.&lt;br /&gt;&lt;br /&gt;Per chi non sapesse che cosa è cassata:&lt;br /&gt;&lt;br /&gt;Si tratta di un renderer, per la precisione nasce come renderer unbias, ma verranno introdotte (a scelta dell'utente, e solo quando lo ritiene necessario) anche tecniche bias ma molto efficaci per aumentare le prestazioni del renderer, specialmente in casi limite (molte luci, scene complesse, subsrface scattering e via dicendo), oppure nei casi in cui un dato modello non si riesca a rendere unbias (materiali a comportamento non lineare e via dicendo).&lt;br /&gt;&lt;br /&gt;Il renderer è pieno di caratteristiche interessanti, e sarà in grandissima parte espandibile tramite shader. Soprattutto si tratterà, a quanto ne so (se qualcuno sapesse diversamente che commenti, orsù :D ), del primo renderer open source unbias adatto alla produzione (miro alto :D ).&lt;br /&gt;&lt;br /&gt;Per chi volesse saperne di più qua c'è una discussione approfondita di cos'è stato fatto fino ad ora:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.blender.it/forum/viewtopic.php?t=5422&amp;start=0"&gt;http://www.blender.it/forum/viewtopic.php?t=5422&amp;amp;start=0&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;purtroppo è necessario essere loggati al forum di &lt;a href="http://www.blender.it/"&gt;blender.it&lt;/a&gt; per vedere il post.&lt;br /&gt;&lt;br /&gt;Si rimanda anche a&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sourceforge.net/projects/cassata"&gt;http://sourceforge.net/projects/cassata&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;per conoscere altri dettagli.&lt;br /&gt;&lt;br /&gt;Attualmente, al contrario di quanto scritto su sourceforge, il progetto è passato (da poco) dalla LGPL alla GPL.&lt;br /&gt;&lt;br /&gt;Sebbene d'ora in poi tutte le novità passeranno di qui, continuerò a pubblicare sul forum di &lt;a href="http://www.blender.it/"&gt;blender.it&lt;/a&gt; le cose più importanti o che ritengo sia il caso pubblicare.&lt;br /&gt;Stò anche valutando l'ipotesi di fare un riassunto di ciò che c'è scritto su &lt;a href="http://www.blender.it/"&gt;blender.it&lt;/a&gt;, o persino un mirror, da inserire qui, con tanto d'immagini, per chi non volesse registrarsi.&lt;br /&gt;&lt;br /&gt;Intanto do alcune informazioni fondamentali che risultano utili a chi non ha seguito affatto il progetto fino ad ora.&lt;br /&gt;&lt;br /&gt;Al momento è in lavorazione torrone, un renderer che viene utilizzato per fare esperimenti prima d'introdurli in cassata. È scritto in Python, Pyrex e C++, in questo momento, ma ho eseguito diversi porting e non escludo di cambiare ancora linguaggi.&lt;br /&gt;&lt;br /&gt;Torrone è attualmente lento, ma ci sono state enormi velocizzazioni, che raggiungono, nel caso limite provato, fino a quasi 360 volte la velocità iniziale.&lt;br /&gt;&lt;br /&gt;Al momento torrone è in grado di calcolare solo l'illuminazione diretta, ma nei prossimi giorni lavorerò proprio su questo, ottenendo il calcolo dell'illuminazione globale.&lt;br /&gt;&lt;br /&gt;L'ultima questione è quella di scrivere post in inglese. È una cosa che sarebbe utile, magari scrivendo i post bilingua, ma per il momento mi astengo dal farlo.&lt;br /&gt;In seguito potrò cambiare idea e scrivere post bilingua, od inglese direttamente, ma credo che prima cassata dovrà prendere un po' di popolarità.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4170818885714399458-8975061714020498243?l=yotavga.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yotavga.blogspot.com/feeds/8975061714020498243/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4170818885714399458&amp;postID=8975061714020498243' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/8975061714020498243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4170818885714399458/posts/default/8975061714020498243'/><link rel='alternate' type='text/html' href='http://yotavga.blogspot.com/2007/06/ma-non-diciamo-cassate.html' title='Ma non diciamo cassate!'/><author><name>Fulvio Satta</name><uri>http://www.blogger.com/profile/11729293953092866918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_ZwXoFby8_yU/SuMfWWT9rkI/AAAAAAAAADY/9Pzinv1csVc/S220/miciocappello.jpg'/></author><thr:total>0</thr:total></entry></feed>
