Главная Юзердоски Каталог Трекер NSFW Настройки

Gamedev

Ответить в тред Ответить в тред
Check this out!
<<
Назад | Вниз | Каталог | Обновить | Автообновление | 26 2 13
Вокселы Аноним 14/01/22 Птн 10:01:45 785430 1
1571458059267.jpg 176Кб, 1024x576
1024x576
Может кто нибудь объяснить что из себя представляет воксельная графика?
Мнения расходятся. Кто кто то пишет что это просто такой стиль, или это просто массив кубов, кто то - что это альтернатива вертексной геометрии. Но как она тогда рендерится, если все gl рисуют именно плоские треугольники, а не вокселы. Не понятно короче ничего, природа вокселов покрыта мифами.
Аноним 14/01/22 Птн 11:13:16 785436 2
>>785432
Так а что из себя представляют воксели?
Аноним 14/01/22 Птн 15:33:42 785458 3
>>785430 (OP)
Воксели можно рейтрейсингом отрендерить без треугольников.
Аноним 14/01/22 Птн 16:39:51 785463 4
>>785458
Что ты имеешь в виду? Как это технически выглядит?
Аноним 14/01/22 Птн 17:03:30 785467 5
image.png 280Кб, 1024x586
1024x586
>>785463
А ты понимаешь, как рэйртрейсинг работает? Для каждого пикселя экрана пускается луч, и в какое тело он воткнется, в такой цвет пиксель и красится. И не важно, как ты тела описываешь, мешем из треугольников, сложными формулами или просто набором кубов, нужно только уметь найти точку пересечения луча и тела, и для вокселей это быстро работает.
Аноним 14/01/22 Птн 18:05:25 785471 6
>>785463
>Что ты имеешь в виду? Как это технически выглядит?
Поиграй в Ace of Spades не тот, что в стиме, который теперь Build And Shoot
Аноним 14/01/22 Птн 18:44:49 785475 7
>>785471
Какая то школьная поделка с кубами метр на метр. Посмотри это https://www.youtube.com/watch?v=nr5JqYYye3w
Челы утверждают что вся геометрия в видосе построена без использования полигонов и что воксели тут не упорядоченны в линейные структуры, (как то что ты кинул, там мир скорее всего матричная структура). Но технических деталей не дают, и я хз как они это хранят и рендерят в таком количестве.
Аноним 14/01/22 Птн 21:05:32 785487 8
>>785430 (OP)
>если все gl рисуют именно плоские треугольники
А они и рисуют треугольники для воксельной графики. один треугольник в левонижней части экрана, второй в верхнеправой. И на них кидается фрагментный рейтресинг-шейдер.
Аноним 14/01/22 Птн 21:39:33 785490 9
>>785487
> кидается фрагментный рейтресинг-шейдер.
Ты запускал когда нибудь cycles в блендере? Это не может в реалтайме выдавать хорошую картинку.
Вот ещё Noita вспомнил, там тоже мир что-то похожее на воксели.
Аноним 14/01/22 Птн 21:48:07 785492 10
>>785487
И фрагментный шейдер занимается растерезацией вектора, то есть для его работы нужны 3 вершины иначе нечего рендерить. По моему ты описал стандартный подход с 3д мешем и постфильтром на пиксилизацию (хз как это называется)
Аноним 15/01/22 Суб 02:23:57 785544 11
>>785430 (OP)
Смотря какие вокселы. Если вокселы с текстурой как в майнкрафте, то это треугольники, а если просто цветные, то это может быть sdf с рейтрейсингом как в магикавоксель. Вокселы это просто кубы. А технология разная может быть.
Аноним 15/01/22 Суб 02:28:27 785547 12
>>785475
Поделка 2011 года, дядь. И шла на абсолютно любом некроговне.
А движок вообще писал автор Дюк Нюкема.
Аноним 15/01/22 Суб 08:44:05 785563 13
>>785547
Дак еще бы не шла, она же выглядит на уровне копателя онлайн.
Аноним 15/01/22 Суб 12:04:49 785581 14
>>785563
Эх, пиздюки-зумеры. В оптимизации ничего не понимают
Аноним 15/01/22 Суб 12:23:53 785585 15
>>785490
>cycles в бендоре
Так там же целый пас-трейсинг! Из одного пикселя кидается целая куча лучей, которая переотражается и преломляется в немного рандомных напрявлениях, влияя на результирущий цвет.
А если просто взять цвет вокселя + дот нормали относительно источника света, можно ещё спекулар фонговский приделать и будет всё довольно производительно.
Посмотри шейдеры на shadertoy. Большая часть там — рейтрейсинг или реймаршинг. И некоторые вполне в 60 FPS могут играть.

