Почему тень сопоставляет стандарт?

Хотя я программист по профессии, я едва затронул разработку игр. У меня был этот вопрос в течение некоторого времени, и теперь, когда я занимаюсь разработкой игр, я подумал, что это будет хорошее время, чтобы спросить.

Почему теневое отображение кажется эксклюзивным способом использования игр для создания теней? Чтобы быть тупым, это выглядит ужасно. Даже современные игры с настройками теней maxed имеют зазубренные тени блока, которые очень отвлекают.

Doom 3, сделанный 11 лет назад, использовал теневые тома, которые выглядели намного лучше, чем любая реализация теневой карты, которую я когда-либо видел, включая игры AAA, выпущенные на той же неделе, когда этот вопрос публикуется. Сторонние моды для Doom 3 даже смягчили края теней, сделав их еще более впечатляющими.

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

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

Этот вопрос не является специфическим для теневого отображения против теневых томов. Они просто единственные 2, которые я видел в полном объеме, и я просто не мог найти много информации о других методах.

39 голосов | спросил gnoblin 2 ndEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 02 Sep 2015 04:00:22 +0300 2015, 04:00:22

1 ответ


44

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

Недостатки тени трафарета

  1. Тени соответствуют форме литейной сетки. Это очень ограниченное , и, вероятно, это самая сильная техническая причина не использовать тени трафарета . Древовидные листья, кусты, проволочные ограждения, разрывы в ткани и другие общие элементы игры с теневым литьем используют альфа-прозрачность для определения формы объекта. Но поскольку трафаретные тени соответствуют сетке, а не строго видимые части текстуры на сетке, они не могут использоваться для таких объектов. Например, класть листьев в дереве обычно представляет собой текстуру кластера листьев на квадроцикле. Тени теней могли бы только показать тень самого квадрата (и у него будут проблемы с этим, поскольку квадроцикл не является закрытой сеткой, но это небольшая деталь, на которую я пропущу этот ответ, поскольку это как правило, в состоянии работать).
  2. Нельзя делать точные мягкие тени. Вы указали, что Doom 3 был модифицирован, чтобы позволить мягкие тени. Эта версия здесь , по крайней мере, использует теневое отображение для мягких теней. Я также видел методы экранного пространства для смягчения жестких теней, но они склонны ко всем видам проблем.
  3. Невозможно сделать тени на прозрачных объектах. Для этого есть обходные пути - рендеринг теней для прозрачных объектов в отдельных проходах и их последующее компоновка. Но помимо сложных обходных путей характер теней трафарета таков, что каждый пиксель на экране либо в тени, либо нет. Это также является причиной отсутствия мягких теней, как упоминалось ранее.
  4. Обычно предпочтительная и наиболее надежная реализация трафаретных теней, часто называемая «Реверс Кармака», на самом деле запатентована, как указал Анже в комментариях. (Не запатентован Кармаком, он должен был обойти это для версии с открытым исходным кодом Doom 3).

В пользу теневого отображения

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

  1. Масштабируемость. Хотя теневое отображение не является ни дешевым, ни идеальным ( ed: но тени трафарета не являются дешевыми либо ), относительно легко торговать верностью для производительности, изменяя разрешение теневых карт или изменяя фильтрацию для теней , Это упрощает настройку качества и производительности теневого изображения для разных систем. Как вы уже указали, это часто не идеально, но многое из этого будет зависеть от восприятия игрока и разрешения, в котором они играют (более высокое разрешение экрана облегчит просмотр блочности тени отображение). Некоторые игры ААА (например, Переломы ) делают потрясающую работу с теневым отображением, просто выбирая правильные фильтры и настраивая правильные кнопки, в то время как многие просто шлепнут там и говорят «достаточно хорошо».
  2. Cookies (текстурированные тени): добавьте текстуру прожектора или витражного стекла, и вы сможете эмулировать все виды источников света в реальном мире. Это также возможно с помощью трафаретных теней, кстати, но в любом случае включает почти все настройки теневого отображения (те же матрицы проекций, которые используются для проецирования текстуры света на объекты, используются для теневого отображения).
  3. Прозрачные тени: в большинстве игр это не так много, но прозрачные тени возможны при теневом отображении. Я имею в виду не только альфа-вырезы, как деревья и заборы, как я упоминал ранее, но я имею в виду частично прозрачные тени, например, от дыма и пыли.

Ни один из этих списков не является исчерпывающим.

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

ответил Jibb Smart 2 ndEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 02 Sep 2015 06:16:47 +0300 2015, 06:16:47

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132