[Ответить в тред] Ответить в тред

Check this out!


<<
Назад | Вниз | Каталог | Обновить тред | Автообновление
70 | 11 | 39

Рейкастинг а-ля Wolfenstein 3-D Аноним # OP  08/01/17 Вск 17:28:49  318338  
wolf3d.jpg (15Кб, 320x200)
Суп, мейлач. Заинтересовался рейкастингом, решил почитать туториалы по оному http://lodev.org/cgtutor/raycasting.html, кому интересно. Принцип работы примерно понятен, но алгоритм работает медленно (ОЧЕНЬ). Я, конечно, не эксперт, но что-то мне подсказывает, что его можно ускорить, чтобы он не лагал так дико. Есть предположения?
Аноним 08/01/17 Вск 17:59:34  318340
>>318338 (OP)
Думаю по ссылке понятно, что это love2d.

не ОП
Аноним 08/01/17 Вск 18:11:19  318342
>>318340
>>318339
Аноним 08/01/17 Вск 18:14:34  318343
>>318338 (OP)
http://zxdn.narod.ru/coding/ig5ray3d.htm

Не плохая ссылка по данной теме, если не ознакомлен, то прошу ознакомиться.
Аноним 08/01/17 Вск 18:29:20  318346
>>318340
К love2d это отношения не имеет, по ссылке вроде с++
Аноним 08/01/17 Вск 21:49:28  318386
1466808905452.jpg (47Кб, 360x480)
>>318338 (OP)
>Есть предположения?
Проапгрейди свой 386
Аноним 09/01/17 Пнд 00:18:09  318426
>>318338 (OP)
>Я, конечно, не эксперт, но что-то мне подсказывает, что его можно ускорить, чтобы он не лагал так дико.
Суть в том что wolf 3d - не 3d, а очень даже 2d. Расчёт графики не делается по высоте, а только по глубине. Т.е. луч идёт не для каждого отдельного пикселя, а для каждого отдельного столбца пикселей.
Аноним 09/01/17 Пнд 01:46:37  318451
>>318431
Ну просто хуй знает тогда. Всё таки Кармак мог в оптимизон.
Пусть ОП тогда в исходный код смотрит.
Аноним # OP  09/01/17 Пнд 13:07:23  318502
0zT1eSy3EEU.jpg (31Кб, 392x490)
ОП снова вкатился в тред.

>>318426
Я знаю, как работает рейкастинг в вульфе. Только вот он спокойненько шёл на 80286, а вот код по ссылочке в совокупности с QuickCG (либа автора статьи, на SDL базируется) будет лагать на каком-нибудь обоссаном коре2дуо при 1280х1024.
Я грешу на то, что вся эта залупа рисуется попиксельно (!) на софтваре рендере(!!), но всё же хотелось бы оставить рендер на ЦПУ. Чёрт возьми, рейкастинг летает на первом пеньке (1024х768 всё-таки вытянет), почему он должен давать 60-65 фпс на компьютере образца 2007 года в окошке 512х384?

>>318451
У Кармака обычно полная разъёба в исходниках, ибо мелькают неочевидные оптимизации. Но вольфа вроде тоже рисуется попиксельно, правда, там вставочка ассемблерная на рисовку, потому что дос и можно напрямую работать с графикой. Но почитать всё же попробую, лишним не будет.

>>318343
Благодарю, сейчас почитаю.
Аноним 09/01/17 Пнд 13:31:10  318506
1468103058625.png (1074Кб, 800x1149)
>>318502
> рисуется попиксельно
в рейкастинге всё по столбикам хорошо рисуется
Аноним 09/01/17 Пнд 13:52:57  318508
>>318502
Потому что в вульфе не 1024х768, а 320х200 (даже меньше).
Вообще, попробуй вот этот алгоритм http://permadi.com/1996/05/ray-casting-tutorial-table-of-contents/ именно он раньше использовался. Потом выбери тот, который быстрее и профильни, но скорее всего, 800х600 - это предел.
Аноним 09/01/17 Пнд 14:19:59  318509
>>318508
Ну, про 320х200 я в курсе, конечно. Но есть одно маленькое "но": Core 2 Duo помощнее 80386, соответственно, и вывозит нагрузки побольше.
Аноним 11/01/17 Срд 05:28:56  318775
На JS рейкаскинг выдает спокойно 60фпс)
Аноним 12/01/17 Чтв 18:17:39  319354
>>318338 (OP)
Посмотри, ещё захочешь, отвечаю
https://www.youtube.com/watch?v=HQYsFshbkYw
Аноним # OP  07/02/17 Втр 13:13:03  365466
den-pamyati-bor[...].jpg (66Кб, 600x360)
Бамп.

