Этого треда уже нет.
Это копия, сохраненная 27 ноября 2018 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

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

не ОП
3 318342
4 318343
>>318338 (OP)
http://zxdn.narod.ru/coding/ig5ray3d.htm

Не плохая ссылка по данной теме, если не ознакомлен, то прошу ознакомиться.
5 318346
>>318340
К love2d это отношения не имеет, по ссылке вроде с++
1466808905452.jpg47 Кб, 360x480
6 318386
>>318338 (OP)

>Есть предположения?


Проапгрейди свой 386
7 318426
>>318338 (OP)

>Я, конечно, не эксперт, но что-то мне подсказывает, что его можно ускорить, чтобы он не лагал так дико.


Суть в том что wolf 3d - не 3d, а очень даже 2d. Расчёт графики не делается по высоте, а только по глубине. Т.е. луч идёт не для каждого отдельного пикселя, а для каждого отдельного столбца пикселей.
8 318451
>>318431
Ну просто хуй знает тогда. Всё таки Кармак мог в оптимизон.
Пусть ОП тогда в исходный код смотрит.
0zT1eSy3EEU.jpg31 Кб, 392x490
# OP 9 318502
ОП снова вкатился в тред.

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

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

>>318343
Благодарю, сейчас почитаю.
1468103058625.png1 Мб, 800x1149
10 318506
>>318502

> рисуется попиксельно


в рейкастинге всё по столбикам хорошо рисуется
11 318508
>>318502
Потому что в вульфе не 1024х768, а 320х200 (даже меньше).
Вообще, попробуй вот этот алгоритм http://permadi.com/1996/05/ray-casting-tutorial-table-of-contents/ именно он раньше использовался. Потом выбери тот, который быстрее и профильни, но скорее всего, 800х600 - это предел.
12 318509
>>318508
Ну, про 320х200 я в курсе, конечно. Но есть одно маленькое "но": Core 2 Duo помощнее 80386, соответственно, и вывозит нагрузки побольше.
13 318775
На JS рейкаскинг выдает спокойно 60фпс)
14 319354
>>318338 (OP)
Посмотри, ещё захочешь, отвечаю
https://www.youtube.com/watch?v=HQYsFshbkYw
den-pamyati-borisa-eltsina-18115.jpg66 Кб, 600x360
# OP 15 365466
Бамп.

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

А вопрос такого толка -- как реализовать эти ебучие двери? Про спрайты тоже интересно (желательно, чтобы они имели угол поворота, чтобы они были не такими палевными, это уже посложнее).
16 365869
>>365466

>кому надо -- есть исходники



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

На чём пишешь, кстати?
17 365926
>>318338 (OP)
Во первых, LUA не то чтобы быстро работает. Плюс, ты пробовал смотреть на производительность в зависимости от размера комнаты?
18 366759
>>365466
Жду исходники.
19 367050
>>318502

>почему он должен давать 60-65 фпс на компьютере образца 2007 года в окошке 512х384?


Поищи профайлеры. Типа Sleepy или аналогичных. Они тебе покажут, сколько времени тратит каждая строчка твоего кода.
20 367191
>>365926

> Во первых, LUA не то чтобы быстро работает.


Лолшто.
21 367517
>>318338 (OP)
ОП, лучше глянь как делался вульф для айфона
https://github.com/id-Software/Wolf3D-iOS
http://fabiensanglard.net/wolf3d/index.php
blob106 Кб, 816x638
22 368646
ОП снова тут.
Собственно, вот исходники: https://github.com/boriswinner/raycaster/tree/testing травля диванон!11

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

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

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

Алсо, пикрелейтед -- это наш рейкастер в действии.
23 369747
Писал многопоточный рейкастер. Рендерит в фулл-хд в районе 140 кадров на i5-4570. На 1.6GHz в районе 50 выдает. Текстуры на палитре, RGBA8 чуть медленнее. Еще есть простор для оптимизации. Производительность от размеров уровня не зависит вообще никак. Единственное нужно как-то отсекать спрайты.
8kengine 2017-02-09 11-11-55-464.png317 Кб, 1920x1052
24 369773
Апдейт к предыдущему посту. Оказывается еще делал еще затенение по палитре - 80 кадров. В итоге в FHD на i5. Но там решение влобное, можно немного поизвращаться и выбить.
25 377888
ОП на связи.

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

