Циклы X

Циклыx

Сегодня было ровно 13 лет с момента анонса Cycles . За последнее десятилетие Cycles превратился в полноценный производственный рендерер, используемый многими художниками и студиями. Мы многому научились в тех 13 лет, вещи, которые работали хорошо, но также и вещи, которые не работали хорошо или устарели по мере развития алгоритмов рендеринга и оборудования.

Мы очень хотим значительно улучшить рендеринг ядра Cycles. Однако некоторые решения, принятые в прошлом, снижают производительность и затрудняют сопровождение кода. Чтобы решить эту проблему, мы с Сергеем начали исследовательский проект Cycles X с целью обновить архитектуру и подготовить ее к следующему 10 годы. Вместо того, чтобы искать быстрые исправления или оптимизации, которые решают только часть проблемы, мы переосмысливаем архитектуру в целом.

Проект

В общих чертах цель проекта:

  • Улучшение архитектуры для будущего развития
  • Повышение удобства использования окна просмотра и пакетного рендеринга
  • Повышение производительности на современных ЦП и ГП
  • Более продвинутый рендеринг алгоритмы

Нашей первой целью была проверка новой архитектуры. С этой целью мы реализовали прототип нового ядра графического процессора и новые алгоритмы планирования для области просмотра и пакетной визуализации. Функциональных возможностей сейчас достаточно для рендеринга некоторых из наших тестовых сцен.

График ядра X текущих циклов

Сегодня мы делимся некоторыми начальными результатами производительности и публикуем код для совместной работы с участниками Cycles. Доступна техническая презентация для разработчиков новой архитектуры, а ее код можно найти в циклы-x ветвь на git.blender.org .

Еще многое предстоит сделать. Мы ожидаем, что пройдет не менее 6 месяцев, прежде чем эта работа станет частью официального релиза Blender.

Первоначальные результаты

Во-первых, некоторые результаты рендеринга на GPU с хорошо известными тестовыми сценами. Сцены были изменены, чтобы удалить такие функции, как объемный рендеринг, которые еще не реализованы.

Имейте в виду, что числа будут меняться по мере того, как мы продолжаем работать над новой архитектурой. Поддержка OptiX была добавлена ​​несколько дней назад Патриком Мурсом.

Наиболее значительные улучшения произошли во внутренних сценах с множеством отражений света и шейдеров, где новые ядра могут достичь более высокой загруженности и согласованности.

Производительность рендеринга ЦП примерно такая же, как и раньше. точка, но новая архитектура открывает и новые возможности.

Во-вторых, мы работали над улучшением рендеринга области просмотра. Ядра более быстрого рендеринга помогают, но мы также обнаружили, что улучшение механизмов планирования, синхронизации и отображения может сделать область просмотра более интерактивной. Новая поддержка области просмотра для адаптивной выборки и пакетной выборки позволяет быстрее очищать изображение после того, как будут сделаны первые несколько выборок.

Рендеринг области просмотра ЦП

Рендеринг области просмотра CPU с Open Image Denoiser

Рендеринг области просмотра графического процессора

Сравнение адаптивной выборки области просмотра

С нетерпением жду

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

  • Объемный рендеринг: мы планируем реализовать ray-marching и light sampling с более современными алгоритмы
  • Улавливатели теней: мы попробуем другой алгоритм, который может учитывать непрямой свет
  • Рендеринг на нескольких устройствах: мы поэкспериментируем с более тонкой балансировкой нагрузки без плиток

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

Устаревший

В рамках новой архитектуры мы удаляем некоторые функции. В частности:

  • Ядра визуализации OpenCL. Сочетание ограниченной реализации ядра Cycles с разделением, ошибок драйверов и застопорившегося стандарта OpenCL сделало обслуживание слишком трудным. Мы можем внести те самые большие изменения, над которыми мы сейчас работаем, начав с чистого листа.
    Мы работаем с AMD и Intel, чтобы получить новые ядра. работают над своими графическими процессорами, возможно, используя разные API. Это не обязательно будет готово к первому выпуску, реализация должна достичь более высокого уровня качества, чем то, что есть сейчас. В долгосрочной перспективе важной целью остается поддержка всех основных поставщиков оборудования для графических процессоров.
  • Трассировка разветвленных путей. Мы работаем над улучшением алгоритмов выборки, чтобы сделать это устаревшим, и более того, чтобы автоматически назначать образцы там, где это необходимо. Улучшенная адаптивная выборка и выборка важности света являются ключевыми здесь.
  • NLM шумоподавитель. Алгоритмы шумоподавления AI и, в частности, OpenImageDenoise обычно дают лучшие результаты, и мы оптимизируем для них архитектуру и рабочий процесс.

Эти функции останутся доступными и поддерживаются в версии 2. 83 и 2. 93 Релизы LTS.