Opengl шейдеры рельефа и тесселяции

Два вопроса:

  1. Как в современных играх устанавливаются вершины террейна? Они прикрепляют изображение карты высот к текстуре, а затем используют его для установки положения каждой вершины, или они просто используют 3D-программу (например, Blender) для создания файла, содержащего эти вершины, а затем считывают его в VBO? Пожалуйста, поправьте меня, если мое понимание неверно.

  2. Насколько важны шейдеры тесселяции для этого процесса? Они просто сохраняют производительность или также меняют сцену просмотра?


person Pilpel    schedule 06.01.2015    source источник
comment
Большинство игр с открытым миром используют карту высот для базового ландшафта. (Например, Поле битвы)   -  person dari    schedule 07.01.2015
comment
Таким образом, они экспортируют изображение карты высот с помощью 3D-программного обеспечения, затем считывают его в приложении и связывают с 2D-текстурой, а затем используют texture() в вершинном шейдере для определения положения каждой вершины. Я прав?   -  person Pilpel    schedule 07.01.2015
comment
Я не знаю, как они отображают карты высот, но доступ к ним в вершинном шейдере — это простой способ реализовать это.   -  person dari    schedule 07.01.2015
comment
Откуда вы знаете, что в Battlefield используются карты высот? Также какой рекомендуемый способ рендеринга карт высот?   -  person Pilpel    schedule 09.01.2015
comment
Шейдер тесселяции позволит упростить динамические уровни детализации.   -  person Dan Watkins    schedule 04.03.2015


Ответы (2)


Две наиболее распространенные из тех, что я видел, — это карты высот, в которых значение RGB используется для нормали к поверхности, а значение альфа — для высот, и процедурная генерация ландшафта с использованием такого метода, как Perlin Noise, который использует случайную функцию и сэмплирует свое окружение. вершины, чтобы выровнять высоту.

Шейдеры тесселяции используются в первую очередь для снижения рабочей нагрузки за счет упрощения удаленных сеток, в которых вы не заметите дополнительных деталей. Они меняют сцену для зрителей, но таким образом, чтобы их не заметили.

person Treysen Zobell    schedule 14.10.2017

Обычно высоты генерируются процедурно в шейдерах для вершин. Под процедурным в компьютерной графике понимается некий математический алгоритм. Шум Перлина — один из методов процедурной генерации. Существует несколько стратегий сохранения карты высот небольшого размера и создания различных высот с использованием процедурного метода. Это делается, поскольку карта высот является текстурой и использует полосу пропускания.

Шейдеры тесселяции используются для адаптивной тесселяции. Вы можете думать об этом как о каком-то механизме уровня детализации. Гладкость рельефа зависит от того, сколько треугольников используется для представления фрагмента рельефа. В зависимости от расстояния пикселя от камеры разработчики могут решить, каким должен быть уровень тесселяции на лету, и генерировать больше треугольников для патчей, близких к пользователю. Это способ улучшить детализацию местности. Все здесь происходит на графическом процессоре, поэтому он чрезвычайно эффективен.

До шейдеров тесселяции были доступны такие алгоритмы, как ROAR, которые использовали для адаптивной тесселяции на ЦП.

Подпишитесь на http://vterrain.org/ этого проекта. Вы увидите все состояние реализованных здесь методов ландшафта.

person Paritosh Kulkarni    schedule 16.10.2017