LerpworksAcademy
На этой странице

Графика › Кадр

LOD, инстансинг и Nanite: как рисуют миллион травинок

Нужно знать заранее: Шейдер: функция для каждого пикселя, Материал: шейдер плюс данные, Буфер глубины: кто ближе к камере

Поле травы — миллион травинок, лес — десятки тысяч деревьев. Видеокарта не нарисует всё это в полной детализации шестьдесят раз в секунду, а процессор не успеет отдать миллион команд. Здесь — три приёма, которые держат большую сцену в бюджете: меньше деталей там, где их не видно (LOD), одинаковое — одной командой (инстансинг), невидимое — не рисовать (отсечение). И как Nanite делает всё это сам, по кусочкам модели. Двенадцатый урок курса «Как движок рисует кадр».

Зачем это

Поле 100 × 100 метров, на каждом квадратном метре сто травинок — миллион травинок, у каждой хотя бы четыре треугольника. С деревьями, камнями и домами сцена весит сотни миллионов треугольников. Без этого урока непонятно:

  • почему модель вдали вдруг «прыгает», меняя форму;
  • почему трава вокруг игрока кончается кругом, а дальше голая земля;
  • почему тысяча одинаковых камней дешевле, чем сто разных;
  • что на самом деле делает Nanite и почему он не любит траву и стекло.

Дальше в статье

  1. Две цены сцены
  2. Уровни детализации
  3. Почему мелкие треугольники дороги
  4. Инстансинг: печать одной формой
  5. Не рисовать невидимое
  6. Nanite: детализация по кусочкам
  7. В инструментах
  8. Где ломается
  9. Связи: та же идея в других областях
  10. Главное
  11. Проверь себя