|
|
|
Канал Игры Мечты: «Алгоритмические вопросы.» |
|
|
Shirson
1605 EGP
           Рейтинг канала: 7(626) Репутация: 219 Сообщения: 16511 Откуда: 79°W 44°N Зарегистрирован: 29.01.2002
 |
|
Да, один должен быть.
Попробовал я свой рейкастинг и каждой ячейки. Ну что сказать... халявы непоулчилось Вычислительная сложность слишком высокая, дальше развивать пока не буду, слишком лобовой и неоптимальынй вариант.
Алгоритмы "от ячейки" дают несколько другой результат, чем хотелось бы. Затекание света, впринципе, не самая страшная штука, но хочется более достоверного освещения.
Придётся расчехлять старую наработку, с предварительным построением карты освещённости. И уже знаю, как обойти старые недостатки. Она себя показала более чем хорошо, а с учётом задумок должна работать еще лучше, не привязываясь к заданному со старта количество статических источников и хавая помянутую проблема светящейся лавы на пол-экрана.
Возни, правда, с ней много, но результат должен быть хорошим. Задумки, кстати, пришли из реализации рэйкастинговой модели
Всё, пошёл страдать
_________________ У меня бисера не доxеpа. |
|
|
БулерМэн
420 EGP
   Рейтинг канала: 2(21) Репутация: 68 Сообщения: 1580 Откуда: Гороховец Зарегистрирован: 07.02.2006
 |
|
Я недавно работал с "туманом войны" в своей игре, и пришел к одному наверное единственно правильному решению: посылать невидимые объекты во все стороны от игрока с определенной частотой и не заморачиваться с волновыми расчетами...Объекты сами уничтожаются при столкновении с препятствиями и уже ничего не освещают.
Cкрытый текст (кликните здесь для просмотра)
|
Алгоритм работает. Но в следствии того, что мой игровой движок это GameMaker и сам код это скрипты - такая реализация "освещения" недопустимо тормозит игровой процесс.
Для игрушек(или не игрушек) написанных на компилируемом ЯП, думаю, что скорость будет намного выше. Для справки - игра в видео без "освещения" работает на 30 FPS, с освещением 16-20 FPS.
Честно говоря, я не читал полностью ветку И если речь идет о 3D-окружении - ногами не пинайте
Если речь идет о 3D пространстве - работает тот же принцип: посылаем некое количество объектов(квантов) с определенным числом шагов жизни, как писал ранее Guest, если не ошибаюсь, и если игрок видит часть комнаты в своем вьюпорте, куда попадают эти самые объекты - сделать темноту не такой темной
Как говорили ранее - проблема нескольких источников света решается тем же самым путем: объекты(кванты) которые освещают поверхность других предметов не могут сделать освещение сильнее чем полная, 100% освещенность.
Если хочется сделать засветку некоторых мест: сложение освещенности - складываем силу света от всех "квантов", которые сталкиваются с текущим объектом, на текущем шаге жизни.
Конечно придется считать интервалы попадания этих "квантов", иначе не посчитать на сколько сделать освещение ярче.
Картинка будет более реалистичная. Но без отражений - не камильфо!
Отражения: все объекты имеющие свойство отражать свет - создают некое количество "квантов", когда в них попадает чужой "квант".
Естественно, количество квантов или сила света на выходе должно быть меньше значения на входе, это собственно и определяет степень отражения.
Да, тени будут не такими четкими, если площадь освещения одним "квантом" будет достаточно большой.
А если количество "квантов" увеличить - тени станут более контрастными, но потребуется больше ресурсов ЦП.
PS в своей игре я освещение отключил, по уже известной причине.
PPS имхо
_________________ Сосиска в хлебе
Последний раз редактировалось: БулерМэн (01:47 13-09-2014), всего редактировалось 7 раз(а) |
|
|
Guest
2075 EGP
              Рейтинг канала: 5(167) Репутация: 376 Сообщения: 27975 Откуда: Моск. Зарегистрирован: 12.10.2004
 |
