Графический эффект PS1-игр — в чём его особенность, и как воссоздать на UE4

Небольшой практический туториал.

Сейчас инди-разработчики всё чаще используют в своих проектах стиль игр с PS1. В первую очередь это касается особенностей графики, которые появились вследствие технических ограничений. Тем не менее именно это создавало самобытный визуальный стиль. Можно найти немало примеров подобных современных инди-проектов: Paratopic, сборник Haunted PS1 Demo Disc, в который входит 17 демоверсий, Night of the Consumers, Scary Tales Vol. 1 и многие другие.

Разработчик Мурад Бакхали в своём блоге опубликовал туториал, в котором рассказал, как на движке Unreal Engine 4 воссоздать эффект, имитирующий стиль PS1-игр. По словам автора, самое главное — это эффект дёргающихся вершин у моделей, который возникает при движении камеры или самих объектов. Мы выбрали из текста главное.

Такой эффект подёргивания связан с ограничениями железа PS1: консоль не могла свободно передвигать вершины полигонов, поэтому они привязывались к конкретным точкам в 3D-пространстве. Когда камера или сам объект передвигались, вслед за ними на экране передвигались и полигоны.

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

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

Чтобы создать новую коллекцию параметров, нужно в контент-браузере перейти на Materials & Textures > Material Parameter Collection
Чтобы создать новую коллекцию параметров, нужно в контент-браузере перейти на Materials & Textures > Material Parameter Collection
Затем нужно добавить два скалярных параметра: Global_PSXEffect_3dGridCellSize и Global_PSXEffect_PixelizationAmount. Потом нужно сохранить и закрыть окно
Затем нужно добавить два скалярных параметра: Global_PSXEffect_3dGridCellSize и Global_PSXEffect_PixelizationAmount. Потом нужно сохранить и закрыть окно

Второй шаг — создание функции материала. Функция PSXEffect_Function используется для смещения вершин и создания эффекта подёргивания. Функция также пикселизирует UV-данные — нужно лишь подключить нод Texture Sample, чтобы получить пикселизированную текстуру.

PSXEffect_Function
PSXEffect_Function

Обратите внимание, что при этом использовались ранее созданные параметры.

Графический эффект PS1-игр — в чём его особенность, и как воссоздать на UE4
Графический эффект PS1-игр — в чём его особенность, и как воссоздать на UE4

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

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

Третий шаг — добавление функции PSXEffect_Function к материалам. Это легко сделать — нужно нажать на редактор материала и ввести название функции.

Графический эффект PS1-игр — в чём его особенность, и как воссоздать на UE4

В результате должен получиться эффект подёргивания, у которого можно настраивать не только его силу, но и степень пикселизации текстур.

Итоговый результат

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

103
75 комментариев