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

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

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

Комментарии

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

Освой электрику в Renga

UPD: 13.11.2024 Добрый день! Принципы проектирования всех инженерных систем в Renga одинаковы, однако каждая из них достойна отдельного внимания. В этой заметке мы расскажем и наглядно покажем на примере однокомнатной квартиры, как проектировать электрику в Renga. Надеемся, что вы попробуете повторить приведенную ниже инструкцию и это поможет вам оценить возможности Renga. Начинаем проектирование электрики с установки осветительных приборов, выключателей и розеток. Их можно размещать только на стенах, перекрытиях, колоннах и балках. Также хорошо, если перед проектированием электрики в модели расставлена мебель, если речь идет о жилых помещениях, или оборудование в промышленных. Модель квартиры, в которой будет происходить дальнейшая работа, уже подготовлена. Итак, скачайте проект, в котором расставлена мебель, и приступим. Откройте проект в любой редакции Renga. Щелкните правой кнопкой мыши на пустом месте и выберите Режим измерения > Кубический . Это необходимо, так как рас...

Берегите память!

Друзья, мы планируем выпустить сегодня праздничное обновление Renga! Оно будет включать несколько очень полезных новинок, о которых вам подробно расскажут в официальном пресс-релизе. Мы, как разработчики, должны признаться, что внеплановое обновление на самом деле никак не связано с праздником. А пришлось нам его готовить в связи с тем, что Renga была не готова к тому, что пользователи будут создавать в своих проектах более 100 сборок . На одном из проектов, созданном в Renga 2.9, были выявлены утечки памяти, в результате чего работа нашей системы прекращалась. Соответственно, в Renga 2.10 в первую очередь увеличена скорость работы со сборками и значительно снижено потребление оперативной памяти. Кроме того, если в вашем проекте много сборок (или уровней, разрезов, фасадов), мы также рекомендуем отключить новую опцию “Отображать эскизы вместо значков” в настройках . Обозреватель проекта в таком случае будет обновляться гораздо быстрее. По сути, все остальные новинки придут к...

Под крышей дома моего....

Крыша - это главный атрибут любого дома, а особенно частного загородного дома, коттеджа. Она не только призвана защищать его от дождя, снега и палящего солнца, но и является украшением дома и улицы, притягивает взгляд соседей и прохожих. В Renga Architecture инструмент Крыша позволяет строить самые разные модели крыши с помощью небольшого набора команд, но с первого взгляда не всегда ясно, как сделать её той или иной формы. Поэтому мы, Арина Соболева (инженер тех.поддержки) и Анастасия Тян (технический писатель), решили рассказать о разных тонкостях и нюансах работы с этим инструментом на примере нескольких загородных домов -  от простого к сложному. Проще всего в Renga Architecture создать четырехскатную вальмовую крышу. Здесь не надо менять никаких параметров, крыша строится по точкам, непрерывно (Рисунок 1). Рисунок 1 Чтобы её создать, один раз задаем Параметры сегмента (Рисунок 2) и указываем 4 точки по углам здания на 3D Виде. Построение крыши вс...