|
БулерМэн : |
Честно говоря, я не читал полностью ветку
|
Shirson : |
|
_________________ Трещит земля как пустой орех
Как щепка трещит броня |
|
|
Shirson
1605 EGP
           Рейтинг канала: 7(626) Репутация: 219 Сообщения: 16511 Откуда: 79°W 44°N Зарегистрирован: 29.01.2002
 |
|
БулерМэн : |
Я недавно работал с "туманом войны" в своей игре, и пришел к одному наверное единственно правильному решению: посылать невидимые объекты во все стороны от игрока с определенной частотой и не заморачиваться с волновыми расчетами...Объекты сами уничтожаются при столкновении с препятствиями и уже ничего не освещают.
|
У тебя каша из LOS, тумана войны и освещения.
Цитата: |
Алгоритм работает. Но в следствии того, что мой игровой движок это GameMaker и сам код это скрипты - такая реализация "освещения" недопустимо тормозит игровой процесс.
|
Это не освещение, а LOS (Line Of Sight).
Цитата: |
Для игрушек(или не игрушек) написанных на компилируемом ЯП, думаю, что скорость будет намного выше. Для справки - игра в видео без "освещения" работает на 30 FPS, с освещением 16-20 FPS.
|
У меня в Shady Caverns на слабом компе, при дальности взгляда раза в три дальше, FPS порядка 300.
Но к теме это отношения не имеет совсем - тут речь шла про механизм освещения.
Цитата: |
Честно говоря, я не читал полностью ветку
|
Да это тут уже меинстрим
Цитата: |
Если хочется сделать засветку некоторых мест: сложение освещенности - складываем силу света от всех "квантов", которые сталкиваются с текущим объектом, на текущем шаге жизни.
Конечно придется считать интервалы попадания этих "квантов", иначе не посчитать на сколько сделать освещение ярче.
|
Жуть какая... проктологическая
_________________ У меня бисера не доxеpа.
Последний раз редактировалось: Shirson (04:42 13-09-2014), всего редактировалось 4 раз(а) |
|
|
БулерМэн
420 EGP
   Рейтинг канала: 2(21) Репутация: 68 Сообщения: 1580 Откуда: Гороховец Зарегистрирован: 07.02.2006
 |
|
Сравнение видимо не корректное, так как Shirson писал явно не на GML.
Если использовать "правильный" алгоритм обработки LOS - в моем случае начинает тормозить неимоверно, это связано в первую очередь с особенностями среды.
Мне очень интересно заняться темой освещения, так как я подразумевал все о чем говорилось в своих наработках. Но в данный момент занят другой программой.
_________________ Сосиска в хлебе
Последний раз редактировалось: БулерМэн (10:13 13-09-2014), всего редактировалось 2 раз(а) |
|
|
Shirson
1605 EGP
           Рейтинг канала: 7(626) Репутация: 219 Сообщения: 16511 Откуда: 79°W 44°N Зарегистрирован: 29.01.2002
 |
|
Освещение можно делать с LOS из истоничка света, но делать это при загрузке или вообще при создании уровня.
На дополнительный слой заносятся данные об освещённости каждой ячейки от окружающих истоников. Для статического света будет само то.
_________________ У меня бисера не доxеpа. |
|
|
Guest
2075 EGP
              Рейтинг канала: 5(167) Репутация: 376 Сообщения: 27975 Откуда: Моск. Зарегистрирован: 12.10.2004
 |
|
Так при загрузке можно вообще по любой произвольной технике статический свет посчитать и сохранить, там время выполнения некритично... А вот в динамике что делать?
_________________ Трещит земля как пустой орех
Как щепка трещит броня |
|
|
Shirson
1605 EGP
           Рейтинг канала: 7(626) Репутация: 219 Сообщения: 16511 Откуда: 79°W 44°N Зарегистрирован: 29.01.2002
 |
|
Можно разменять скорость на память.
У БулерМэна видимость на несколько клеток всего. Для каждой клетки можно завести список клеток, которые из неё видны (заполнять при загрузке или при создации уровня). Отсортировать по дальности.
Это разом решает проблемы и с освещением, и с LOS. И совершенно некритично к скорости рантайма.
_________________ У меня бисера не доxеpа.
Последний раз редактировалось: Shirson (03:02 14-09-2014), всего редактировалось 1 раз |
|
|
Minx
1011 EGP
        Рейтинг канала: 6(332) Репутация: 139 Сообщения: 10548 Откуда: Gomel, Belarus Зарегистрирован: 19.11.2005
 |
|
Shirson : |
Можно разменять скорость на память.
|
А на многопоточность ты ещё не размениваешь? Те же диагонали хорошо параллелятся.
_________________ μηδείς αγεωμέτρητος εισίτω |
|
|
Shirson
1605 EGP
           Рейтинг канала: 7(626) Репутация: 219 Сообщения: 16511 Откуда: 79°W 44°N Зарегистрирован: 29.01.2002
 |
|
Я предложил решение для проблемы БулерМэна с низкой скоростью скриптов.
_________________ У меня бисера не доxеpа. |
|
|
Shirson
1605 EGP
           Рейтинг канала: 7(626) Репутация: 219 Сообщения: 16511 Откуда: 79°W 44°N Зарегистрирован: 29.01.2002
 |
|
Дошли таки руки.
Хитропоиметая метода для обхода кучи узких мест
Считает карту освещённости (при генерёжке уровня) для статических источников света (динамические накладываются влёт), при этом в каждую ячейку записывает список источников света, в пределах которых она находится. Текущая освещённость считается динамически, использую текущие показатели источников (может быть выключен, изменена светисомть/цвет, паттерн мигания и пр). Кроме того, при изменении в самой ячейке, например сносе стены, пересчитывается вектор от источника света, до ячейки и дальше до дальности распространения света вообще.
Уровней яркости нет, умерли как рудимент.
В данном случае свет от источников смешивается по max. Надо попробовать по clamp.
(в квадратных скобках FPS, Intel Core i5-2500 @ 3.3Gh)
добавлено спустя 12 минут:
Это clamp
Как-то феериссески...
_________________ У меня бисера не доxеpа.
Последний раз редактировалось: Shirson (00:03 17-09-2014), всего редактировалось 3 раз(а) |
|
|
Guest
2075 EGP
              Рейтинг канала: 5(167) Репутация: 376 Сообщения: 27975 Откуда: Моск. Зарегистрирован: 12.10.2004
 |
|
А как именно по clamp, в каких пределах? max же тоже пределы имеет.
Хорошо бы на одном seed сравнить, а то разницу визуально непонятно где искать.
_________________ Трещит земля как пустой орех
Как щепка трещит броня |
|
|
Shirson
1605 EGP
           Рейтинг канала: 7(626) Репутация: 219 Сообщения: 16511 Откуда: 79°W 44°N Зарегистрирован: 29.01.2002
 |
|
Пределы 0..1
Вообще, сильно кислотных и разноцветных фонариков у меня не предвидится - в игре цветной свет будет не шибко часто использоваться. Это просто тесты на то, как будут выглядеть смешивающиеся источники.
Сид сделаю один, как доберусь до проекта.
добавлено спустя 40 минут:
Кстати, надо еще затухание "перевернуть"
Сейчас 1-x^2, а надо что-нибудь вроде ekх
_________________ У меня бисера не доxеpа.
Последний раз редактировалось: Shirson (07:40 17-09-2014), всего редактировалось 2 раз(а) |
|
|
Shirson
1605 EGP
           Рейтинг канала: 7(626) Репутация: 219 Сообщения: 16511 Откуда: 79°W 44°N Зарегистрирован: 29.01.2002
 |
|
Квадратичное затухание, Max
Квадратичное затухание, Clamp
Экспоненциальное затухание, Max
Экспоненциальное затухание, Clamp
_________________ У меня бисера не доxеpа. |
|
|
Guest
2075 EGP
              Рейтинг канала: 5(167) Репутация: 376 Сообщения: 27975 Откуда: Моск. Зарегистрирован: 12.10.2004
 |
|
У меня глюки, или в clamp'e пробиваются дюже странные цвета, а на max вообще смешивания не происходит?
добавлено спустя 6 минут:
В экспоненте видна граница дальности источника очень сильно, прямо круг обрисован. А затухание вообще чувствуется только на первых 5 шагах. Ты в ту сторону вычитание делаешь, или у тебя асимптота к 0?
_________________ Трещит земля как пустой орех
Как щепка трещит броня
Последний раз редактировалось: Guest (17:52 17-09-2014), всего редактировалось 1 раз |
|
|
Shirson
1605 EGP
           Рейтинг канала: 7(626) Репутация: 219 Сообщения: 16511 Откуда: 79°W 44°N Зарегистрирован: 29.01.2002
 |
|
Меня самого кламп смущает.
В экспоненте у меня режется значение. Если делать совсем плавано, то затухание очень больше получается. Т.е. уже в паре шагов от истоника довольно темно.
Надо попробовать другую зависимость.
добавлено спустя 3 минуты:
Линейная, Мах.
А что, очень даже нчиего.
_________________ У меня бисера не доxеpа.
Последний раз редактировалось: Shirson (18:01 17-09-2014), всего редактировалось 1 раз |
|
|
Мамонт
1818 EGP
                Рейтинг канала: 1(1) Репутация: 470 Сообщения: 9083 Откуда: Кайнозойская эра Зарегистрирован: 29.09.2003
 |
|
Вы бы картинки такие огромные под спойлер бы прятали, ну или уменьшали бы. Расползается же конфа. :
_________________ Misereatur nostri omnipotens Deus et, dimissis peccatis nostris, perducat nos ad vitam aeternam. Amen. |
|
|
Shirson
1605 EGP
           Рейтинг канала: 7(626) Репутация: 219 Сообщения: 16511 Откуда: 79°W 44°N Зарегистрирован: 29.01.2002
 |
|
Э... картинка 976 по ширине. У тебя какой монитор?
(уменьшать нельзя, контент потеряется)
_________________ У меня бисера не доxеpа.
Последний раз редактировалось: Shirson (19:20 17-09-2014), всего редактировалось 1 раз |
|
|
Guest
2075 EGP
              Рейтинг канала: 5(167) Репутация: 376 Сообщения: 27975 Откуда: Моск. Зарегистрирован: 12.10.2004
 |
|
Квадратичный поярче, на линейном большая часть поля полутьмой залита, видно не очень хорошо.
А на clamp'e, кстати, всё правильно. Между жёлтым и фиолетовым по математике действительно оранжевый и т.д. А что смотрится дико - так никому в голову не придёт в здравом уме так краски мешать. Фиолетовый и жёлтый - дополняющие цвета, тащемта например. То есть самый классический вырвиглаз
добавлено спустя 6 минут:
А на max вместо смешения подавление... Хотя с мешаниной цветов max выглядит лучше.
А, кстати, у тебя max по суммарной яркости или по каждому (R,G,B) каналу?
_________________ Трещит земля как пустой орех
Как щепка трещит броня
Последний раз редактировалось: Guest (19:59 17-09-2014), всего редактировалось 3 раз(а) |
|
|
Мамонт
1818 EGP
                Рейтинг канала: 1(1) Репутация: 470 Сообщения: 9083 Откуда: Кайнозойская эра Зарегистрирован: 29.09.2003
 |
|
Shirson : |
Э... картинка 976 по ширине. У тебя какой монитор?
(уменьшать нельзя, контент потеряется)
|
Разрешение 2048 x 1536 пикселей.
_________________ Misereatur nostri omnipotens Deus et, dimissis peccatis nostris, perducat nos ad vitam aeternam. Amen. |
|
|
|
|
|
Канал Игры Мечты: «Алгоритмические вопросы.» |
|