Comments 12
Годнота то какая! Держи плюсик в карму
Статья клёвая, сам хотел писать про написание игры для R36s, но не успел :)
Это значит, что на Anbernic однопоточная программа будет работать по грубым оценкам примерно в 10-20 раз медленнее, чем на ПК. На самом деле это не так страшно, смартфоны с аналогичными мощностями в 2014 году тянули Minecraft PE 0.9.0 .
Это не грубая оценка, это вообще некорректное сравнение. A53 ядра в смартфонах начали активно появляться ближе к 2015 и это был околотоп (они и сейчас встречаются в юнисоках бюджетного сегмента). В 2014 все ещё Cortex A7 и A9 местами был в ходу и Майнкрафт они тоже тянули)
Я знаю, что это некорректное сравнение, но мне надо было дать какую-то оценку. Цифра в 10-20 раз взялась не из головы. Я проводил профилирование своего алгоритма распространения света и сравнивал производительность на своем ноутбуке (Huawei Matebook 16S с i7) и на Anbernic. Разница в цифрах была примерно в 10-20 раз.
Загрузить данные всего мира в массив — это не самая оптимальная, но неплохая идея
Плохая, когда у устройства всего 512МБ-1ГБ рамы. Лучше стриминг прикрутить) Дескриптор блока это ведь не просто его ID обычно, а инстанс класса с описанием его параметров.
а вот загрузить весь мир в видеопамять не прокатит
Это же мобильный гаджет, там чаще всего нет VRAM окромя небольшого кэша + памяти под фреймбуфер/Z-буфер/стенсил
На все грани, скорее всего, даже не хватило бы памяти, а если и хватило бы, то это было бы слайд-шоу
А зачем хранить грани? G31 держит ES 3.0, инстансинг для кого придумали? :) Даже если не строить динамический батчер видимых блоков вокруг игрока, все равно будет шустро + экономнее по RAM (если брать стандартную вершину Position + Normal + TexCoord)
Геометрический шейдер позволяет собирать геометрию по точкам прямо на GPU. Говорят, что геометрический шейдер не самый быстрый, но он дал существенный прирост производительности в моём конкретном случае
У него ограничение на число выходных вершин. На DX10 железе это что-то вроде 3-х или 4-к? Но для кубиков норм.
В шейдере стоит условие, которое проверяет альфа-канал в текстуре. Если альфа меньше 0.1, то вызывается операция discard, которая отсекает пиксели.
К слову альфатест с дискардом плохо работает на TBDR GPU насколько мне известно. Те же PowerVR дискард очень не любят из-за необходимости фоллбэкаться на классический растеризатор.
Ты тоже напиши, тема не раскрыта до конца, мой способ сыроват. У тебя явно больше опыта в этом, тебе точно есть о чём написать.
Сколько ещё будешь это вспоминать? Это просто логично использовать современные тулзы там, где они нормально работают.
Ещё прикольно, что вообще всё сделано на шарпах без использования SDL
Сколько ещё будешь это вспоминать?
Ну ты там прям так наехал, обесценил весь мой опыт дотнетчика, что это сложно забыть) И тебе совсем пофиг было, что я пилил под одноплатник под который пока еще есть мейнлайн, но он вышел из вендорской поддержки много лет назад и под родные образы кора ещё не было или он очень старый.
Ещё прикольно, что вообще всё сделано на шарпах без использования SDL
Тут да, респект :)
Как писать нативные игры с OpenGL ES для игровой ретро-консоли Anbernic на C#