ПрограммированиеФорумГрафика

Воксельные миры (14 стр)

Страницы: 113 14 15 1620 Следующая »
#195
19:19, 19 фев 2024

Рендерферма кроликов
> если на воксель тратим 1bit
А можно это на 2д перенести,чтобы тратить на 1 тайл 1 бит?

#196
19:27, 19 фев 2024

stratego
Нет. Смысл SVO в том, чтобы хранить лишь ПОВЕРХНОСТНЫЕ воксели, экономя память, ну а "внутренние" подменить нелистовыми нодами октодерева.
А в 2d тебе нужно видеть ВСЕ тайлы, глядя сверху

#197
9:48, 28 фев 2024

Если в Minecraft при fov 90 градусов, размер куба на дальности 128 - это 1/256 ширины экрана, при разрешении 1024 это 4 пиксела. Обьединять кубы тоже некрасиво, и невозможно для разнородных материалов
Аналогичный вопрос с вокселями - как их рисовать на экране, - кубиками, точками или point sprite?
И также LOD не всегда построишь

ЗЫ. Я ваш воксель разрушал

#198
10:48, 28 фев 2024

Рендерферма кроликов
Темпоральной когерентностью пользуйся, для далеких объектов работает идеально

#199
11:24, 28 фев 2024

Вий
Для чего работает, culling или что? Если просто стоя на месте вертишь головой - уже дальние обьекты меняются

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

#200
12:19, 28 фев 2024

Рендерферма кроликов
Стоя на месте ты видишь одни и те же точки мира. Проецируй их на куб и крути камеру внутри куба.

#201
12:22, 28 фев 2024

Вий
Ну а если начал двигаться - придется добавить параллакс и гдето сделать переход между кокселями и скайбоксом, и он будет заметен

Кстати вот, если переделать CubeRT на скайбокс, то будут квады, параллельные осям viewspace и упростится проецирование и текстурирование ценой последующего рисования текстурированного скайбокса

#202
12:39, 28 фев 2024

Рендерферма кроликов
Текстурированный скайбокс хорошо рисовать аппаратно.

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

#203
12:41, 28 фев 2024

Вий
> Текстурированный скайбокс хорошо рисовать аппаратно
Текстура формируется на cpu, каждый кадр ее пересылать

#204
12:43, 28 фев 2024

Ну или пускай лучи рандомом как в кроликах я делал - 1/16 экрана псевдорандомно, если оттрасировало т что-то более близкое чем дала репроекция, повтори с соседями, так быстро отрисуешь внезапно выскочивший близкий воксель закрывающий часть репроекции

#205
12:44, 28 фев 2024

Рендерферма кроликов
Ты чтобы на экране картинку получить все равно каждый кадр пересылаешь фреймбуфер. К тому же для невидимых задних граней можно не пересылать. А видимые можно поделить на части и пересылать только для видимых частей текстуру

#206
13:04, 28 фев 2024

Вий
Да, в Minecraft можно трассировать пиксели через минимальный размер куба на экране, даже при дистанции 128 получается 256 х 192 (для экрана 4:3) - можно быстро оттрассировать, получив индексы видимых кубов и передав в glDrawElements. А там рисовать один куб инстансингом, смещая координаты. Вернее, одну грань
Алгоритм можно ускорить, во 1х не трассировать целиком области экрана, покрытые ближними кубами, во 2х, для дальних кубов, эффективно миновать лучом большие пустые пространства, используя 3d mipmap

#207
14:43, 6 мар 2024

Вий
Нужно написать трассировку по 3d массиву с mipmap, но чтото туплю
Сейчас для каждого луча высчитываю время между последовательными пересечениями коорд плоскостей (X=const итд) с шагом 1 и в цикле выбираю ближайшее, увеличиваю его время на соотв const шаг
А как переформулировать для вложенных кубов размера степень 2?

#208
2:53, 7 мар 2024

Рендерферма кроликов
О, Мимокрафт с трассировкой? Пытался я такое замутить позапрошлым летом или около того! Ниасилил, конечно, но проработал изрядное количество бумажных черновиков, как бы мол нам так это всё сделать, чтобы скорость была «60 fps на дистанции 256 чанков на Ленове x201i», в мечтах, кек.
В общем, взял нечто типа Wolf3D с его сугубо горизонтальным рейкастом, а дальше оно должно анализироваться столбцами, причём, очевидно, в дальних чанках уже должен идти какой-никакой LOD с укрупнением столбцов (вплоть до столба размером во весь чанк). Смотрим строго вперёд, прицеливание — смещением крестика прицела, низ и верх экрана — строго 45°, если добрались до грани — меняем оси координат и переключаем вид на «под ноги» (или, соответственно, «поза воющего на луну волка»). Такое нарочитое ретро, под Вольф (ну и с этого ретро имеем скорость и простоту реализации, а не ретро ради ретро).
Каст каждый шаг ограничивается найденными сверху и снизу кубиками, if any. Если кубик нашёлся в середине — бида-бида, дальше каст придётся вызывать рекурсивно, для столбцов выше кубика и столбцов ниже кубика. Надеюсь, понятно объяснил (ну алгоритм вообще детский, поэтому должно быть понятно, кек).

А вот как я это пытался запихнуть в GLSL (кстати, буквально на этой Ленове, и это уже лол, а не кек) — это тема для небольшой пятничной статьи на Хабре, если кому интересно.
Написать? Я попробую, если хотите, только надо до утра сначала дожить, чтобы мне флюс вскрыли. Я из-за этого и пишу сейчас не очень внятно, ибо флюс — это не только внезапно, но и больно, температурно и мозгонесовместимо.

#209
5:37, 7 мар 2024

Рендерферма кроликов
> Вот, исправил баги CubeRT.
А что такие странные ребра у кубов на скриншоте? И что там у тебя за сцена с кубами? Можно сдампить, чтобы можно было письками помериться?

Страницы: 113 14 15 1620 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.