In questo breve tutorial, vi parlo della funzionalità Texture Caching per Cycles introdotta in Blender 5.2, che consente una migliore gestione della memoria in fase di rendering e, quindi, di renderizzare scene particolarmente ricche di Textures.
La versione video di questo tutorial non è attualmente disponibile in questa lingua. Qui sotto puoi guardare la versione in inglese con sottotitoli; sotto il video trovi la trascrizione tradotta in italiano.
Trascrizione del video
Salve a tutti! In questo breve tutorial, vi parlo della funzionalità Texture Caching per Cycles introdotta in Blender 5.2, che consente una migliore gestione della memoria in fase di rendering e, quindi, di renderizzare scene particolarmente ricche di Textures.

Per mostrarvi un esempio pratico, sto utilizzando lo scenario completo della mia scuola d'infanzia, che ho utilizzato anche in altri tutorial. In quei casi, ogni volta dovevo lasciare solo la parte dell'ambiente che mi interessava, come un'aula, il teatro o il cortile, perché attualmente il progetto, completo di Textures, occupa 4 Giga su disco, e Blender non renderizza nemmeno una semplice inquadratura, nemmeno di un ambiente con poche Textures come il cortile della scuola, generando invece l'errore "System is out of GPU and shared host memory". Vediamo come utilizzare Texture Cache per risolvere questo problema.


Prima di continuare vi ricordo che, come avviene per altri miei video, la versione testuale di questo tutorial e altre risorse sono disponibili sul mio sito web, anche in altre lingue, al link che trovate in descrizione.
Lo strumento "Texture Cache" si trova nella scheda Render Performances del Properties Editor e l'ho trovato attivato di default. La pagina dedicata a questo strumento ci dice che, con l'attivazione, verranno generate delle versioni ottimizzate delle immagini, in formato TX, che verranno memorizzate su disco e utilizzate da Blender al momento del rendering.

Il percorso dove memorizzare queste immagini va specificato nella sezione "Data Render Texture Cache" della scheda File Paths, all'interno del Preferences Editor. Lasciando il campo vuoto, le Textures TX verranno salvate in una sottocartella della cartella in cui si trovano le Textures originali.

In questo momento, poiché le immagini sono contenute all'interno del file Blender e non esistono come file separati su disco, Texture Cache non trova immagini da convertire in formato TX, per cui otteniamo il messaggio "No image files found to generate TX files".
La prima cosa da fare è quindi estrarre le Textures dal file Blender e salvarle a parte su disco, cosa che sto facendo con Unpack Resources, dal menù External Data di File, dopo aver disattivato l'auto-packing delle risorse, nello stesso menù. In particolare, sto scegliendo l'opzione "Write files to current directory, overwrite existing files", che creerà una cartella Textures accanto al file Blender del progetto. Il menù mi informa anche che all'interno del progetto sono presenti 745 files. Le immagini Textures originali sono state estratte e salvate nell'apposita cartella, ma per applicare le modifiche al file Blender del progetto, è necessario salvarlo. Dopo il salvataggio, il file occupa la metà dello spazio di prima, proprio perché 2 Gigabyte erano rappresentati dalle Textures presenti al suo interno.



A questo punto devo dirvi che in realtà il mio progetto in particolare, in questa fase, viene renderizzato da Blender anche senza ricorrere a Texture Cache, perché nel mio caso la scena torna già ad essere renderizzabile una volta che le Textures sono state estratte su disco. Questa è la prima parte del titolo del tutorial, ossia l'utilizzo di Unpack in situazioni di "out of memory" per via delle Textures. Tuttavia, ci sono dei progetti in cui questo ed altri accorgimenti non sono sufficienti per risolvere il problema della mancanza di memoria, per cui vediamo come utilizzare anche Texture Cache.

Ora che le Textures sono salvate su disco, clicco su Generate nella sezione Texture Cache per far generare i famosi file TX a Blender, che verranno create e salvate in una sottocartella di Textures in poco tempo.


Avviando adesso il rendering, le Textures verranno adesso recuperate dalla cartella TX. Nel mio caso il rendering ha richiesto anche meno tempo di quello di prima, ma va detto che questo potrebbe essere dovuto anche ad altri accorgimenti come Persistent Data, nella sezione Performance. Texture Cache nasce principalmente per ridurre l'utilizzo della memoria, ma per quanto riguarda i tempi può essere più o meno costoso, dipende moltissimo dalla scena, dall'hardware e da altre impostazioni.

A questo punto potreste obiettare che comunque abbiamo perso qualche secondo per far creare a Blender le Textures TX del progetto, per cui bisognerebbe sommare anche quel tempo a quello del rendering. L'obiezione è corretta ma, a parte il fatto che a volte il rendering senza Cache non partiva affatto, va detto anche che la creazione delle Textures TX va effettuata solo una volta, perché poi queste saranno presenti su disco e verranno utilizzate anche nei rendering di altri ambienti. A video, sono passato proprio in un altro ambiente dello scenario, ho avviato il rendering e questo è stato completato in 51 secondi. Per quanto mi riguarda, è un gran miglioramento.
La nota dolente in questa storia può essere trovata nello spazio occupato su disco dalle Textures TX, visto che, in questo caso, si tratta di 3,21 Giga, contro i poco meno di 2 Giga delle Textures originali, alle quali vanno a sommarsi. Si tratta del compromesso previsto dagli sviluppatori, ossia meno memoria utilizzata durante il rendering, ma più spazio su disco. Per quanto mi riguarda, comunque, mi sta bene, se questo significa poter renderizzare lo scenario senza problemi e in poco tempo!

Bene, anche per questo tutorial è tutto! Se vi è stato utile, potete ringraziarmi con un bel Like e iscrivendovi al canale! A presto!