Разработчик добавил software occlusion culling в Block Game: в пещерах отсекается 95% чанков

Software occlusion culling in Block Game

Разработчик добавил software occlusion culling в Block Game: в пещерах отсекается 95% чанков

Автор Block Game на FNA и слабом интегрированном GPU Radeon Vega 8 реализовал программный occlusion culling на CPU. Вместо GPU-буфера глубины он рендерит кубы в буфер 256x128, строит иерархию окклюдеров и отсекает невидимые чанки. Решение работает за половину кадра при 60 FPS и отсекает от 50% чанков на поверхности до 95% в пещерах, поднимая частоту кадров выше 400 даже на слабой системе.

Все вокруг — оглушительный успех, хотя есть случаи, где он ломается, о которых я расскажу в самом конце поста.
  1. Pannoniae

    Отличная статья :) Да, по сути это компромисс между мощностью CPU и GPU. Есть разные типы отсечения. Есть базовые вещи вроде backface culling (поддерживается аппаратно, не рендерить треугольники, обращённые от тебя) и frustum culling (не рендерить объекты, которые не видит твоя камера). Это используется практически в каждой игре.

    С occlusion culling всё немного сложнее, потому что можно делать это либо на CPU, в основном двумя способами: либо низкоразрешённый raycasting / программный рендеринг, как в статье, на CPU и отсекать на основе этого. Это адаптивная нагрузка, можно дать ей больше потоков или мощности CPU, и она масштабируется для лучшего отсечения, что приводит к меньшему количеству пикселей, рендерящихся на GPU.

    Можно также использовать GPU culling, но это сложнее сделать, и это задействует GPU, что создаёт замкнутый круг — ты хочешь использовать GPU culling, чтобы снизить нагрузку на GPU, но интегрированные GPU плохо справляются с compute shaders и пропускной способностью памяти в целом, так что проход отсечения может свести на нет весь выигрыш от отсечения, который у тебя мог бы быть.

    А выделенные GPU обладают достаточной мощностью и пропускной способностью памяти, чтобы просто отправить всё, что в твоём frustum, и большая часть этого будет отброшена по глубине.

    Интересно, было бы ещё быстрее создать граф связности на CPU, чтобы каждый чанк знал, виден ли сосед, и наоборот. При рендеринге граф чанков обходится и видимые чанки отправляются, что-то вроде примитивного сборщика мусора для определения живости. Отсечение было бы хуже, но я предполагаю […]

  2. throwaway2046

    https://archive.today/WCg6q

  3. keyle

    Вау, техническая статья на HN. Что происходит. Мы что, вернулись в 2022? /s

Ещё за этот день

2026-09-29