Lab · потрогать руками
Mode 7 вживую
Один плоский слой-текстура, отрисованный обратным отображением по строкам. Крути поворот и высоту камеры, двигай горизонт, включай построчную перспективу — и смотри, как плоская карта то лежит вращающимся ковром, то уходит трассой в горизонт. Включи «ретро-точность» — у горизонта поползёт рябь.
Как пользоваться
Картинка рисуется как в F-Zero: для каждой строки ниже горизонта берётся свой масштаб ∝ 1/p (p — пикселей ниже горизонта), и вдоль строки сэмплируется один плоский тайлмап. Поворот крутит весь слой (как мир вокруг болида). Высота камеры сжимает/растягивает глубину. Перспектива выкл → строки получают одинаковый масштаб → плоский вращающийся ковёр без горизонта. Ретро-точность 8.8 → шаг по карте квантуется, и вдали появляется мерцание (нет мипмапов).
Что заметить: 1) выключи перспективу — горизонт исчезает, остаётся просто поворот плоского слоя (аффин без глубины). 2) опусти высоту камеры — глубина «прижимается», горизонт ближе; подними — пол растягивается вдаль. 3) включи ретро-точность 8.8 и смотри у самого горизонта: текстура рябит — крупный масштаб + квантованный шаг, мипмапов нет. 4) жми авто-полёт и крути θ — мир течёт под неподвижной камерой, ровно как трасса вокруг болида.
🏠 Что дальше
Вернись в урок, блок «🔧 Запусти и поковыряй»: открой F-Zero в bsnes-plus/Mesen-S и в трассировке HDMA увидишь, как перед каждой строкой в матрицу M7A…M7D пишется ровно этот посчитанный масштаб.
Связи
из урока
SNES Mode 7 — теория: аффинная матрица, обратное отображение, перспектива
масштаб(p)=h/p построчно, fixed-point 8.8.дальше
Quake: настоящий 3D — когда глубина меняется вдоль строки, одного деления на строку мало → перспектива на пиксель.
Что заметить по итогу (чеклист наблюдений)
- Перспектива выкл → плоский вращающийся ковёр; вкл → пол уходит в горизонт. Глубина — это построчный масштаб, не геометрия.
- Высота камеры тянет/жмёт глубину, горизонт двигает линию схода.
- Ретро-точность 8.8 → рябь у горизонта (огромный масштаб + квантованный шаг + nearest, без мипмапов).
- Авто-полёт + поворот: мир движется/крутится под неподвижной камерой — приём F-Zero.