martedì 26 giugno 2007

Qualche modifica interessante

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).

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.
Ho cominciato a studiare pure le libOpenEXR per il supporto delle texture (ebbene si, supporto alle HDRi fin da fra poco :) ).

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.

Nient'altro da aggiungere, ci si vedrà a presto, dopo che sarò tornato :)

venerdì 8 giugno 2007

Nuovo rendering e notizie varie

Son stato via perché avevo internet giù.

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:

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.

Ora mi fermerò, sono in attesa di un libro, Physically Based Rendering: From Theory to Implementation, che mi permetterà di approfondire ora varie cose sulle geometrie, in futuro anche diversi aspetti sui materiali e su diverse altre cose.

Alla prossima.

lunedì 4 giugno 2007

Ora si sta al calduccio! - supplemento 1

Dimenticavo, i tempi di rendering dell'immagine mostrata sono intorno alle 2 ore e mezza :)

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).

Ora si sta al calduccio!

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.

Buona visione:

Conferme sull'illuminazione globale

Il titolo non è simpatico come i precedenti, ma mica posso inventarmene uno ogni volta :D

Dunque, do la conferma che tutti i test sono passati, e sembrerebbe che l'illuminazione globale funzioni bene.

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.

Purtroppo ottenere un'immagine buona non è cosa semplice, sembra che il rendering duri più di 8 ore, davvero troppo.
Stò valutando se è il caso di eseguire domani un rendering apposto, oppure fare un rendering decente ma non ottimo, domani deciderò.

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.

Molto è ancora da fare, ma onestamente non credevo di arrivare a risultati così buoni in così poco tempo.
Non conto che durerà ancora a lungo XD Però finché dura meglio :D

domenica 3 giugno 2007

E luce fu!

Qualche aggiornamento.

Per prima cosa ho completato la gestione dell'illuminazione indiretta, ma il renderer risulta molto lento.
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 :)

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.

Vi mostro un rendering un po' rumoroso, durato un'ora e mezza (i tempi cominciano a rialzarsi, come si vede):

Faccio notare un po' di cose altrimenti difficili da vedere.

La parte centrale dell'ombra non è più nera, ma grigia, merito dei riflessi sulle pareti :D

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.

Il corpo fluttuante, di sotto, è completamente assorbente, quindi non riflette nulla.

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.

Al prossimo post :)

venerdì 1 giugno 2007

Ma non diciamo cassate!

Salve a tutti.

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.

Per chi non sapesse che cosa è cassata:

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).

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 ).

Per chi volesse saperne di più qua c'è una discussione approfondita di cos'è stato fatto fino ad ora:

http://www.blender.it/forum/viewtopic.php?t=5422&start=0

purtroppo è necessario essere loggati al forum di blender.it per vedere il post.

Si rimanda anche a

http://sourceforge.net/projects/cassata

per conoscere altri dettagli.

Attualmente, al contrario di quanto scritto su sourceforge, il progetto è passato (da poco) dalla LGPL alla GPL.

Sebbene d'ora in poi tutte le novità passeranno di qui, continuerò a pubblicare sul forum di blender.it le cose più importanti o che ritengo sia il caso pubblicare.
Stò anche valutando l'ipotesi di fare un riassunto di ciò che c'è scritto su blender.it, o persino un mirror, da inserire qui, con tanto d'immagini, per chi non volesse registrarsi.

Intanto do alcune informazioni fondamentali che risultano utili a chi non ha seguito affatto il progetto fino ad ora.

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.

Torrone è attualmente lento, ma ci sono state enormi velocizzazioni, che raggiungono, nel caso limite provato, fino a quasi 360 volte la velocità iniziale.

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.

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.
In seguito potrò cambiare idea e scrivere post bilingua, od inglese direttamente, ma credo che prima cassata dovrà prendere un po' di popolarità.