TGViewer
GameDev: разработка игр GameDev: разработка игр @make_game · 7.64K subscribers
Post #1750 3.02K
«No Graphics API» — манифест о том, что DirectX 12 и Vulkan устарели

Sebastian Aaltonen (30 лет в графике, работал в Ubisoft, Unity DOTS, Vulkan Advisory Panel) написал большой технический пост о том, почему современные «низкоуровневые» API на самом деле legacy, и как должен выглядеть API для современных GPU.​

➡️ Главный тезис

DirectX 12, Vulkan и Metal проектировались 10 лет назад под GPU 13-летней давности. Тогда были разные архитектуры, разделение памяти, сложные биндинги.

На минуточку:
Текстурные сэмплеры не могли читать фреймбуфер, растеризатор не мог читать текстуры другого сэмплера. Из-за этого не было поддержки многопроходного рендеринга — нельзя было использовать результат одного прохода как текстуру для следующего.


Сейчас все GPU сошлись к единому дизайну: когерентные кэши, 64-битные указатели в шейдерах, bindless текстуры, PCIe ReBAR. Большая часть API-сложности больше не нужна.​

➡️ Что можно выкинуть
🔘Весь зоопарк буферов (typed, structured, constant, vertex, index) → просто 64-битные указатели
🔘Descriptor sets / root signatures → один указатель на структуру данных
🔘Resource barriers с per-resource tracking → простые stage-to-stage барьеры
🔘Pipeline State Objects с сотнями комбинаций → минимум стейта
🔘Texture layout transitions → современные GPU их не требуют

➡️ Как должно выглядеть
// CPU: пишем данные напрямую в GPU-память
Data* data = gpuMalloc<Data>();
data->input = inputBuffer;
data->output = outputBuffer;

// Запуск — один указатель
gpuDispatch(cmd, pipeline, data, {128,1,1});

Шейдер получает один const Data* — как thread function в OS. Никаких биндингов.

Пост очень технический (детали про GCN, RDNA, descriptor heaps, DCC compression), но идея простая: GPU эволюционировали, API — нет.

📎 Оригинальный пост

@make_game
Sebastian Aaltonen No Graphics API — Sebastian Aaltonen Graphics APIs and shader languages have significantly increased in complexity over the past decade. It’s time to start discussing how to strip down the abstractions to simplify development, improve performance, and prepare for future GPU workloads.
  • 🔥 12
  • 🤔 5
  • ❤‍🔥 1
  • ⚡ 1
More from @make_game
  1. Sep 23, 2026Как сваривать вершины меша за линейное время В процедурной генерации части геометрии удобн…
  2. Sep 23, 2026Как строить фрактальные берега с многоуровневой диаграммой Вороного В диаграмме Вороного с…
  3. Sep 23, 2026Как подготовить генератор гекс-карт Unity к задачам Burst Одинаковые настройки и начальное…
  4. Sep 22, 2026Как пул объектов защищает эффекты от фрагментации памяти Один взмах посоха порождает сотни…
  5. Sep 22, 2026Как сервер засчитывает точный выстрел при сетевой задержке В быстрой сетевой игре ваш клие…
  6. Sep 22, 2026Как Binding of Isaac генерирует подземелья Сначала генератор строит план на сетке 9×8, зат…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →