Является ли OpenGL правильным выбором для рендеров самого высокого качества без временных ограничений?

Фон: я пишу программу, которая создает генеративное искусство. Я забочусь о создании одного окончательного статического изображения, и мне не нужно рендерить кучу кадров в секунду. До сих пор это был 2D, и я на Mac, поэтому я использовал API-интерфейс 2D-графики Core Graphics (также известный как Quartz). Я достиг пределов, поэтому начал возиться с OpenGL, но пока не доволен сглаживанием.

Я задаюсь вопросом, должен ли я инвестировать в изучение этого, или это не построено для того, что я хочу. OpenGL больше о создании движущейся графики максимально быстро, в основном для игр? Если мне нужен рендеринг высочайшего качества (высокое разрешение, плавные кривые, лучшее сглаживание, произвольное освещение и алгоритмы затенения), мне нужно написать собственный рендерер или имеет смысл изучать OpenGL? Смогу ли я использовать его в качестве базы?

4 ответа

Решение

OpenGL не является графической библиотекой общего назначения.

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

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

Однако ваш вариант использования больше похож на задачу для офлайн-рендеринга, такого как Renderman, Pixie, Yafa-Ray и т.п.

Вы хотите RenderMan, программное обеспечение для рендеринга Pixar CGI. Ваша программа может генерировать файлы RIB, которые предназначены для трехмерного эквивалента файлов PostScript; или вы можете использовать RenderMan C API напрямую.

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

У 3Delight есть бесплатный / недорогой рендер для рендеринга RM, который вы можете использовать на отдельных системах, и Pixar объявил месяц назад, что они предоставят бесплатную версию RenderMan для индивидуального использования.

Компаньон RenderMan от Стива Апстилла - это классическое руководство по программированию RM. Более поздняя книга называется "Рендеринг для начинающих" Сати Рагавачары.

Надеюсь это поможет.

Является ли OpenGL правильным выбором для рендеров самого высокого качества без временных ограничений?

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

Является ли OpenGL правильным выбором для вашего проекта?

Может быть. Ни одна из возможностей не требует высококачественного рендера, и все они могут быть довольно легко реализованы в OpenGL. Главное, что он не поддерживает, это трассировка лучей.* Если вам нужно, чтобы ваши рендеры были прослежены лучами, то вам лучше поискать другие варианты.

* Теоретически возможно проводить трассировку лучей в OpenGL, но это будет большая работа.

За качество? Нет.

Конечно, вы можете далеко продвинуться, но, как заявило fintelia, он не поддерживает трассировку лучей (может сделать это с OpenCL, но это не совсем OpenGL). Действительно, есть некоторые впечатляющие рендеры OGL/D3D, но большинство рендеров, которые мы видим сегодня, это программные (CPU/Parallelism/CUDA/Compute), V-Ray, Mental Ray, Renderman.

Другие вопросы по тегам