Расширяем шейдер PlayStation 1 — Аффинная текстурная интерполяция в Unity
В прошлой статье мы реализовали эффект дрожания вершин, характерный для PlayStation 1, воссоздав ограниченную точность вычислений, свойственную старым консолям. Теперь добавим еще одну ключевую особенность рендеринга PS1 — аффинную интерполяцию текстур.
На оригинальной PlayStation не использовалась перспективная коррекция текстур, что приводило к заметным искажениям при изменении угла наклона полигонов. Этот эффект был побочным результатом работы GPU консоли и активно использовался в таких играх, как Metal Gear Solid и Tomb Raider. Давайте воссоздадим этот визуальный артефакт в Unity!
Читать дальшеLospec шейдер в Unity для Demake проектов
Для пары конкурсных проектов мне понадобился механизм, который бы позволил мне получить в игре картинку из далекого прошлого. Низкое разрешение и малое количество цветов. Если с разрешением все более или менее просто — достаточно организовать рендер в текстуру малого размера, — то с цветами оказалось не все так однозначно. Да, в URP Unity есть механизм LUT, который технически может подвести картинку к нужному результату. Но все же строгих ограничений на рендер цветов он не накладывает. А хотелось бы.
Есть масса готовых решений в виде lospec-ассет-паков, но мне захотелось чего то простого, маленького и желательно в одном файле. Поэтому пришлось немного еще разобраться в работе шейдеров.
Читать дальше