Как я могу реализовать эффект укороченной травы?

22

Я смотрел некоторые скриншоты из игр, таких как Rocket League и FIFA:

Ракетная лига

Ракетная лига

ФИФА

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

Это шейдер? Это актуальная геометрия? Или просто текстурированные четверки? Если бы кто-нибудь мог указать мне направление, это было бы очень признательно.

Даниэль Холст
источник
5
+1, очень интересный вопрос. Я мог бы предположить, что это, вероятно, шейдер (геометрия, вероятно, вызовет отставание, текстурированные квадраты, вероятно, будут выглядеть намного более плоскими), но я не совсем уверен.
Superdoggy
2
В программных средствах визуализации это обычно делается с отображением смещения и множеством вершин. После более пристального взгляда кажется, что они используют это и здесь, с очень умным LOD. Я думаю, шейдеры смещения используются скорее всего.
akaltar
Я думаю, что они используют отображение параллакса. Я уверен в этом на скриншотах Ракетной Лиги.
Тара
@akaltar да, я думаю, ты прав насчет этого. И как бы они ни делали LOD, это на 100% без проблем
Даниэль Холст
Я попытаюсь воссоздать это, используя шейдеры и тесселяцию.
Даниэль Холст

Ответы:

7

Возможно, вы захотите изучить технику затенения меха. Это то, что я бы использовал для этого типа травы, так как чем короче трава, тем лучше производительность (меньше слоев).
В основном это работает, налагая одну и ту же поверхность несколько раз с небольшими приращениями: несколько слоев

введите описание изображения здесь

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

Мартин Циз
источник
это довольно интересно, так что я думаю, что мог бы предложить углубиться в это, начиная с этой статьи
Leggy7
2

Скорее всего, это шейдер, использующий Parallax Occlusion Mapping , который использует карту нормалей для «подделки» глубины и теней в текстуре. Смотрите ЗДЕСЬ для примеров.

Редактировать: Как отметил @Leggy, более вероятно, что это отображение смещения, так как нога, кажется, идет между травой. Во всяком случае, это какой-то шейдер отображения высоты :)

Bluk
источник
Я так не думаю, потому что в этом случае нога не появится позади листьев. Отображение смещения звучит для меня наиболее вероятным способом, которым они это сделали
Leggy7
Я думаю, что это было бы верно, если бы это была не короткая трава, где вы могли бы «опустить пол», и если я правильно помню, отображение параллакса выполняется быстрее. Но, возможно, вы правы, я отредактирую свой ответ.
Bluk
2
Вы можете использовать отображение окклюзии параллакса и записать в буфер глубины, чтобы окклюзировать стопу, и это, скорее всего, используемая техника. У шейдера Uber есть возможность взглянуть на загружаемую демонстрацию. assetstore.unity3d.com/en/#!/content/39959
Seph