
Распределенный рендеринг
С недавних пор начал пользоваться сервисом MEGA.
Интересен тот факт, что организация располагает не только своими дата-серверами. С компанией можно сотрудничать, предложив свои дата-центры (соответствующие определенным требованиям) для хранения информации пользователей в зашифрованном виде.
Но, наряду с хранением информации, будет не менее полезным для нас сервис облачно-распределенных вычислений, и в частности, рендеринга.
В идее нет ничего необычного. Я далеко не первый, кому эта идея пришла в голову.
Но делюсь я своими соображениями, потому что считаю, что подобный сервис будет многим очень полезен.
Итак, что такое «рендеринг»? Рендеринг — это вычислительный процесс, в ходе которого, мы получаем красивую картинку по 3д модели с помощью программы «рендера».
Что такое «распределенный»? Это когда хранение или вычисление данных распределяют между множеством компьютеров или серверов, объединенными одной сетью (см. распределенные вычисления).
Распределенный рендеринг — вычислительный процесс, по созданию изображений, распределенный между компьютерами. Вычисления также могут на себя брать облака.
Какой смысл?
Стороны
В роли инициатора, работника и зрителя может выступать один и тот же человек. Инициатор может быть зрителем, работник зрителем, инициатор работником.
Какова концепция программы?
Какую вычислительную платформу использовать?
CPU + GPU. На мой взгляд, GPU рендеры уже достаточно хороши для того, чтобы использовать их, как платформу для рендеринга, наряду с процессорами x86-64. Преимущество — скорость вычисления. Однако, написание программы на GPU имеет ряд недостатков:
Для того, чтобы поддерживать большую часть оборудования, я считаю нужным использовать OpenCL или шейдерный язык GLSL. Вычисления на шейдерах выполняются существенно быстрее (видео о вычислении физики мягких тканей), к тому же, на шейдерах уже есть рендер RenderBRO (использует HLSL).
Я считаю, что GLSL версии 4 (и более) является лучшей платформой для создания рендера, потому что:
Если задача на GLSL не будет выполнимой вообще — можно попытаться сделать рендер на OpenCL ;)
Область применения:
Я считаю, что основной областью применения подобного рендера является ДЕМОНСТРАЦИЯ идеи кому-либо в трехмерном виде. Допустим, человек хочет себе заказать машину, или ремонт в квартире. У него будет возможность «пройтись по квартире», посмотреть свою машину со всех сторон, в любом окружении, в любых цветах, сидя дома, за «бабушкиным компьютером», телефоном или планшетом.
Человек нарисовал дом в SketchUp, к примеру — у него появится возможность отрендерить его с помощью видеокарты соседа-геймера. В этом суть.
В заключении хочу добавить, что существует немало задач, требующих много вычислений. Рендеринг — лишь одна из множества вычислительных задач, которая может быть распределена между компьютерами.
Вот так. Ищу единомышленников.
Спасибо за внимание.
Интересен тот факт, что организация располагает не только своими дата-серверами. С компанией можно сотрудничать, предложив свои дата-центры (соответствующие определенным требованиям) для хранения информации пользователей в зашифрованном виде.
Но, наряду с хранением информации, будет не менее полезным для нас сервис облачно-распределенных вычислений, и в частности, рендеринга.
В идее нет ничего необычного. Я далеко не первый, кому эта идея пришла в голову.
Но делюсь я своими соображениями, потому что считаю, что подобный сервис будет многим очень полезен.
Итак, что такое «рендеринг»? Рендеринг — это вычислительный процесс, в ходе которого, мы получаем красивую картинку по 3д модели с помощью программы «рендера».
Что такое «распределенный»? Это когда хранение или вычисление данных распределяют между множеством компьютеров или серверов, объединенными одной сетью (см. распределенные вычисления).
Распределенный рендеринг — вычислительный процесс, по созданию изображений, распределенный между компьютерами. Вычисления также могут на себя брать облака.
Какой смысл?
- Польза для окружающих. У многих дома лежат достаточно мощные, невостребованные вычислительные ресурсы. У меня, к примеру, стоит GTX580, core i5 2500. Играю я редко, и то, в нетребовательную к ресурсам игру. Я бы смог использовать свою видеокарту с пользой для кого-то, но нет подходящей инфраструктуры.
- Денежная выгода для участника. Свои вычислительные ресурсы я могу продавать кому-либо за деньги.
- Заказчик может покупать вычислительные ресурсы обладателя мощной видеокарты.
Стороны
- Инициатор. Человек, который решил запустить рендеринг на компьютере работника. Инициатор загружает модели, текстуры, шейдеры в облако.
- Работник. Обладатель вычислительных ресурсов, который может производить вычисления на своем мощном железе, для того, чтобы показать зрителю.
- Зритель. Смотрит отрендеренную картинку, смотрит объекты со всех сторон, присваивает заготовленные материалы, прочее.
В роли инициатора, работника и зрителя может выступать один и тот же человек. Инициатор может быть зрителем, работник зрителем, инициатор работником.
Какова концепция программы?
- Конфиденциальность (эту опцию можно отключить при необходимости). Работник не должен знать ничего о том, что именно он рендерит на своем компьютере (если зритель сам этого не пожелает).
- Максимальное качество при минимальном объеме настроек, возможность рендеринга в реальном времени. Для этого лучше всего подойдет unbiased рендеринг.
- Работоспособность на любой ОС (Linux, Windows, OSX), поддержка большинства распространенного оборудования (AMD, Nvidia, Intel, может и других платформ).
Какую вычислительную платформу использовать?
CPU + GPU. На мой взгляд, GPU рендеры уже достаточно хороши для того, чтобы использовать их, как платформу для рендеринга, наряду с процессорами x86-64. Преимущество — скорость вычисления. Однако, написание программы на GPU имеет ряд недостатков:
- Сложность написания кода, для написания программы на GPU требуются фреймворки, такие как OpenCL, CUDA (Nvidia), FireStream (AMD), и шейдерные языки GLSL (OpenGL) и HLSL (DirectX).
- Сравнительно небольшой объем памяти, невозможность увеличивать объем памяти без существенной потери производительности.
Для того, чтобы поддерживать большую часть оборудования, я считаю нужным использовать OpenCL или шейдерный язык GLSL. Вычисления на шейдерах выполняются существенно быстрее (видео о вычислении физики мягких тканей), к тому же, на шейдерах уже есть рендер RenderBRO (использует HLSL).
Я считаю, что GLSL версии 4 (и более) является лучшей платформой для создания рендера, потому что:
- Имеет высокую производительность в сочетании с мощным железом.
- Работает на всех операционных системах и на любом железе, поддерживающем OpenGL версии 4+
Если задача на GLSL не будет выполнимой вообще — можно попытаться сделать рендер на OpenCL ;)
Область применения:
Я считаю, что основной областью применения подобного рендера является ДЕМОНСТРАЦИЯ идеи кому-либо в трехмерном виде. Допустим, человек хочет себе заказать машину, или ремонт в квартире. У него будет возможность «пройтись по квартире», посмотреть свою машину со всех сторон, в любом окружении, в любых цветах, сидя дома, за «бабушкиным компьютером», телефоном или планшетом.
Человек нарисовал дом в SketchUp, к примеру — у него появится возможность отрендерить его с помощью видеокарты соседа-геймера. В этом суть.
В заключении хочу добавить, что существует немало задач, требующих много вычислений. Рендеринг — лишь одна из множества вычислительных задач, которая может быть распределена между компьютерами.
Вот так. Ищу единомышленников.
Спасибо за внимание.
Comments 28
Only users with full accounts can post comments. Log in, please.