En este breve tutorial les mostraré la función Texture Cache para Cycles, introducida en Blender 5.2. Esta función ofrece una mejor gestión de la memoria durante el renderizado, lo que hace posible renderizar escenas con una gran cantidad de texturas.
La versión en video de este tutorial no está disponible actualmente en este idioma. A continuación puedes ver la versión en inglés con subtítulos; debajo del video encontrarás la transcripción traducida al español.
Transcripción del video
Hola a todos. En este breve tutorial les mostraré la función Texture Cache para Cycles, introducida en Blender 5.2. Esta función ofrece una mejor gestión de la memoria durante el renderizado, lo que hace posible renderizar escenas con una gran cantidad de texturas.

Para mostrarlo con un ejemplo real, estoy utilizando la escena completa de la guardería que creé y que también he usado en otros tutoriales. En esos videos siempre tenía que conservar solo la parte del entorno que necesitaba, como un aula, el teatro o el patio de juegos, porque el proyecto completo, incluidas todas las texturas, ocupa actualmente 4 GB de espacio en disco. Blender no podía renderizar ni siquiera una toma sencilla, ni siquiera de una zona con relativamente pocas texturas, como el patio de la escuela. En su lugar, mostraba el mensaje de error "System is out of GPU and shared host memory." Veamos cómo usar Texture Cache para resolver este problema.


Antes de continuar, me gustaría recordarles que, al igual que ocurre con muchos de mis otros videos, en mi sitio web tienen disponible una versión escrita de este tutorial junto con recursos adicionales, incluidas traducciones a otros idiomas, en el enlace que encontrarán en la descripción.
La opción Texture Cache se encuentra en el panel Render > Performance del Properties Editor, y en mi sistema estaba activada de forma predeterminada. La documentación explica que, cuando está habilitada, Blender genera versiones optimizadas de las imágenes en formato TX, las almacena en el disco y las utiliza durante el renderizado.

La ubicación donde se almacenan estas imágenes puede especificarse en la sección Data Render Texture Cache de la pestaña File Paths del Preferences Editor. Si dejan este campo vacío, las texturas TX se guardarán en una subcarpeta dentro del directorio que contiene las texturas originales.

En este momento, como las imágenes están empaquetadas dentro del archivo de Blender y no existen como archivos independientes en el disco, Texture Cache no puede encontrar ninguna imagen para convertirla al formato TX. Como resultado, Blender muestra el mensaje "No image files found to generate TX files."
Lo primero que debemos hacer es extraer las texturas del archivo de Blender y guardarlas por separado en el disco. Yo lo hago con Unpack Resources, que se encuentra en File > External Data, después de desactivar Automatically Pack Resources en el mismo menú. En concreto, elijo la opción "Write files to current directory, overwrite existing files", que crea una carpeta llamada Textures junto al archivo de Blender del proyecto. Blender también me informa de que el proyecto contiene 745 archivos. Las imágenes originales de las texturas se extraen y se guardan en la nueva carpeta, pero para aplicar estos cambios al proyecto necesito guardar el archivo de Blender. Después de guardarlo, el tamaño del archivo se reduce a la mitad, porque aproximadamente 2 GB de su tamaño original correspondían a las texturas empaquetadas.



En este punto debo mencionar que, en mi caso concreto, Blender ya puede renderizar el proyecto incluso sin Texture Cache, porque simplemente extraer las texturas al disco es suficiente para que la escena vuelva a poder renderizarse. Esa es la primera parte del título de este tutorial: usar Unpack para resolver problemas de falta de memoria provocados por las texturas. Sin embargo, algunos proyectos siguen quedándose sin memoria incluso después de aplicar esta y otras técnicas de optimización, así que veamos cómo Texture Cache puede ayudar en esas situaciones.

Ahora que las texturas están almacenadas en el disco, haré clic en Generate en la sección Texture Cache para que Blender cree los archivos TX. Estos archivos se generan rápidamente y se guardan en una subcarpeta dentro del directorio Textures.


Si inicio un renderizado ahora, Blender cargará las texturas desde la carpeta TX. En mi caso, el renderizado fue incluso más rápido que antes, aunque eso también puede deberse a otras optimizaciones, como Persistent Data en la sección Performance. Texture Cache está diseñado principalmente para reducir el uso de memoria. Su impacto en los tiempos de renderizado puede variar considerablemente según la escena, el hardware y el resto de los ajustes de renderizado.

En este punto podrían decir que igualmente hemos dedicado unos segundos a generar las texturas TX del proyecto, por lo que ese tiempo debería sumarse al tiempo total de renderizado. Es una observación válida. Sin embargo, además de que en algunos casos el renderizado sin Texture Cache ni siquiera llegaría a comenzar, también es importante recordar que las texturas TX solo necesitan generarse una vez. Después permanecen almacenadas en el disco y se reutilizan en futuros renderizados, incluidos los de otras zonas del proyecto. En pantalla he cambiado a otra parte de la escena, he iniciado un renderizado y terminó en 51 segundos. Para mí, eso supone una mejora muy importante.
La desventaja de este flujo de trabajo es la cantidad de espacio en disco que ocupan las texturas TX. En este ejemplo ocupan 3,21 GB, frente a los casi 2 GB de las texturas originales, y es necesario conservar ambos conjuntos de archivos. Ese es el compromiso previsto por los desarrolladores: reducir el uso de memoria durante el renderizado a cambio de utilizar más espacio en disco. Personalmente, estoy completamente de acuerdo con esa solución si significa que puedo renderizar toda la escena de forma fiable y en mucho menos tiempo.

¡Eso es todo por este tutorial! Si les ha resultado útil, no olviden dejar un Like y suscribirse al canal. ¡Nos vemos en el próximo!