Пожалуй, Blender является самым качественным Open Source проектом. Но разработчики не останавливаются на достигнутом и ставят перед собой амбициозные цели. Далее перевод статьи, в которой разработчики делятся планами того, как они видят будущее своего продукта.
В предыдущем посте было представлено несколько технических и специфических целей, которые мы бы хотели достичь. Вот они:
1) Улучшение производительности прорисовывающего кода. Мы должны быть уверены, что используем наилучший метод прорисовки, который максимально задействует возможности GPU и функции, доступные только в новых версиях OpenGL, которые позволяют добиться улучшения производительности и кода;
2) Представление материалов во вьюпорте основанное на нодах, а соответственно, новая система отрисовки материалов в реальном времени (для GLSL рендеринга);
3) Использование композитинга во вьюпорте, позволяющее делать такие эффекты, как DOF, Ambient Occlusion, HDR, bloom, flares, отрисовка контуров;
4) Поддержка мобильных устройств (OpenGL ES).
Что у нас есть на данный момент
* Ограниченный композитинг (ветка разработки viewport_experiments). Когда мы говорим ограниченный, мы имеем ввиду, что композинг не привязан к свойствам отображения, он применяется на все содержимое буфера кадров. В идеале мы хотим добиться того, чтобы в этом режиме отображались интерфейсные индикаторы, такие как сетка или арматура. Этого не так уж сложно добиться, в конце концов можно реализовать тот же принцип, по которому работает прозрачность или Xray-система, беря сетку объекта и выводя ее на верхний уровень рендеринга.
*Некоторые части нашего кода прорисовки сетки используют Vertex Buffer Object оптимально, другие используют, но имеют проблемы с производительностью, а некоторые его вообще не используют.
Как нам поможет ветка разработки soc_2014_viewport_fx в достижении наших целей?
Soc_2014_viewport_fx позволит нам перейти на новые или мобильные версии OpenGL без суеты, а так же привнесет опыт качественного рендера, какие требуются в современных версиях OpenGL, в которых весь рендеринг идет через Vertex Buffer Objects. Так же это удалит зависимость от GLU, так как эта библиотека использует устаревшие функции OpenGL.
Кроме того, даст толчок для таких вещей и функций, которые можно отобразить только шейдерами. Это важно, если мы перейдем к современной или мобильной версии OpenGL в какой-то момент.
Так что это в основном поможет с 1-ой и 4-ой целями, но больше работы нужно будет сделать после слияния, чтобы реализовать эти цели в полном объеме.
В какой момент, если мы хотим поддержки современных или мобильных версий OpenGL, мы не сможем избежать того, что придется переписать большую часть кода рендеринга реального времени. В этой ветке разработки уже частично об этом позаботились, так что ветка должна быть внесена и использоваться (в действительности слияние — это самый первый шаг).
По моей оценке, основываясь на предыдущих опытах слияния веток, это должно занять около 2-3 недель усердной работы.
Можем ли мы сосредоточиться на некоторых целях уже сегодня?
Да, можем. Такие цели, как материалы, основанные на нодах или копозитинг, просто предполагают поддержку GLSL, которая уже реализована в основной ветке полностью, так что ничто не мешает их развитию. Тем не менее, чем раньше мы внесем ветку Soc_2014_viewport_fx, тем меньше у нас будет проблем в будущем.
Viewport, удобство использования
Режимы отображения
Режимы отображения становятся немного непредсказуемым, если используются материалы, ограниченные такими свойствами, как specular/diffuse/textured. Так же они привязаны к структуре полигонов, которая станет менее значимой, если мы будем использовать отображение, основанное на свойствах материалов. Художники часто настраивают разное количество свойств объектов и материалов, чтобы визуально получить то, что им нужно, что так же иногда бывает мучительным процессом и, конечно, не подходит новичкам. Нам нужен такой инструмент, с которым художники смогут легко работать, который может быстро визуализировать то, что они хотят, без мук и гаданий в поисках того, как визуализировать это лучше.
Рабочие режимы(редактирование, скульптинг, рисование, анимация, разработка игровых шейдеров)
Разные рабочие процессы требуют разных данных и разного отображения. Мы можем определить «рабочие процессы» наборами шейдеров и опциями отображения, созданными специально для данного рабочего процесса. Например, режим 'рабочий стол' в режиме редактирования будет иметь базовые diffuse и specular шейдеры с различными вариантами отображения сетки. А, например, режиму ретопологии более подойдут простое отображение сетки с объемной прозрачностью. Для настройки материалов или texture painting пользователи могут захотеть полную конечную картинку или безшейдерную версию для детальной настройки.
Отладка (логики, арматуры и т. д.)
Режим «Отладка» предназначен для того, чтобы визуально показать пользователю проблемные зоны в сцене. Например, расчет зависимостей или количество полигонов, или дажmesh_exmplе какие-то параметры для разработчиков.
Легкое переключение от одного к другому, легкая настройка или программирование.
Используя систему рабочих потоков, пользователь должен видеть их наиболее предсказуемо. Каждый рабочий поток может иметь настройки используемых шейдеров, но нельзя давать слишком сильно изменять эти шейдеры. Интерфейс нод позволит запрашивать данные из блендера записывать их в свои шейдеры, для того, чтобы представлять данные так, как хочет пользователь.
Совершенствование! Пользователи хотят лучшего, более реалистичного
С возможностями, которые предлагают современные шейдеры, мы нацелены добавить в блендер еще один рендер, использующий OpenGL (после Internal и Cycles), который мог бы применить все возможности современных GPU, и с учетом того, что он будет realtime, он мог бы стать альтернативой существующим рендерам. Много компонентов уже есть, но мы можем продвинутся еще дальше, оптимизируя реализацию шейдеров, особенно для рендеринга в реальном времени, взамен попытки подражания существующим рендерам.
Мы должны быть уверенны, что материалы будут выглядеть достойно, поэтому мы изучаем современные методы рендеренга, такие как physically based shading (патч от Clement Foucault, использующий данные из Unreal Engine 4, уже практически включен) и deferred rendering.
Нужно сказать, что это так же усовершенствует превью материалов для Internal и Cycles.
Автор: dfm