Neste breve tutorial, vou mostrar o recurso Texture Cache para o Cycles, introduzido no Blender 5.2. Ele oferece um gerenciamento de memória mais eficiente durante a renderização, tornando possível renderizar cenas com um grande número de texturas.
A versão em vídeo deste tutorial não está disponível no momento neste idioma. Abaixo, você pode assistir à versão em inglês com legendas; abaixo do vídeo, você encontrará a transcrição traduzida para o português.
Transcrição do vídeo
Olá, pessoal! Neste breve tutorial, vou mostrar o recurso Texture Cache para o Cycles, introduzido no Blender 5.2. Ele oferece um gerenciamento de memória mais eficiente durante a renderização, tornando possível renderizar cenas com um grande número de texturas.

Para demonstrar isso com um exemplo do mundo real, estou usando a cena completa do jardim de infância que criei e também utilizei em outros tutoriais. Nesses vídeos, eu sempre precisava manter apenas a parte do ambiente de que precisava, como uma sala de aula, o teatro ou o playground, porque o projeto completo, incluindo todas as texturas, atualmente ocupa 4 GB de espaço em disco. O Blender não conseguia renderizar nem mesmo uma cena simples, nem sequer de uma área com relativamente poucas texturas, como o playground da escola. Em vez disso, ele exibia a mensagem de erro "System is out of GPU and shared host memory." Vamos ver como usar o Texture Cache para resolver esse problema.


Antes de continuarmos, gostaria de lembrar que, assim como em muitos dos meus outros vídeos, uma versão escrita deste tutorial e recursos adicionais estão disponíveis no meu site, incluindo traduções para outros idiomas, no link que está na descrição.
A opção Texture Cache está localizada em Render > Performance, no Properties Editor, e no meu sistema ela já estava ativada por padrão. A documentação explica que, quando essa opção está habilitada, o Blender gera versões otimizadas das suas imagens no formato TX, armazena esses arquivos em disco e os utiliza durante a renderização.

O local onde essas imagens são armazenadas pode ser definido na seção Data Render Texture Cache da aba File Paths, no Preferences Editor. Se você deixar esse campo vazio, as texturas TX serão salvas em uma subpasta dentro do diretório que contém as texturas originais.

Neste momento, como as imagens estão empacotadas dentro do arquivo do Blender e não existem como arquivos separados no disco, o Texture Cache não consegue encontrar nenhuma imagem para converter para o formato TX. Como resultado, o Blender exibe a mensagem "No image files found to generate TX files."
A primeira coisa que precisamos fazer é extrair as texturas do arquivo do Blender e salvá-las separadamente no disco. Estou fazendo isso com Unpack Resources, localizado em File > External Data, depois de desativar Automatically Pack Resources no mesmo menu. Especificamente, estou escolhendo a opção "Write files to current directory, overwrite existing files", que cria uma pasta chamada Textures ao lado do arquivo Blender do projeto. O Blender também informa que o projeto contém 745 arquivos. As imagens de textura originais são extraídas e salvas na nova pasta, mas, para aplicar essas alterações ao projeto, preciso salvar o arquivo do Blender. Depois de salvá-lo, o tamanho do arquivo é reduzido pela metade, porque cerca de 2 GB do seu tamanho original eram compostos pelas texturas empacotadas.



Neste ponto, devo mencionar que, no meu caso específico, o Blender agora consegue renderizar o projeto mesmo sem o Texture Cache, porque simplesmente extrair as texturas para o disco já é suficiente para tornar a cena renderizável novamente. Essa é a primeira parte do título deste tutorial: usar o Unpack para resolver problemas de falta de memória causados pelas texturas. No entanto, alguns projetos ainda ficam sem memória mesmo depois de utilizar essa e outras técnicas de otimização. Então, vamos ver como o Texture Cache pode ajudar nessas situações.

Agora que as texturas estão armazenadas no disco, vou clicar em Generate na seção Texture Cache para permitir que o Blender crie os arquivos TX. Esses arquivos são gerados rapidamente e salvos em uma subpasta dentro do diretório Textures.


Se eu iniciar a renderização agora, o Blender carregará as texturas da pasta TX. No meu caso, a renderização foi realmente mais rápida do que antes, embora isso também possa ser resultado de outras otimizações, como Persistent Data na seção Performance. O Texture Cache foi projetado principalmente para reduzir o uso de memória. O impacto no tempo de renderização pode variar bastante, dependendo da cena, do hardware e de outras configurações de renderização.

Neste ponto, você pode argumentar que ainda gastamos alguns segundos gerando as texturas TX do projeto, então esse tempo deveria ser somado ao tempo total de renderização. Esse argumento é válido. No entanto, além do fato de que, em alguns casos, a renderização sem o Texture Cache nem sequer consegue começar, também é importante lembrar que as texturas TX precisam ser geradas apenas uma vez. Depois disso, elas permanecem armazenadas no disco e são reutilizadas em renderizações futuras, inclusive nas renderizações de outras áreas do projeto. Na tela, mudei para outra parte da cena, iniciei uma renderização e ela foi concluída em 51 segundos. Para mim, isso representa uma grande melhoria.
A desvantagem desse fluxo de trabalho é a quantidade de espaço em disco ocupada pelas texturas TX. Neste exemplo, elas ocupam 3,21 GB, em comparação com pouco menos de 2 GB das texturas originais, e ambos os conjuntos de arquivos precisam ser mantidos. Esse é o compromisso definido pelos desenvolvedores: menor uso de memória durante a renderização em troca de mais espaço em disco. Pessoalmente, fico perfeitamente satisfeito com isso, se significa que posso renderizar toda a cena de forma confiável e em muito menos tempo.

Isso é tudo por este tutorial! Se ele foi útil para você, deixe um Like e inscreva-se no canal. Até a próxima!