TGViewer
GameDev: разработка игр GameDev: разработка игр @make_game · 7.64K subscribers
Post #1811 2.02K
О, тут вышло продолжение серии про сборку Quake на ретро-железе. Санглар отключил все ASM-оптимизации Абраша и измерил FPS: 42,2 упали до 22,7 на Pentium MMX 233MHz. Кармак не врал: ассемблер действительно давал x2.

🔘63 asm-функции в 21 файле, но 65% прироста даёт одна D_DrawSpans8 (растеризация стен). Ещё 22% от surface caching (R_DrawSurfaceBlock8), 11% — отрисовка моделей (D_Polyset*).

🔘Главный трюк: перспективно-корректная текстура требует деления, а FDIV на Pentium занимает 39 тактов. Абраш запускает деление для следующего блока из 8 пикселей в начале текущего, и пока FPU считает, целочисленные пайплайны U/V рисуют пиксели. В коде комментарий: «this is what we've gone to all this trouble to overlap».

🔘TransformVector — пример работы с x87 FPU. Компилятор считает три dot product последовательно и стоит на каждом fadd (ждёт результат fmul 3 такта). Абраш считает три dot product параллельно, перемешивая операции через бесплатный fxch. Ноль столлов.

🔘Ещё: self-modifying code (база colormap вшивается прямо в инструкции), полная развёртка циклов, jump table вместо ветвления на последнем блоке спана, ja вместо двух сравнений для clamp.

В общем, лучше оригинал почитайте, там подробнее и понятнее.

@make_game
  • ⚡ 9
  • 🫡 3
  • 👍 2
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 →