Войти
ФлеймФорумРазработка игр

сортировка по глубине

#0
1:29, 17 фев 2022

Пытаюсь воспроизвести старую игру с изометрией.

Есть паки со спрайтами (littleendian). Запись спрайта состоит из блоков:
- "SPRITE" заголовок (ID, имя, длина, ширина, базовая точка и другие)
- "SPRITEPAL" палитра цветов [256]{R,G,B,A}
- "SPRITECB8" индексы из палитры [height][width]{uint8}
- "SPRITECB" тупо пиксели [height][width]{R,G,B,A}
- "SPRITEZB" [height][width]{uint16}

Спрайт состоит либо из SPRITEPAL и SPRITECB8, либо из SPRITECB. Ну тут понятно.

А блок SPRITEZB (отсутствует у некоторых спрайтов) пока для меня не ясен.
Состоит из 16-битного числа в количестве длина*ширину. Первые 8 бит у 16-битного числа всегда нулевые. Вторые 8 бит заполнены, которые я интерпретирую в изображение с серой палитрой.
Но буква Z в имени намекает на высоту, суть которой, кажется, далее.

Начал располагать спрайты в изометрических координатах, но сталкиваюсь с некими сложностями в сортировке по глубине. Есть спрайт стола и спрайт системника.
системник | сортировка по глубине стол | сортировка по глубине

Их SPRITEZB в Gray PNG
системник_SPRITEZB | сортировка по глубине стол_SPRITEZB | сортировка по глубине

В игре системник стоит под столом, и получается, что ни спрайт стола, ни системник не являются верхним слоем.
скриншот_из_игры | сортировка по глубине

Как я думаю: рендерится сначала боковая стенка стола, системник, а потом уже столешница. И, скорее всего, как-то используется SPRITEZB.

Если у этого метода есть какой-то алгоритм/название/способ, напишите пжлст.

+ Показать
#1
(Правка: 2:01) 2:01, 17 фев 2022

Выглядит как обычная глубина (zbuffer). Тебе надо сравнивать эти zb с глобальным збуфером попиксельно, и если тестируемая точка ближе сохраненной, писать её туда и рисовать цветной пиксель. Если у тебя не софтарный рендер, то все это видюха может делать за тебя, знай выводи эти глубины в SV_DEPTH или аналогичное.

#2
3:54, 17 фев 2022

Mr F
получилось | сортировка по глубине
Спасибо. Получилось. На каждом фрейме создаю zbuffer и сравниваю ZB спрайта.
Но это пока на двух спрайтах. Какая просадка будет на всей карте хз.

#3
4:51, 17 фев 2022

papier06
> Какая просадка будет на всей карте хз.
на gpu около-нулевая.

#4
8:43, 17 фев 2022

Прикольно, никогда не видел игр на спрайтах с картами глубины для порядка отрисовки. Как называется? Очень интересно посмотреть

#5
12:59, 17 фев 2022

meekobold
c8195ca0e66090f1970ae57463cda74a | сортировка по глубине

ФлеймФорумРазработка игр