Comments 5
С русским языком плохо. К счастью, с содержанием статьи всё намного лучше.
Хм, если на номер экземпляра выделили 25 бит, а на номер полигона 7 бит, то получается что в экземпляре не больше 128 полигонов, а всего полигонов на сцене не больше 4 миллиардов (больше значений не влезет в 32 бита).
P.s. А ещё в буфере видимости не обязательно uv координаты хранить в 32 битах каждую, им float16 вполне хватит.
Отношение экземпляров к количеству полигонов - это условность, конкретно технологии, Nanite. Смысл, скорее, в итоговом количестве в 4 млрд. полигонов. По тестам Эпиков, современные видеокарты падают на количестве 300-350 млн. полигонов. Софтверный рендер обходит это ограничение. По итогу, вам всё же требуется закрасить, всего, 8 млн. пикселей для 4K монитора. В демонстрации, Эпики показывали как Нанит режет исходные триллионы до, всего 20 млн., вызываемых для отрисовки, полигонов на кадр.
Множество ошибок и неточностей.
Нанит использует обычную растеризацию для больших треугольников. Для маленькие запполенение идет в ручную
Для кулинга используется иерархический HiZ
Основное хадварное ускорение на gpu - zbuffer, там прям на чипе имеет большой кеш. Его используют и для. MaterialID
Ничего там магического нет, это 500 строчек
Обо всём на свете и ни о чём конкретно. Я не касался всего рендера, я рассмотрел конкретную часть.
Для маленькие запполенение идет в ручную
Вы имеете ввиду, софтверный рендер?
Основное хадварное ускорение на gpu - zbuffer, там прям на чипе имеет большой кеш.
Для одного, только, Z-буфера вам потребуется 8 мб кэша на FullHD разрешении. У 3090 на борту 6 мб. В большинстве производительных карт от 2 до 4 мб кэша. Только начиная с последнего поколения видеокарт Nvidia у вас будет больше 8 мб для Z-буфера.
Поэтому ни какого "хардварного ускорения" нету.
Проблемы перерисовки ни как Z-буфером не решаются. Как я уже отмечал, для решения этой проблемы в наше время проводятся исследования, но ни какого решения ни в одном игровом движке, кроме, UE 5 с Нанитами - нету вовсе.
Его используют и для. MaterialID
Ничего там магического нет, это 500 строчек
Это уже магия. Использование MaterialID через буфер глубины - это хак, чтобы избежать повторного рендера в буфер трафарета. Z-буфер для этого не предназначен.
Unreal Engine 5: Nanite — Z-тест для самых маленьких