К основному контенту

О разработке графической подсистемы

Наша команда, помимо разработки новых функций программы, непрерывно работает над улучшением производительности всех продуктов Renga. Для этого мы используем современные средства сбора характеристик программы (профилирование), изучаем и внедряем новые технологии и пишем тесты производительности на существующую функциональность. Всё это позволяет сделать программный продукт более отзывчивым и удобным для повседневного использования. О том, как мы разрабатываем графическую подсистему, рассказывает наш специалист по компьютерной графике - Евгений Коростелев.
Каждое приложение, визуализирующее виртуальную сцену (в нашем случае, модели зданий, проекции и чертежи), реализует этап расчета кадра изображения. Как правило, этот этап состоит из нескольких десятков стадий, которые в некоторых ситуациях могут требовать много вычислительных ресурсов, т.е. существенно замедлять приложение. Примером является стадия отправки команд на отрисовку - последовательность команд рисования (draw call) и передача данных на графический конвейер (адресация геометрии, свойства материала, матрица аффинных преобразований). Каждый вызов команды рисования объекта занимает процессорное время, состоящее, по большей части, из времени взаимодействия между приложением и драйвером видеокарты. Поэтому мы уменьшаем их количество. Таким образом, одним из методов увеличения скорости работы Renga является отправка команд только для геометрических объектов, попадающий в пирамиду видимости. Но мы не ограничиваемся этим, поскольку иначе приложению не хватит производительности на больших проектах.
В одном из первых обновлений мы внедрили технику дублирования геометрии, называемую геометрический инстансинг. Эта технология позволяет нам отрисовывать за одну команду рисования все копии объекта, различающиеся лишь пространственным положением и некоторыми свойствами материала. Таким образом мы задействуем соответствующие аппаратные возможности видеокарт и тем самым уменьшаем время расчета кадра. Применение инстансинга на современных видеокартах позволяет рисовать десятки тысяч копий объекта за приемлемое время.
В текущей версии Renga геометрический инстансинг поддерживается на следующих объектах: заполнители окон и дверей, лестницы и армирование объектов. В следующем выпуске это список будет расширен твердотельными (C3D) и триангуляционными объектами. На таких объектах, как стены, балки, перекрытия, кровля инстансинг не применяется, поскольку большинство из них имеет различные геометрические формы, обусловленными сопряжениями и подрезкой. Технология инстансинга полезна на тех объектах, которые имеют свыше десяти геометрических копий.
Работа над улучшением графической подсистемы продолжается, и мы надеемся, что в следующих версиях работа с Renga будет ещё более комфортной и впечатляющей. В последующих публикациях мы познакомим вас с другими аспектами этого непрерывного пути.

Комментарии

Популярные сообщения из этого блога

Версионирование Renga

Хотим поговорить о версиях Renga. Кто-то говорит, что работает на версии 5, а кто-то на версии 7. Иногда встречаются и те, кто работает на версии 4. Давайте разбираться, как версионируется Renga, и можно ли “работать на версии 5”.

Инженерные системы в Renga сегодня

За последние полтора года Renga очень сильно преобразилась, но не все знают об этом и еще не используют ее возможности по максимуму. Сегодня хотим поговорить о проектировании инженерных систем в Renga. Проектирование любой инженерной системы в Renga состоит из следующих основных этапов: Расстановка объектов в модели. Настройка параметров системы. Определение связей между объектами во вкладке системы и автоматическое построение трассы в модели. Редактирование полученной трассы в 3D-виде. Автоматическая или ручная расстановка компонентов систем на трассе. Эти этапы остались неизменными с первого выпуска Renga MEP. Что же изменилось в последнее время? Заглянем в заметки о выпуске Renga и найдем там изменения, благодаря которым автоматизация работы инженера вышла на новый уровень. Версия 7.0 Возможность управлять категориями объектов инженер...

Фильтры в Renga

Фильтры в Renga — необходимый инструмент для работы с моделью и получения чертежей. Фильтры позволяют отобрать из всех объектов только те, которые вам нужны в любом виде модели, в спецификации или при оформлении чертежа, а также при работе во вкладках инженерных систем. Анализируя проекты, выполненные в Renga, мы заметили, что в них либо злоупотребляют фильтрами, либо пренебрегают ими. Если в ваших проектах много фильтров, то вам пригодится функциональность, которую мы готовим к выходу и совсем скоро выпустим. О новинках ниже, а сейчас рассмотрим, как работают фильтры в Renga. Каждый фильтр может состоять из одной или нескольких групп фильтрации, каждая из которых, в свою очередь, может работать только с одним типом объекта. С помощью операторов вы можете задать любое условие выбора на основе числовых, булевых, строковых данных, а также уникального идентификатора объекта. Одна группа всегда отбирает объекты, которые соответствуют всем правилам. А две ...