Тут скорее вопрос, а как подавать воксельное октодерево в шейдер. Сходу не придумаю.

>>785492
>И фрагментный шейдер занимается растерезацией вектора
Что?
Фрагментный шейдер выдаёт цвет пикселя/значение фрагмента исходя из интерполированных аттрибутов вершин текущего треугольника + юниформов.

Мой первый пост это была просто шутка. Я имел ввиду, что если в опенгл просто запустить фрагментный шейдер, не рисуя никаких треугольников, то будет то, что glClearColor. Надо на весь экран поставить прямоугольник, который состоит из двух треугольников.
Аноним 15/01/22 Суб 12:25:10 785586 16
>>785475
Кстати, а как работает софт боди в этом automontage. Матрица перемещает целые воксели от первичного меша?
Аноним 15/01/22 Суб 15:30:20 785600 17
>>785586
Да, делает целый vec3 voxel+=sin(itime)
Аноним 15/01/22 Суб 16:11:47 785605 18
>>785585
> Посмотри шейдеры на shadertoy. Большая часть там — рейтрейсинг или реймаршинг.
Хм, получается если физику рейкаста переносят на шейдер, тогда чтобы этот рейкаст посчитать нужно загрузить в гпу информацию о каждом вокселе? На шейдертой нашел только процедурные модели, но для не процедурной сцены это вряд ли будет 60 фпс.
>>785586
> меша
Они говорят что не используют меши с вершинами.
Я вот думал как noita устроена, там частицы это что то похожее на клеточные автоматы. Мне кажется челы с видоса что то похожее сделали, но с большими физическими параметрами и в ахуенно большем количестве.
Аноним 16/01/22 Вск 18:20:22 785831 19
>>785475
Я давно думал о методах хранения вокселей. Думаю, нужно придумать методы сжатия массивов вокселей.
Надо большие объёмы вокселей не хранить в натуральном виде, а использовать подход, как в RLE - кодируем, что здесь у нас есть некий объём, и кодируем, каким видом вокселя он заполнен. На этом всё.
Таким образом, самое главное - это нужно будет хранить те участки воксельного мира, которые неоднородны. Поверхности какие-нибудь.

Я ещё придумал - надо воксельный мир разделить на слои (как в photoshop).
Самый нижний слой - это сплошная заливка всего мира определённым видом вокселей. Слои, расположенные выше - задают отличия от предыдущих слоёв. Они могут кодировать т.н. "прозрачные воксели". Они означают, что текущий слой не изменяет содержимое вокселя.
Ну и затем, мы применяем последовательно все слои от самого нижнего к самому верхнему, и получаем результат - наш воксельный мир.
Аноним 17/01/22 Пнд 00:17:03 785902 20
>>785600
Очень смешно. И что будет, если растянуть объект? Его ширина, допустим останется неизменной, а длина увеличится. Придётся дублировать каждый N-ный слой вокселей и в полученные воксели записывать данные, что они происходят из растянутого?

>>785605
>нужно загрузить в гпу информацию о каждом вокселе
Не обязательно. Можно загрузить только те, которые граничат с прозрачными вокселями или пустотой. Но как это сделать? Если загружать все воксели, то память будет расти в кубическом масштабе. 5 метров куб — 5000x5000x5000.
А если загрузить в буфер списком воксели с перечислением координат, то придётся каждый фрагмент все воксели перебирать и тогда легче просто треугольниками рисовать.
Да и зачем воксели рейтресить? Может, действительно легче для каждого участка генерировать сетку треугольников? И ЛОДов разных уровней к ним добавить.

