Каковы способы использования растеризации программного обеспечения в современных игровых движках?

9

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

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

После недолгих поисков я изучил технику, называемую «выборка из-за прикуса» Это делает программную растеризацию на буферах различных разрешений. И мы можем запросить окклюзию, используя иерархические z-буферы.

Мой вопрос : каковы случаи использования растеризации программного обеспечения в современных игровых движках, кроме Software Occlusion Culling?

TheBusyTypist
источник

Ответы:

4

Насколько мне известно, Software Occlusion Culling (о котором вы уже упоминали) - практически единственное, для чего по-прежнему будет использоваться программный растеризатор. Procworld использует похожую технику для отображения своих огромных воксельных сред.

Большинство других методов отбраковки, таких как отбраковка усеченного конуса, работают на процессоре, но, если придерживаться этого примера, тест на усеченный конус происходит на уровне объекта, вероятно, с помощью ограничивающего прямоугольника, ориентированного по оси (AABB). Этот тест пересечения намного проще, чем использование полнофункционального программного растеризатора.

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

Поскольку процессор простаивает во время ожидания графического процессора в современных интерактивных 3D-приложениях, можно подумать, что было бы полезно использовать эти циклы простоя для рендеринга на процессоре с использованием программного растеризатора. Проблема здесь, помимо того, что рендеринг становится ужасно сложным и запутанным, часто заключается в пропускной способности. Изображения, отображаемые на процессоре, должны быть переданы в графический процессор перед отображением, что может отменить преимущество.

Дэвид Кури
источник
0

Игры с понятием «туман войны» часто имеют сетку видимости для определения состояния тумана войны в каждой локации. Растеризация иногда используется для изменения состояния тумана войны для конкретных фигур в сетке.

Например, используя способность, которая показывает круг карты с определенным радиусом, или, возможно, что-то, что показывает квадрат.

Не строго связанные с графикой, но определенно использование растеризации в современных играх и техника, которую я видел в RTS.

Другие сеточные данные в играх могут использовать растеризацию для подобных ситуаций.

Алан Вульф
источник
-2

Растеризация - это огромная тема, состоящая из многих частей, и я не программист движка, но я сделаю все возможное, чтобы дать некоторый обзор (это будет далеко не полный список!).

Некоторые очень простые вещи низкого уровня включают в себя:

  • Отбор Frustrum: выбрасывает все, что находится за пределами камеры Frustrum (воспринимайте это как область просмотра камеры).
  • Отбраковка задней поверхности: выбрасывайте каждый многоугольник, не направленный на камеру.
  • Алгоритм художника: рисуйте объекты в порядке их расстояния до камеры, начинайте с объектов далеко, затем идите к камере.

Более полезные вещи, используемые в играх, включают в себя такие вещи, как:

  • Тесселяция : на самом деле очень похожа на LOD (см. Ниже), но теперь в последних версиях DirectX появилась тесселяция, которая обеспечивает автоматическое деление или уменьшение сетки. Это дает огромный прирост производительности графики, потому что вы можете получать polys, если они вам нужны, и избавляться от них, если они вам больше не нужны.
  • LOD : система уровня детализации заменяет сетку объекта на основе расстояния между объектом и камерой. например, у вашего персонажа есть три сетки: одна с 10 000, одна с 5 000 и другая с 1 000 полисов. если вы остаетесь прямо перед ним, отображается сетка с высоким разрешением (10000 полисов), если вы уходите, через 100 м персонаж заменяется средней сеткой, а еще через 100 м - сеткой с низким разрешением. Вместо замены меша вы можете уменьшить его, но это будет сложнее для кода.
  • двоичное пространство разделов : пространство разделено на два тома. это будет повторяться до тех пор, пока вы не достигнете своей цели, например, пока пространство не будет содержать только многоугольники, которые должны быть нарисованы на экране
  • Порталы и ячейки : (он же выбрано для портала) используется во внутренних сценах и / или в шутерах от первого лица. Сцена делится на ячейки (например, комнаты здания), которые связаны между собой портальными забросами (например, дверьми). Вы можете установить порталы, чтобы быть открытыми и закрытыми.

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

К ним относятся лишь несколько возможных технологий для включения в ваш проект. так как у меня недостаточно репутации на stackexchange, я не могу предоставить много ссылок, но вы найдете все это в google :)

Миха Грандел
источник
2
Речь идет о программной (читай: CPU) растеризации. Некоторая информация, которую вы предоставили, касается растеризации в целом, некоторые методы - в моей книге - вообще не имеют ничего общего с растеризацией. Не могли бы вы уточнить в своем ответе, как методы используют или выигрывают от растеризации программного обеспечения?
Дэвид Кури