Графика › Кадр
LOD, инстансинг и Nanite: как рисуют миллион травинок
Нужно знать заранее: Шейдер: функция для каждого пикселя, Материал: шейдер плюс данные, Буфер глубины: кто ближе к камере
Поле травы — миллион травинок, лес — десятки тысяч деревьев. Видеокарта не нарисует всё это в полной детализации шестьдесят раз в секунду, а процессор не успеет отдать миллион команд. Здесь — три приёма, которые держат большую сцену в бюджете: меньше деталей там, где их не видно (LOD), одинаковое — одной командой (инстансинг), невидимое — не рисовать (отсечение). И как Nanite делает всё это сам, по кусочкам модели. Двенадцатый урок курса «Как движок рисует кадр».
Зачем это
Поле 100 × 100 метров, на каждом квадратном метре сто травинок — миллион травинок, у каждой хотя бы четыре треугольника. С деревьями, камнями и домами сцена весит сотни миллионов треугольников. Без этого урока непонятно:
- почему модель вдали вдруг «прыгает», меняя форму;
- почему трава вокруг игрока кончается кругом, а дальше голая земля;
- почему тысяча одинаковых камней дешевле, чем сто разных;
- что на самом деле делает Nanite и почему он не любит траву и стекло.