Реализовал рейкастер. Пола, потолка, дверей, спрайтов, нпс и прочего производного нет. Но зато есть текстуры на стенах, а ещё поддерживается прозрачность у оных. кому надо -- есть исходники

А вопрос такого толка -- как реализовать эти ебучие двери? Про спрайты тоже интересно (желательно, чтобы они имели угол поворота, чтобы они были не такими палевными, это уже посложнее).
Аноним 07/02/17 Втр 15:35:08  365869
>>365466
>кому надо -- есть исходники

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

На чём пишешь, кстати?
Аноним 07/02/17 Втр 16:05:53  365926
>>318338 (OP)
Во первых, LUA не то чтобы быстро работает. Плюс, ты пробовал смотреть на производительность в зависимости от размера комнаты?
Аноним 07/02/17 Втр 19:14:54  366759
>>365466
Жду исходники.
Аноним 07/02/17 Втр 22:30:52  367050
>>318502
>почему он должен давать 60-65 фпс на компьютере образца 2007 года в окошке 512х384?
Поищи профайлеры. Типа Sleepy или аналогичных. Они тебе покажут, сколько времени тратит каждая строчка твоего кода.

Аноним 08/02/17 Срд 00:05:24  367191
>>365926
> Во первых, LUA не то чтобы быстро работает.
Лолшто.
Аноним 08/02/17 Срд 02:52:46  367517
>>318338 (OP)
ОП, лучше глянь как делался вульф для айфона
https://github.com/id-Software/Wolf3D-iOS
http://fabiensanglard.net/wolf3d/index.php
Аноним 08/02/17 Срд 14:44:19  368646
blob (106Кб, 816x638)
ОП снова тут.
Собственно, вот исходники: https://github.com/boriswinner/raycaster/tree/testing травля диванон!11

Пишем с другом на лазарусе, просто потому что можем. Было бы кроссплатформой, если бы не Squall.
Основные проблемы -- крайне хуёвая оптимизация. Ну и куча говнокода, который хорошо было бы отрефакторить.

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

Собственно, кто хочет -- пусть смотрит, форкает репозиторий и, может быть, даже делает пулл реквесты.

Алсо, пикрелейтед -- это наш рейкастер в действии.
Аноним 09/02/17 Чтв 10:45:33  369747
Писал многопоточный рейкастер. Рендерит в фулл-хд в районе 140 кадров на i5-4570. На 1.6GHz в районе 50 выдает. Текстуры на палитре, RGBA8 чуть медленнее. Еще есть простор для оптимизации. Производительность от размеров уровня не зависит вообще никак. Единственное нужно как-то отсекать спрайты.
Аноним 09/02/17 Чтв 11:12:53  369773
8kengine 2017-0[...].png (317Кб, 1920x1052)
Апдейт к предыдущему посту. Оказывается еще делал еще затенение по палитре - 80 кадров. В итоге в FHD на i5. Но там решение влобное, можно немного поизвращаться и выбить.
Аноним 14/02/17 Втр 14:58:34  377888
blob (67Кб, 816x638)
blob (79Кб, 816x638)
blob (96Кб, 816x638)
ОП на связи.

Запилил двери -- пока чисто декоративно, к тому же, с багами, но зато работает. Было не слишком сложно, как оказывается. Сейчас жду друга и его переработанный формат карт.

Как обычно, репозиторий, если кому интересно, здесь: https://github.com/boriswinner/raycaster/tree/testing
Можете задавать свои ответы либо в этот тред, либо на гитхабе.
Аноним 14/02/17 Втр 14:59:31  377890
>>377888
алсо, фреймрейт низкий из-за VSync
Аноним 14/02/17 Втр 15:39:13  377904
>>377888
У тебя больше на движущуюся стену похоже.
Ну как было в вульфе, только там не вверх отъезжала стена, а от игрока.
Аноним 15/02/17 Срд 15:36:50  379338
>>377904
способ с отъездом двери вверх -- самый простой, на мой взгляд
Аноним 16/02/17 Чтв 04:37:01  380841
>>379338
У тебя текстура как-то деформируется, а не стена уезжает вверх.
На хак похоже.
Аноним 16/02/17 Чтв 04:44:48  380842
>>380841
ньюфаги - дверь уезжала в сторону в wolf3d
Аноним 16/02/17 Чтв 04:49:17  380843
>>380842
>>377904
Аноним 16/02/17 Чтв 05:50:08  380846
08.jpg (8Кб, 249x265)
>>380843
от игрока отъезжала стена при открытии секрета

