пятница, 21 сентября 2018 г.

Meshlets

Вот и случилось то, что я уже давно ожидал/хотел, появилась возможность управлять выводимой геометрией из специального шейдера, я предполагал что это будет какой-то "Control shader" а получился "Task shader", почти угадал)

Да, о чем это я, 19 сентября NVidia презентовала целый пак новых расширений.
Их краткий обзор можно найти здесь:
https://blog.icare3d.org/2018/09/nvidia-turing-vulkanopengl-extensions.html

Большинство из них связаны с VR и RTX и пока интересны только узкому кругу людей.
Но среди них есть одно "революционное" расширение, его важность примерно как переход от FFP к шейдерам. Речь о "Mesh shader": VK_NV_mesh_shader / GL_NV_mesh_shader

воскресенье, 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 статей на эту тему и всего пару обсуждений использования этой "фичи". То ли все на столько ясно что не требуется пояснений, то ли люди не понимают/недооценивают возможности этого расширения. К слову, я относился ко второй группе людей. Не смотря на то, что я познакомился с этим расширением еще в момент его выхода, но до сегодняшнего дня я не понимал его места в проекте движка.

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

воскресенье, 17 апреля 2016 г.

Delphi и Vulkan, первое знакомство.

Не так давно мне в этом блоге напомнили о существовании давно забытой мной GLScene.
Как оказалось - все еще есть энтузиасты, пытающиеся вдохнуть жизнь в этот продукт, даже портировать ее на Vulkan. Могу только пожелать успеха ребятам в этом нелегком деле, надеюсь у них получится то, что не удалось когда-то нашей команде :)

Но история о другом, портирование GLScene на Vulkan началось с портирования заголовочных файлов, а это уже достаточно чтоб попробовать там что-то сделать, да и приятно было вернуться на Делфи, после нескольких лет разработки на С++. Вообщем вот что из этого получилось...

среда, 23 марта 2016 г.

Vulkan API, Framebuffers

Ну и предлагаю вам почитать превод последней части главы "Render Pass" спецификации, в которой рассказывается об еще одном фундаментальном понятии Вулкана - Framebuffers, они же буферы кадра или фреймбуферы. 

понедельник, 21 марта 2016 г.

Vulkan API, Render Pass

Render Pass

Вот я и добрался до следующего болшого куска спецификации, так же имеющего важное значение для понимания фундаментальных основ Вулкана, к Render Pass и Subpass. В предыдущей статье я уже затрагивал тему Render Pass, теперь пришло время изучить спецификацию.