Войти
ПрограммированиеФорум2D графика и изометрия

Изометрическая карта без сортировки

Страницы: 1 2 Следующая »
#0
(Правка: 23:21) 23:18, 22 мар. 2020

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

А зачем? почему просто не включить Depth Test, рассчитать depth во фрагментном или вершинном шейдере и рисовать тайлы в любом порядке и не париться, а так же это даст возможность создавать чанки и рисовать блоками допустим 32x32x32 тайла.

Или я чего то не учел и так не получится? (интересует именно возможность отрисовки множества этажей)


#1
23:36, 22 мар. 2020


Все гораздо банальнее.

С деф тестом рутины больше.

#2
(Правка: 23:43) 23:42, 22 мар. 2020

Разве не получится примерно то же самое, грубо говоря у дальних тайлов depth - 0.9 , дальше идет слой тайлов 0.8, 0.7, 0.6 и так далее?
(хотя пока с ходу не понятно что будет если добавить 2 этаж, а так же движущиеся объекты которые переходят с тайла на тайл)

#3
1:53, 23 мар. 2020

DeadRipper
> Или я чего то не учел

Полупрозрачные объекты?

#4
(Правка: 9:10) 9:09, 23 мар. 2020

А  если их вообще не будет, только альфа клип? 8 бит стайл. по идее если упороться можно рисовать к каждому тайлу depth map который будет прибавляться к общей глубине 2д спрайта и тогда будут возможны такие штуки как вход внутрь тайла. Но это только в теории конечно

#5
11:56, 23 мар. 2020

DeadRipper
Максимум что мне удалось сделать это дерево глубины, то есть не все тайлы перерисовывать по глубине с самого начала, а рисовать начиная с той глубины которую коснулись изменения, то есть полупрозрачные объекты могут повышать глубину прорисовки.
Все остальные алгоритмы требуют очень больших расчетов на CPU что может оказаться медленнее чем сама прорисовка на GPU.

#6
(Правка: 14:57) 14:49, 23 мар. 2020

Значит скорее всего лучше сортировки еще ничего не придумано.
Но вот в чем тогда проблема - персонажи, они двигаются и могут иметь высоту >1,2 тайлов, их вроде бы надо рисовать вместе с этажом на котором они находятся, с другой стороны если рисовать верхний этаж тогда персонажа перекроет задними тайлами (так как они рисуются после него)

Вот чего хочется добиться - псевдо 3д (Landstalker - Sega Genesis)
Изображение

Неужели персонажа придется дробить на тайлы?
В честном 3д тут конечно проще, работает все как надо, есть глубина

#7
(Правка: 15:44) 15:40, 23 мар. 2020

Не перекроет. Задние тайлы рисуются раньше. Сортировка не учитывает высоту спрайта. За этажность отвечают слои. Поэтому каким бы высоким не был персонаж во всех местах он будет иметь сортировочный индекс его ног. Поэтому и разбивать тут ничего не надо.

#8
19:47, 23 мар. 2020

DeadRipper
> А зачем? почему просто не включить Depth Test
А почему бы просто не рисовать все с верху в низ, как и всегда?

#9
23:05, 23 мар. 2020

foxes
Вот тут не совсем понял, что значит сверху вниз, верх имеется в виду по мировому Y или по экранному Y? (путаница между верхним этажом и экраном)

#10
23:11, 23 мар. 2020

mingw
То есть ты имеешь в виду рисовать как бы такими колоннами от 0 этажа до верхнего сортированными по удалению от камеры?

#11
23:48, 23 мар. 2020

DeadRipper

С исходниками и с кучей примеров (в том числе многоэтажная изометрия x-com и fallout) : https://code.google.com/archive/p/dwlab/downloads

#12
(Правка: 1:30) 1:12, 24 мар. 2020

DeadRipper
Когда рисовали вот такую пиксельную изометрию, отрисовку производили в два слоя, первый земля каждый тайл рисовался сверху вниз (никаких 3D), потом персонажи и объекты или стены также сверху вниз. И никакой там путаницы, сортировок и этажей. Просто последовательно отрисовывали то что лежало в массиве карты.

А то и вовсе одним слоем с начало тайл клетки (стена, пол и тд) потом персонажа в ней.

#13
9:14, 24 мар. 2020

mingw
Ух ты , спасибо!

foxes
> Когда рисовали вот такую пиксельную изометрию, отрисовку производили в два
> слоя, первый земля каждый тайл рисовался сверху вниз (никаких 3D), потом
> персонажи и объекты или стены также сверху вниз. И никакой там путаницы,
> сортировок и этажей. Просто последовательно отрисовывали то что лежало в
> массиве карты.

Дак вот если мыслить в терминах пол, персонаж, стены то получается как бы 2д массив, а если игра именно с этажами - пол из кубов на первом этаже, пол из кубов на втором, третьем, четвертом итд.

#14
(Правка: 10:26) 10:26, 24 мар. 2020

Просто я вот это имею в виду

Iso | Изометрическая карта без сортировки

Красный куб - это персонаж ростом в 2 тайла
и если рисовать по этажам первый, затем второй, то голова скроется за стеной

Страницы: 1 2 Следующая »
ПрограммированиеФорум2D графика и изометрия