ты ещё эффект что при поднятии копья лонгинуса происходит спутай

на дверях просто скролл текстуры
Аноним 16/02/17 Чтв 05:59:35  380847
>>380846
Там же написано, что больше похоже на движущуюся стену чем на дверь.
Аноним 16/02/17 Чтв 14:48:55  380902
>>380841
я просто высоту нормально рассчитываю, а деформацию текстуры не учитываю (SDL2 делает стретч за меня). но это поправимо
Аноним 19/02/17 Вск 14:21:43  381532
Лел, у меня проблема с флоркастингом. Как бы его оптимизировать, чтобы он мне не просаживал фреймрейт?
Аноним 27/02/17 Пнд 13:49:41  384525
>>381532
Можно предрассчитывать дистанции до пола, самая простая оптимизация. Много профита, конечно не даст.
Аноним 27/02/17 Пнд 16:57:12  384596
Ты еще спрайты пачками рисовать не начал, там вообще пизда.
Аноним 28/02/17 Втр 13:03:09  384958
>>384525
расчёты занимают меньше всего времени

>>384596
какие подводные камни?
Аноним 01/03/17 Срд 18:17:09  385360
>>384958
> какие подводные камни?
Z-Buffer
Аноним 01/03/17 Срд 21:58:55  385427
>>385360
Какой нахуй збуфер? Збуфер линейный 1d, чтобы только поверх стенок не рисовалось. Там по филлрейту просто пиздец. Нужно придумывать техники, чтобы овердро не было большого.
Аноним 01/03/17 Срд 23:27:30  385446
>>385427
> чтобы только поверх стенок не рисовалось
А если один противник перекрывает другого?
Ну и спрайты всяких декораций?
Аноним 01/03/17 Срд 23:36:45  385449
1448561031003.png (1038Кб, 1702x2471)
>>385446
>А если один противник перекрывает другого?
>Ну и спрайты всяких декораций?
сортировка по глубине
Аноним # OP  02/03/17 Чтв 13:37:01  385590
Оп в треде.

