воскресенье, 17 сентября 2017 г.

TBO vs SSBO

Для некоторых задач существует необходимость передавать большие объемы данных, к примеру - карту высот, параметры частиц, кадры анимации и прочие данные, не привязанные к вершинам. Возник резонный вопрос - как лучше передавать эти данные в шейдер.

В древние времена вариантов у нас было немного, фактически было всего два подхода - "Vertex Texture Fetch" (VTF) от NVidia и "Render to Vertex Buffer" (R2VB) от ATI. Каждый из подходов имел свои достоинства, недостатки и ограничения. С тех пор прошло 10 лет, на замену устаревшим техникам пришли UBO, TBO и наконец - SSBO. Для больших объемов данных UBO не пригоден, потому я решил сравнить как обстоят дела у TBO и SSBO.

понедельник, 3 июля 2017 г.

Shader Subroutines. Часть 2. Материалы на подпрограммах.

В предыдущей части мы рассмотрели простой пример использования подпрограмм и разобрались каким образом можно динамически подставлять разные подпрограммы для разных объектов. Сейчас я бы хотел разобрать более реальный пример, чтоб оценить жизнеспособность этого подхода для организации биндлесс рендера.

Shader Subroutines. Часть 1. Основы.

В этот раз я бы хотел поговорить об относительно старой штуке, появившейся в далеком 2010 году, шейдерных подпрограммах (Shader Subroutines). Не смотря на то, что они в виде расширения были добавлены еще в OpenGL 3.2, о них в сети не так уж и много информации. Фактически я сумел найти всего 6 статей на эту тему и всего пару обсуждений использования этой "фичи". То ли все на столько ясно что не требуется пояснений, то ли люди не понимают/недооценивают возможности этого расширения. К слову, я относился ко второй группе людей. Не смотря на то, что я познакомился с этим расширением еще в момент его выхода, но до сегодняшнего дня я не понимал его места в проекте движка.

Давайте же вместе попробуем разобраться с этим.