arctic-engineers-club

Open full view…

Пожелания к следующей версии Arctic Engine

Huldra
Tue, 14 Nov 2017 19:52:20 GMT

Собираю пожелания к следующей версии Arctic Engine. Текущий беклог всегда можно посмотреть в waffle - https://waffle.io/FrostyMorning/arctic

Huldra
Tue, 27 Nov 2018 20:33:15 GMT

Собираешь один массив полигонов и выводишь одним вызовом. Добавление в массив делаешь по одному гексу. 25000 добавлений произойдёт незаметно.

mrshoor
Tue, 27 Nov 2018 20:36:42 GMT

> @Huldra > Собираешь один массив полигонов и выводишь одним вызовом. Каждый кадр собирать этот массив? :) Ведь твой дизайн Draw функции требует каждый кадр это делать.

Huldra
Tue, 27 Nov 2018 20:57:30 GMT

Каждый кадр заполнять этот преаллоцированный массив. --- 25000*(4*3+6*5*4)=3300000 байт на кадр --- на 60 fps это 200 мегабайт в секунду, это незаметно пролетит в сторону GPU

mrshoor
Tue, 27 Nov 2018 21:00:11 GMT

Оно еще до полета на GPU упрется в "объединить меши в один большой буфер". Ну точнее как упрется... оно то может и выдаст 60FPS, но процессорного времени (которое на CPU) не останется больше ни на что.

Huldra
Tue, 27 Nov 2018 21:01:50 GMT

объединить меши из кеша L1 в буфер в кеше, причем результатов всего 200 мегабайт в секундну? Да на одном ядре можно в 20 раз больше спокойно писать.

Huldra
Tue, 27 Nov 2018 21:02:23 GMT

скушает 5% процессорного времени.

mrshoor
Tue, 27 Nov 2018 21:04:42 GMT

> @Huldra > объединить меши из кеша L1 в буфер в кеше, причем результатов всего 200 мегабайт в секундну? Да на одном ядре можно в 20 раз больше спокойно писать. Я бы посмотрел на пример такого "объединения". Только чтобы выдало не 60FPS, а скажем 300-400. Ведь не только пол рисовать + у нас еще игровая логика + засылать на GPU все это + дравколлы на GPU.

mrshoor
Tue, 27 Nov 2018 21:11:18 GMT

Это мой хекс: https://habrastorage.org/webt/1p/kb/rp/1pkbrpcz3adkwvqrjbapo2jemzq.png В нем 16 треугольников и 12 вершин. В математику выше я особо не вдавался ибо непонятно что это за 6*5*4

Huldra
Tue, 27 Nov 2018 21:33:20 GMT

300 fps - легко. это всего 1 гигабайт в секунду на сборку и 1 гигабайт в секунду на передачу на gpu. На raspberry pi уже может и не выйдет, а на x64 легко

mrshoor
Tue, 27 Nov 2018 21:36:21 GMT

Жаль, что какой-то простой пол в игре требует 1Гб в секунду... На всякий случай напоминаю, что это не просто memcpy, а умножение вершины на матрицу + складывание индексов.

Huldra
Tue, 27 Nov 2018 21:37:26 GMT

откуда такие глупости взялись? какая матрица, откуда?

Huldra
Tue, 27 Nov 2018 21:38:20 GMT

ты по ходу выдумываешь лишние сложности сам себе

Huldra
Tue, 27 Nov 2018 21:38:29 GMT

кому в здравом уме в игре придет в голову выключать vsync и смотреть на 400 fps?

mrshoor
Tue, 27 Nov 2018 21:38:45 GMT

> @Huldra > какая матрица, откуда? Как ты себе представляешь объединение гексов в один большой пол и вывод на экран?

Huldra
Tue, 27 Nov 2018 21:39:33 GMT

берешь гекс (6 вертексов 4 треугольника, по 2 текстурные координаты на угол)

mrshoor
Tue, 27 Nov 2018 21:39:49 GMT

> @Huldra > кому в здравом уме в игре придет в голову выключать vsync и смотреть на 400 fps? Если я буду делать игру с геймплеем, в котором надо рассматривать только пол, то да. Мне 400fps для вывода пола не нужно. Но там бывают еще всякие анимации, всякие поиски пути, игровая логика и т.п.

mrshoor
Tue, 27 Nov 2018 21:40:07 GMT

Опять же, эффекты. Тот же самый снег.

Huldra
Tue, 27 Nov 2018 21:40:53 GMT

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

mrshoor
Tue, 27 Nov 2018 21:41:55 GMT

В общем я пошел стримить. Можешь заходить на поболтать про игры: https://www.twitch.tv/mrshoor Буду тебе голосом отвечать. А то руки прямо сейчас мне нужны для кодинга. :)

Huldra
Tue, 27 Nov 2018 21:48:14 GMT

вообще странно рассуждать в терминах "400 фпс" если они не нужны. Если тебе нужно время единственного ядра на что-то еще, то давай время и считать, а не fps. Вот я тебе посчитала что 5% времени кадра уйдет на подготовку меша, 5% на передачу на gpu, итого 90% времени кадра у тебя остается + все остальные ядра процессора свободны. Если мы говорим о 60 fps то у тебя остается ровно 15 мс каждый кадр. Можно хоть партию в шахматы устраивать между двумя AI каждый кадр!

next
last page