Короче, я отрисовываю таким методом: на каждый луч у меня создаётся стек (объекты, через которые луч прошёл), и из стека я отрисовываю объекты от самого дальнего до самого близкого.
Аноним 03/03/17 Птн 14:59:02  385929
>>385590
Это называется z-буфер
Аноним 03/03/17 Птн 16:22:04  385968
>>385929
Нифига, это называется "алгоритм художника".
не ОП
Аноним 03/03/17 Птн 17:53:49  385989
>>385968
Ну ладно, z-сортировка. Почти однохуйственно, только оперирование не пикселями, а объёктами.
Аноним 08/03/17 Срд 11:50:38  387405
>>385989
Не неси хуйню. Z-буфер это когда ты сравниваешь глубину текущего пикселя с глубиной уже нарисованного. И если текущий пиксель дальше - дропаешь его. Алгоритм художника рисует на похуй просто в определенном порядке.
Аноним 24/04/17 Пнд 17:47:38  397894
>>368646
>Было бы кроссплатформой, если бы не Squall.
Выпилил Squall из usound и процедуры сделал заглушками. Такой себе вариант, но для посмотреть сойдёт.
Аноним 25/04/17 Втр 15:56:21  398019
Тред вызвал ностальгию, сам делал что то похожее, правда все было написано на чистом С. Пытался еще воксели пилить, вещь как по мне более интересная, но оптимизация там хуевая, дальше простого октодерева не ушел. Матана дохуя, а я в нем шарю плохо.
Аноним 25/04/17 Втр 16:22:56  398023
>>398019
Для ОПа скажу что софтвейр рендер должен вытягивать рейкаст довольно шусто. Но лучше идти в OGL рендер, как у того же gzdoom
Аноним 25/04/17 Втр 16:56:38  398031
>>398023
gzdoom в открытые пространства не умеет, всё лагает безбожно. Общая проблема для всех рейкастеров.
Аноним 25/04/17 Втр 17:22:56  398037
>>398031
Зачем открытые пространства? Это же чистый олдскул.
Аноним 25/04/17 Втр 19:06:55  398058
>>398037
Хочется чего-нибудь поинтереснее чем коридорные коридоры. В идеале gzdoom с нормальными скриптами и нормальным рендерингом.
Аноним 26/04/17 Срд 08:32:06  398117
>>398058
Я пробовал вкатиться в воксели, но при рейтрейсинге все лагает дико, перегон вокселей в полигоны это не торт, а в оптимизацию как Voxlap, я не могу.
Вот можешь посмотреть демки, интересно, но код там просто пиздец.
http://www.advsys.net/ken/voxlap.htm
Аноним 26/04/17 Срд 09:15:22  398119
>>398058
А если хочешь, что бы был быстрый рейкаст, то копай в сторону OpenCL
Аноним 26/04/17 Срд 12:55:39  398137
>>398119
Тут не в аппаратном ускорении дело (в gzdoom'е он есть), а в принципе рендеринга.
Скачай его и попробуй эту карту https://www.dropbox.com/s/c6ue0gf012nxnzk/GTADoom%20-%20V3.6%20-%20Xegethra%202017.rar

Всё безбожно лагает до тех пор, пока ты не начинаешь перемещаться к одной из границ карты, смотря в её сторону. Насколько я понял, движок дальность прорисовки не ограничивает, поэтому пускает лучи во все стороны на максимальную дистанцию.
Аноним 26/04/17 Срд 14:18:08  398140
>>318338 (OP)

Я ни хуя не понимаю в рейкастинге, но, может, нужно просто использовать BSP?
Аноним 26/04/17 Срд 15:34:41  398149
>>398119
А может, кстати, это ещё и с BSP связано, оно ж вроде не перестраивается динамически. Хотя gzdoom вроде как "полноценный" трёхмерный движок. Хуй его знает короче.
Аноним 26/04/17 Срд 17:21:33  398160
>>398137
Рейкаст можно ограничить, то же bsp дерево и порталы. Но я не колупал сорцы гоззы, там скорее всего куча костылей для совместимости с думом из за чего и ограничения рендера.
Аноним 27/04/17 Чтв 01:57:13  398206
>>387405
Алгоритм художника такая-то хуйня, пытался как-то давно его использовать с 3д графикой и если один объект был внутри другого или был им перекрыт наполовину, то рисовался поверх и у меня глаза ломались
Так что он полезен будет только в максимально простых примерах ради оптимизации
Аноним 27/04/17 Чтв 22:23:57  398293
>>398160
>куча костылей для совместимости с думом
Сомневаюсь что это на рендер влияет.
Аноним 06/01/18 Суб 11:50:18  465768
Подскажите а каким образом сделать многоэтажный рэйкаст
Аноним 15/01/18 Пнд 09:08:10  467992
>>465768
Оп ожил. Многоэтажный рейкаст -- довольно заёбистая штука, но у меня была такая идея: отрисовывать блоки точно так же, только смещать их наверх/вниз.
Аноним 15/01/18 Пнд 13:39:02  468057
Зачем софтварный рейкастинг во времена, когда в любой процессор (даже в телефоне!) встроен 3D-ускоритель. Чтобы безбожно тупило и жрало батарейку пользователя? Вредители, а не программисты!
Аноним 15/01/18 Пнд 13:46:33  468063
>>468057
>Зачем софтварный рейкастинг во времена, когда в любой процессор (даже в телефоне!) встроен 3D-ускоритель
и уже ради этого ускорителя приходится ебать тотже рейкастинг но уже в 3д...

тем более софтом проще многих эфектов добиться
Аноним 15/01/18 Пнд 13:50:08  468067
>>468063
Не похоже, что ты вообще в курсе, как пишут под ускорители.
Аноним 15/01/18 Пнд 14:09:50  468073
>>318338 (OP)
Нахуя? Надо прогресс вперёд двигать, виар-мобы писать, многопользовательские. Нет, блять, хотим топтаться на месте в попытках вернуть свой ламповый 1987-й.
Говноеды, блядь.
Аноним 15/01/18 Пнд 14:46:44  468115
maxresdefault.jpg (108Кб, 1280x720)
>>468073
>Нахуя? Надо прогресс вперёд двигать, виар-мобы писать, многопользовательские.
Аноним 15/01/18 Пнд 15:27:41  468132
>>468067
>Не похоже, что ты вообще в курсе, как пишут под ускорители.
Хуёво пишут. Иначе бы мантлы-вулканы и новые директ-иксы не выходили.
Аноним 15/01/18 Пнд 16:57:27  468145
>>468073
спасибо, мне врчата уже хватило
Аноним 28/01/18 Вск 10:56:14  471583
>>468132
Ты ебанутый?


Топ тредов
Избранное