Наверное многие видели, что в новой игре Spider-Man есть очень странная вещь: если часто ползать по зданиям, то можно заметить, что на углах часто всплывают артефакты. С одной стороны комната выглядит одним образом, а с другой — уже другим. Почему так происходит? Сейчас объясню.
Существует несколько способов создания интерьеров — геометрией, то есть создавая реальные комнаты, что крайне затратно для производительности, и через interior mapping. В Spider-Man используется именно он. Самая вероятная причина таких артефактов — разные текстуры, которые закреплены на материале окна. Таким образом рендерятся 2 разных интерьера, а так как геометрия фейковая, то и никаких странностей с технического зрения нет — только визуальные. Теперь объясняю, как работает interior mapping.
Итак, это фрагментный (пиксельный) шейдер, который получает на вход несколько параметров: текстуру интерьера и ее карту высот.
Карта высот нужна для создания parallax mapping. Это очень интересная техника, которая является продвинутой версией normal mapping. В то время как normal mapping учитывает только освещение, parallax mapping учитывает также угол, под которым камера смотрит на объект. Имея карту высот, шейдер спокойно искажает плоскую текстуру, придавая ей глубину и объем. Играя, можно заметить недостатки метода: приглядитесь немного вглубь, в мелкие предметы, и вы заметите, что перед вами текстура.
Используя эту технику, можно добавлять очень много интерьеров в свою игру, почти не жертвуя производительностью.