Comments 5
Занятно, что в моей памяти не сохранилось всех этих графических глитчей PS1. Сохранилось малое количество полигонов и кубические плечи в RE1. Память (+низкое разрешение кинескопов) жестко отфильтровала большую часть проблем графики. И когда я впервые увидел проект, воссоздающий графику на PS1 (какая-то переделка современной игры с помощью фильтров и шейдеров), я подумал: "да не, не может быть, чтобы там все было так плохо".
Но при просмотре видео из прошлого я все это вижу. Кроме случаев, когда авторы игры хитрейшим образом избавлялись от этих проблем. Например с помощью пререндеренных экранов (серия Resident evil) или использования целых закольцованных видеороликов в качестве локаций (Fear Effect). Еще более занятно, что сегодня стараются вернуть все то, чего программисты прошлого пытались избежать :)
Современность, субпиксельная растеризация:
Субпиксельная растеризация была еще в Doom (1992)! Как раз для того, чтобы ничего не дергалось.
А афинное наложение, кстати, чуть не погубило порт Doom для Playstation - пришлось менять большие полигоны стен на кучу мелких полигонов шириной в пиксель.
По поводу рендера - PS1 имела юнит, который вычислял 3D трансформации, и юнит, который рисовал 2D треугольники (да, текстурированные, но 2D). Собственно потому мы и видим все эти искажения текстур и дрожания - местный "gpu" рисовал треугольники в 2D, так ещё и дискретно, по координатам экрана. Соответственно ни про какую "w" координату у вершин, через которую обычно контролируется перспективное искажение, здесь ничего неизвестно. Да даже про z ничего нет.
В Blender есть проблема с искажением текстур из-за аффинных преобразований.
https://devtalk.blender.org/t/uv-mapping-limitation-vs-uvw-affine-vs-perspective-mapping/16636
Пишем 3D-рендерер в стиле первой PlayStation