Как обычно, репозиторий, если кому интересно, здесь: https://github.com/boriswinner/raycaster/tree/testing
Можете задавать свои ответы либо в этот тред, либо на гитхабе.
26 377890
>>377888
алсо, фреймрейт низкий из-за VSync
27 377904
>>377888
У тебя больше на движущуюся стену похоже.
Ну как было в вульфе, только там не вверх отъезжала стена, а от игрока.
28 379338
>>377904
способ с отъездом двери вверх -- самый простой, на мой взгляд
29 380841
>>379338
У тебя текстура как-то деформируется, а не стена уезжает вверх.
На хак похоже.
30 380842
>>380841
ньюфаги - дверь уезжала в сторону в wolf3d
08.jpg8 Кб, 249x265
32 380846
>>380843
от игрока отъезжала стена при открытии секрета

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

на дверях просто скролл текстуры
33 380847
>>380846
Там же написано, что больше похоже на движущуюся стену чем на дверь.
34 380902
>>380841
я просто высоту нормально рассчитываю, а деформацию текстуры не учитываю (SDL2 делает стретч за меня). но это поправимо
35 381532
Лел, у меня проблема с флоркастингом. Как бы его оптимизировать, чтобы он мне не просаживал фреймрейт?
36 384525
>>381532
Можно предрассчитывать дистанции до пола, самая простая оптимизация. Много профита, конечно не даст.
37 384596
Ты еще спрайты пачками рисовать не начал, там вообще пизда.
38 384958
>>384525
расчёты занимают меньше всего времени

>>384596
какие подводные камни?
39 385360
>>384958

> какие подводные камни?


Z-Buffer
40 385427
>>385360
Какой нахуй збуфер? Збуфер линейный 1d, чтобы только поверх стенок не рисовалось. Там по филлрейту просто пиздец. Нужно придумывать техники, чтобы овердро не было большого.
41 385446
>>385427

> чтобы только поверх стенок не рисовалось


А если один противник перекрывает другого?
Ну и спрайты всяких декораций?
1448561031003.png1 Мб, 1702x2471
42 385449
>>385446

>А если один противник перекрывает другого?


>Ну и спрайты всяких декораций?


сортировка по глубине
# OP 43 385590
Оп в треде.

Короче, я отрисовываю таким методом: на каждый луч у меня создаётся стек (объекты, через которые луч прошёл), и из стека я отрисовываю объекты от самого дальнего до самого близкого.
44 385929
>>385590
Это называется z-буфер
45 385968
>>385929
Нифига, это называется "алгоритм художника".
не ОП
46 385989
>>385968
Ну ладно, z-сортировка. Почти однохуйственно, только оперирование не пикселями, а объёктами.
47 387405
>>385989
Не неси хуйню. Z-буфер это когда ты сравниваешь глубину текущего пикселя с глубиной уже нарисованного. И если текущий пиксель дальше - дропаешь его. Алгоритм художника рисует на похуй просто в определенном порядке.
48 397894
>>368646

>Было бы кроссплатформой, если бы не Squall.


