В этом коротком уроке я покажу функцию Texture Cache для Cycles, представленную в Blender 5.2. Она обеспечивает более эффективное управление памятью во время рендеринга, благодаря чему становится возможным рендерить сцены с большим количеством текстур.


Видеоверсия этого руководства в настоящее время недоступна на этом языке. Ниже вы можете посмотреть английскую версию с субтитрами; под видео вы найдете перевод расшифровки на русский язык.


Текстовая расшифровка видео

Всем привет! В этом коротком уроке я покажу функцию Texture Cache для Cycles, представленную в Blender 5.2. Она обеспечивает более эффективное управление памятью во время рендеринга, благодаря чему становится возможным рендерить сцены с большим количеством текстур.

Чтобы показать это на реальном примере, я использую полную сцену детского сада, которую создал и уже использовал в других уроках. В тех видео мне всегда приходилось оставлять только ту часть окружения, которая была нужна, например классную комнату, театр или игровую площадку, потому что полный проект вместе со всеми текстурами сейчас занимает 4 ГБ дискового пространства. Blender не мог отрендерить даже простой кадр, даже участок с относительно небольшим количеством текстур, например школьную игровую площадку. Вместо этого появлялось сообщение об ошибке: "System is out of GPU and shared host memory." Давайте посмотрим, как с помощью Texture Cache можно решить эту проблему.

Прежде чем продолжить, хочу напомнить, что, как и для многих других моих видео, письменная версия этого урока и дополнительные материалы доступны на моём сайте, включая переводы на другие языки. Ссылка находится в описании.

Параметр Texture Cache находится в панели Render > Performance окна Properties Editor, и в моей системе он был включён по умолчанию. В документации сказано, что при включении этой функции Blender создаёт оптимизированные версии изображений в формате TX, сохраняет их на диск и использует во время рендеринга.

Место, где будут храниться эти изображения, можно указать в разделе Data Render Texture Cache на вкладке File Paths окна Preferences Editor. Если оставить это поле пустым, текстуры TX будут сохранены в подпапке внутри каталога, где находятся исходные текстуры.

Сейчас изображения упакованы внутрь файла Blender и не существуют как отдельные файлы на диске, поэтому Texture Cache не может найти изображения для преобразования в формат TX. В результате Blender выводит сообщение: "No image files found to generate TX files."

Первое, что нужно сделать, это извлечь текстуры из файла Blender и сохранить их отдельно на диске. Для этого я использую Unpack Resources, который находится в меню File > External Data, предварительно отключив Automatically Pack Resources в том же меню. В данном случае я выбираю вариант "Write files to current directory, overwrite existing files", который создаёт папку Textures рядом с файлом проекта Blender. Blender также сообщает, что проект содержит 745 файлов. Исходные текстуры извлекаются и сохраняются в новой папке, но чтобы изменения вступили в силу, необходимо сохранить файл Blender. После сохранения его размер уменьшается вдвое, потому что примерно 2 ГБ исходного размера занимали упакованные текстуры.

Здесь стоит отметить, что в моём случае Blender теперь может рендерить проект даже без Texture Cache, потому что простого извлечения текстур на диск уже достаточно, чтобы сцена снова стала пригодной для рендеринга. Именно об этом первая часть названия урока: использование Unpack для устранения ошибок нехватки памяти, вызванных текстурами. Однако некоторые проекты продолжают сталкиваться с нехваткой памяти даже после этого и других методов оптимизации, поэтому давайте посмотрим, как Texture Cache помогает в таких ситуациях.

Теперь, когда текстуры сохранены на диске, я нажму Generate в разделе Texture Cache, чтобы Blender создал файлы TX. Они создаются довольно быстро и сохраняются в подпапке внутри каталога Textures.

Если теперь начать рендеринг, Blender будет загружать текстуры из папки TX. В моём случае рендер действительно оказался быстрее, чем раньше, хотя это может быть связано и с другими оптимизациями, например с параметром Persistent Data в разделе Performance. Основная задача Texture Cache заключается в снижении потребления памяти. Его влияние на время рендеринга может значительно различаться в зависимости от сцены, оборудования и других настроек рендеринга.

Здесь можно возразить, что мы всё же потратили несколько секунд на создание TX-текстур проекта, и это время следует прибавить к общему времени рендеринга. Это справедливое замечание. Однако, помимо того что без Texture Cache рендеринг иногда вообще не запускался, важно помнить, что TX-текстуры нужно создать только один раз. После этого они остаются на диске и повторно используются при последующих рендерах, включая рендеринг других частей проекта. Сейчас на экране я переключился на другую область сцены, запустил рендеринг, и он завершился за 51 секунду. Для меня это очень серьёзное улучшение.

Недостаток такого рабочего процесса заключается в объёме дискового пространства, которое занимают TX-текстуры. В этом примере они занимают 3,21 ГБ, тогда как исходные текстуры занимают чуть меньше 2 ГБ, и при этом необходимо хранить оба набора файлов. Именно такой компромисс задумывали разработчики: меньшее потребление памяти во время рендеринга в обмен на большее использование дискового пространства. Лично меня это полностью устраивает, если благодаря этому можно надёжно рендерить всю сцену и делать это значительно быстрее.

На этом всё! Если этот урок оказался полезным, поставьте лайк и подпишитесь на канал. До встречи в следующем видео!

Этот сайт предназначен исключительно для демонстрации некоторых моих работ и не имеет рекламных целей. Обратите внимание, что в настоящее время я не ищу и не рассматриваю запросы на индивидуальные заказы, консультации или любые другие формы профессионального сотрудничества.


РАСШИРЕННАЯ ИНФОРМАЦИЯ О ПОЛИТИКЕ КОНФИДЕНЦИАЛЬНОСТИ И ИСПОЛЬЗОВАНИИ ФАЙЛОВ COOKIE