В предыдущей части мы рассмотрели простой пример использования подпрограмм и разобрались каким образом можно динамически подставлять разные подпрограммы для разных объектов. Сейчас я бы хотел разобрать более реальный пример, чтоб оценить жизнеспособность этого подхода для организации биндлесс рендера.
Разработка движка прекращена, исходные коды проекта доступны тут: http://code.google.com/p/glsnewton/
Показаны сообщения с ярлыком инстансинг. Показать все сообщения
Показаны сообщения с ярлыком инстансинг. Показать все сообщения
понедельник, 3 июля 2017 г.
Shader Subroutines. Часть 1. Основы.
В этот раз я бы хотел поговорить об относительно старой штуке, появившейся в далеком 2010 году, шейдерных подпрограммах (Shader Subroutines). Не смотря на то, что они в виде расширения были добавлены еще в OpenGL 3.2, о них в сети не так уж и много информации. Фактически я сумел найти всего 6 статей на эту тему и всего пару обсуждений использования этой "фичи". То ли все на столько ясно что не требуется пояснений, то ли люди не понимают/недооценивают возможности этого расширения. К слову, я относился ко второй группе людей. Не смотря на то, что я познакомился с этим расширением еще в момент его выхода, но до сегодняшнего дня я не понимал его места в проекте движка.
Давайте же вместе попробуем разобраться с этим.
Давайте же вместе попробуем разобраться с этим.
воскресенье, 22 июля 2012 г.
Инстансинг. Часть вторая, псевдоинстансинг.
В предыдущей части статьи мы разобрались с основной проблемой инстансинга и убедились что оптимизировав алгоритм рендеринга можно существенно повысить производительность. Но все эти оптимизации касались лишь алгоритмов, сейчас же мы разберем оптимизацию последней части - установку трансформаций. Почему это так важно - потому что эта процедура находится внутри цикла и выполняется тысячи раз, вызываясь для каждого сабмеша каждого меша, потому даже небольшой выигрыш способен дать существенный прирост производительности.
Инстансинг. Часть первая, прокси и инстансы.
В предыдущих статьях мы с вами рассмотрели способы вывода низкополигональной геометрии и оценили производительность разных подходов. В этих статьях шла речь об объектах, составленных из нескольких полигонов, таких как частицы, буквы, спрайты, элементы GUI и прочее. Так же мы рассмотрели и более сложные случаи - системы частиц, основное отличие которых состояло в их количестве и динамичности. Но есть и другой класс объектов, в него попадают объекты с количеством полигонов более сотни, это могут быть всякие скамейки, столы, вазы, астероиды, столбы, модели в стратегиях, актеры и прочее. В некоторых случаях это могут быть примитивы (шар, тор, цилиндр и прочее), но чаще это отдельные модели. Для начала давайте определим отличительные черты таких объектов, относительно рассмотренных ранее элементов GUI.
Подписаться на:
Сообщения (Atom)