Выпилил Squall из usound и процедуры сделал заглушками. Такой себе вариант, но для посмотреть сойдёт.
49 398019
Тред вызвал ностальгию, сам делал что то похожее, правда все было написано на чистом С. Пытался еще воксели пилить, вещь как по мне более интересная, но оптимизация там хуевая, дальше простого октодерева не ушел. Матана дохуя, а я в нем шарю плохо.
50 398023
>>398019
Для ОПа скажу что софтвейр рендер должен вытягивать рейкаст довольно шусто. Но лучше идти в OGL рендер, как у того же gzdoom
51 398031
>>398023
gzdoom в открытые пространства не умеет, всё лагает безбожно. Общая проблема для всех рейкастеров.
52 398037
>>398031
Зачем открытые пространства? Это же чистый олдскул.
53 398058
>>398037
Хочется чего-нибудь поинтереснее чем коридорные коридоры. В идеале gzdoom с нормальными скриптами и нормальным рендерингом.
54 398117
>>398058
Я пробовал вкатиться в воксели, но при рейтрейсинге все лагает дико, перегон вокселей в полигоны это не торт, а в оптимизацию как Voxlap, я не могу.
Вот можешь посмотреть демки, интересно, но код там просто пиздец.
http://www.advsys.net/ken/voxlap.htm
55 398119
>>398058
А если хочешь, что бы был быстрый рейкаст, то копай в сторону OpenCL
56 398137
>>398119
Тут не в аппаратном ускорении дело (в gzdoom'е он есть), а в принципе рендеринга.
Скачай его и попробуй эту карту https://www.dropbox.com/s/c6ue0gf012nxnzk/GTADoom - V3.6 - Xegethra 2017.rar

Всё безбожно лагает до тех пор, пока ты не начинаешь перемещаться к одной из границ карты, смотря в её сторону. Насколько я понял, движок дальность прорисовки не ограничивает, поэтому пускает лучи во все стороны на максимальную дистанцию.
57 398140
>>318338 (OP)

Я ни хуя не понимаю в рейкастинге, но, может, нужно просто использовать BSP?
58 398149
>>398119
А может, кстати, это ещё и с BSP связано, оно ж вроде не перестраивается динамически. Хотя gzdoom вроде как "полноценный" трёхмерный движок. Хуй его знает короче.
59 398160
>>398137
Рейкаст можно ограничить, то же bsp дерево и порталы. Но я не колупал сорцы гоззы, там скорее всего куча костылей для совместимости с думом из за чего и ограничения рендера.
60 398206
>>387405
Алгоритм художника такая-то хуйня, пытался как-то давно его использовать с 3д графикой и если один объект был внутри другого или был им перекрыт наполовину, то рисовался поверх и у меня глаза ломались
Так что он полезен будет только в максимально простых примерах ради оптимизации
61 398293
>>398160

>куча костылей для совместимости с думом


Сомневаюсь что это на рендер влияет.
62 465768
Подскажите а каким образом сделать многоэтажный рэйкаст
63 467992
>>465768
Оп ожил. Многоэтажный рейкаст -- довольно заёбистая штука, но у меня была такая идея: отрисовывать блоки точно так же, только смещать их наверх/вниз.
64 468057
Зачем софтварный рейкастинг во времена, когда в любой процессор (даже в телефоне!) встроен 3D-ускоритель. Чтобы безбожно тупило и жрало батарейку пользователя? Вредители, а не программисты!
65 468063
>>468057

>Зачем софтварный рейкастинг во времена, когда в любой процессор (даже в телефоне!) встроен 3D-ускоритель


и уже ради этого ускорителя приходится ебать тотже рейкастинг но уже в 3д...

тем более софтом проще многих эфектов добиться
66 468067
>>468063
Не похоже, что ты вообще в курсе, как пишут под ускорители.
sage 67 468073
>>318338 (OP)
Нахуя? Надо прогресс вперёд двигать, виар-мобы писать, многопользовательские. Нет, блять, хотим топтаться на месте в попытках вернуть свой ламповый 1987-й.
Говноеды, блядь.
maxresdefault.jpg108 Кб, 1280x720
68 468115
>>468073

>Нахуя? Надо прогресс вперёд двигать, виар-мобы писать, многопользовательские.

69 468132
>>468067

>Не похоже, что ты вообще в курсе, как пишут под ускорители.


Хуёво пишут. Иначе бы мантлы-вулканы и новые директ-иксы не выходили.
70 468145
>>468073
спасибо, мне врчата уже хватило
71 471583
>>468132
Ты ебанутый?
Тред утонул или удален.
Это копия, сохраненная 27 ноября 2018 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /gd/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски