122
Забавы ради. Затести сколько выдает. F1 - переключение на многопоточку и обратно. Если завтра не будет лень, переделаю на RGB565, может быть пошустрее будет. То самое ретро. В стиле вольфа, даже круче. Есть пол и небо. Можно и потолок даже прикрутить.
https://yadi.sk/d/iZGLK8Jfsq7ur
Dampire
В один поток: 31 мс 32 фпс
В многопоточном: 21 мс 47 фпс
Круто. Это рейкастинг? Он может голову вверх-вниз?
122
Да, рейкастинг. Голову нет, не может. В общем львиную долю занимает запись пикселей. Есть идея, как можно попробовать ускориться, но вряд-ли будет сильно быстрее, если честно. Если бы было можно заливать страйпами, то еще как-то получилось бы, а тут хз. Сокращенный в 2 раза размер пикселя (конвертацию из RGBA8 в RGB565 не писал, использовал просто залитые нулями текстуры) дал абсолютно ничтожный прирост.
Dampire
Я уверен, что ускориться можно. Вот например игра Тараса (http://www.gamedev.ru/flame/forum/?id=181583) на том же 1680х1050 дает от 75 до 105, а чаще около 95 фпс. Притом заметь, она однопоточна. Так что умножай еще на 2-2.5 при грамотно сделанной многопоточности на 4-х ядрах.
Ты используешь профайлеры? Было бы интересно взглянуть на то, где там у тебя все тормозит.
У Тараса даже не RGB565, а 1 байт на пиксель, на это имхо и стоит ориентироваться. Ну и многопоточность если там упирается в заполнение пикселями я думаю не поможет. Вот simd - да.
122
Интересный челендж!
>(б) На них текстуры небольшого разрешения.
32x32px как в MineCraft?
122
Профайлил. Тормозит именно чтение->запись в текстуру. Причем от размера текстуры не зависит вообще, количество лучей то всегда одинаковое. Вчера ночью решил перевести на палитру, фпс подрос немного. Закончу, выложу.
kipar
> У Тараса даже не RGB565, а 1 байт на пиксель
Угу, он экономит. Снижает нагрузку на пропускную способность памяти. Однако, вроде бы он сам в теме писал, что скорость не сильно от этого зависит. Не помню точнее, могу ошибаться.
> многопоточность если там упирается в заполнение пикселями я думаю не поможет.
Поможет!
Вот, пару лет назад я писал 2д двиг (http://www.gamedev.ru/projects/forum/?id=169115), там простое копирование спрайта в буфер экрана. И что думаешь, многопоточность мне раза в 2 дала прибавку. То есть даже на линейном копировании спрайта, память в память.
А в 3д так или иначе, при любом методе - больше сложных рассчетов. Поэтому многопоточность даст прибавку сильнее, не в 2 раза а в 2.5-3 по моим прикидкам.
Vitorio
> 32x32px как в MineCraft?
Да, подобные. Размер жестко не ограничен.
Не думаешь поучаствовать? Присоединяйся! :)
Dampire
> Тормозит именно чтение->запись в текстуру.
Мне кажется, ты все-таки делаешь что-то не так. Ну смотри, рейкаст работал хотя и в малом окошке, но на 286-ом! Вот эти все старые игры, Катакомбы, Вольф3д. Я на 286 просто очистку всего экрана цветом не мог делать: медленно. Приходилось двигать спрайты, очищая пиксели их предыдущих позиций, и рисуя их на новых.
А Вольфенштейн бегал в 3д. Потому что рейкаст - очень экономный и быстрый способ.
> Вчера ночью решил перевести на палитру, фпс подрос немного. Закончу, выложу.
Давай, жду! Если сможешь сделать одновременно значительное количество кубов на экране, запишу в участники.
122
Чтож ты делаешь, изверг, пойду свою фигню оживлять.
122
Что значит значительное количество кубов? Комплексность сцены вообще не роляет, там выборка то примитивная идет. Весь перфоманс от разрешения зависит и скорости записи пикселей.
Dampire
Прямо сейчас об этом рано говорить, но понятно, что степень соответствия заданию у участников может быть разной. Об этом и речь. На этапе судейства будем смотреть.
Пока просто расставь кубы в случайных позициях.
Да, кстати. Не мог бы ты скомпилировать без требований новых либ? На некоторых тестовых компах просит msvcp140.dll, однако отказывается работать даже если подсунешь ее рядом.
Hardcode
> Чтож ты делаешь, изверг, пойду свою фигню оживлять.
Давай, было бы интересно!
Как я понимаю, портальный движок? Насколько он может в сложную геометрию?
122
> Как я понимаю, портальный движок? Насколько он может в сложную геометрию?
Портальный, да. з-буффера нет. Вырезать им тонкую геометрию - гиблое дело. Зато можно делать самопересекающиеся и зацикленные комнаты. Для рисования объектов к комнатах надо вводить з-буффер или думать или делать контент чтоб не слишком уродско выглядело.
122
> Не думаешь поучаствовать? Присоединяйся! :)
Думаю, черт побери:) Задачка интересная.
Если в ближайшие пару дней освою растеризацию треугольника, то буду участвовать.
122
Mikle-у про конкурс писал? Для включения в эту тему?
Тема в архиве.
Тема закрыта.