>как noita устроена
Хорошая игра, Недавно вторую концовку достиг Я, вообще, стремился к peaciful ending, но не знал, что нельзя с 31-й сферой в New Game+ зайти

Там по сложности клеточного автоматинга что-то между Конвей'с Game of Life и the powder toy. При этом, поддержка вращающихся предметов поддерживается тем, что каждый пиксель имеет свои UV-координаты и они просто преобразуются, ничего сложного на самом деле.

>>785831
Ты только что алгоритмы кодирования изображений/видео.

Простой способ сжать воксели для хранения в ОЗУ — хранить их в виде октодерева.
Аноним 17/01/22 Пнд 01:27:50 785908 21
>>785902
>Очень смешно. И что будет, если растянуть объект? Его ширина, допустим останется неизменной, а длина увеличится. Придётся дублировать каждый N-ный слой вокселей и в полученные воксели записывать данные, что они происходят из растянутого?

Мне кажется что у нас нет какой-то общей точки и мы говорим о чем-то разном. Что у нас есть так это воксель модель и воксель мир с физикой который рендерит воксель модель. Когда мы делаем софтбоди мы берем данные о вокселе из модели и рендерим её в мире соответсвенно тому физическому преобразованию какое надо. Если мы растянем модель то в мире воксель будет отображаться в зависимости от того как прописали физику мира. Скорее всего воксель передвинется и будет воксельный дизеринг.
17/01/23 Втр 14:12:29 851406 22
>>785430 (OP)
Бля иди нахуй еблан квадратный, без негатива
Аноним 17/01/23 Втр 15:17:03 851438 23
>>785430 (OP)
рендерится она как раз треугольниками везде (майнкрафт и подражатели) - так как это кубы то меш для них готовится тривиально. реально куски статичного меша склеиваются для рендера, только видимые стороны, два треугольника на бок. плюс банальные оптимизации на откидывание заведомо невидмых кусков

вокселизм в техническом плане ничего не дает особо. просто с таким упрощением проще считать физику, освещение и всякую такую хуйню зная что у тебя везде базовые формы
Аноним 17/01/23 Втр 15:31:26 851444 24
>>785831
>Я давно думал о методах хранения вокселей. Думаю, нужно придумать методы сжатия массивов вокселей.
Нихуя себе ты мыслитель, а какие еще на тебя снизошли откровения в перерывах между катками в дотане?
Аноним 17/01/23 Втр 15:41:29 851447 25
>>851444
Думаю за год он много чего придумал. Может даже RLE!
Аноним 19/01/23 Чтв 04:16:07 852043 26
>>785430 (OP)
Именно что мнения расходятся. Канонично когда воксель может иметь только цвет, это прямая аналогия пикселя.

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

Воксель это не про рендеринг, это про все остальное. Рендерить можно по разному. Принципы таковы:
- рисовать треугольничками - чем меньше воксель, тем дороже. Зато чем больше, тем дешевле! Больше ебли с поддержкой консистентности, ускоряющие структуры данных сложно переиспользовать. Из поверхностного - рисуешь не каждый кубик, а генерируешь на лету меши чанков, чтобы уменьшить дроуколлы. Это прям верхушка айсберга и он уходит далеко вглубь.

- рейтрейсинг. Стоит всегда одинакого дорого. Требует полностью самописного пайплайна графики, иногда вообще весь рендер делают на компьютах. Ускоряющая структура данных по-сути одна, октодерево, и оно хорошо работает во всех случаях. Рейтрейсинг работает стабильно, может рисовать бесконечность мельчайших вокселей, но требует хороший комп, на слабых как ни пытайся, не заведешь (точнее можно конечно, но картинка будет прям кал). Это вообще не тот рейтрейсинг который RTX, и эти ядра тут не помогут. Пример годной реализации - тиардаун
Ответить в тред Ответить в тред

Check this out!

Настройки X
Ответить в тред X
15000
Добавить файл/ctrl-v
Стикеры X
Избранное / Топ тредов