Страница: 1 | 2 |
Вопрос: 2D Освещение.
Добавлено: 08.01.14 20:06
Автор вопроса: AWP | Web-сайт:
Привет.
Хочу сделать освещение для Двумерной игрушки, по типу такого:
http://habrahabr.ru/post/204782/
Игра не на dx или gl - Пишется на спрайтовом движке sr2d от майкла, соответственно о векторной графике можно забыть.
Но есть один плюс - мне не нужно динамично освещение обновлять.
Вот, хотелось бы узнать ваши мысли о том, как это реализовать.
У меня пока только одна мысль - заранее рендерить lightmap для каждого источника света. Либо во время загрузки карты, либо еще в редакторе при сохранении. В Первом случаи - загрузка карты будет очень долгой. Во втором - вместе с картой будет идти куча карт освещенности.
Может есть более гениальный способ для всего этого?
Ответы
Всего ответов: 18
Номер ответа: 1
Автор ответа:
Mikle
Вопросов: 5
Ответов: 134
Профиль | | #1
Добавлено: 09.01.14 07:50
Пара секунд на Атоме, посмотри в моей 64к игре, там 3D маска для большой карты рассчитывается при старте игры за несколько секунд. Рассчёт лайтмапы софтверный, не на видюшке.
Расскажи подробнее, как устроена карта, которую нужно затенять.
Номер ответа: 2
Автор ответа:
AWP
ICQ: 345685652
Вопросов: 96
Ответов: 1212
Web-сайт:
Профиль | | #2
Добавлено: 09.01.14 16:18
Сделал небольшой тест:
http://bmber.in/download/test.jpg
Стандартный скроллинг.
-Карта блочная(кубики 32x32) + будет доп. поверхность аля worms, только растровая.
-На карте будут спрайты с альфо-каналом. Соответственно трассировка для Лайтмапа будет не по "кубикам"проходит луч или нет), а по всем точкам, что может значительно увеличить время обработки.
-Будут источники света, которые могут выключаться и менять степень освещенности. Поэтому, думаю, одной большой лайтмапы на всю карту не хватит и придется делать свою для каждого источника света.
-Возможно будут небольшие, динамичные источники света, но как их в реал-тайме обрабатывать пока не знаю.
Т.ч. сейчас сделал считается сносно, но для реал-тайма даже рядом не подходит.
Номер ответа: 3
Автор ответа:
AWP
ICQ: 345685652
Вопросов: 96
Ответов: 1212
Web-сайт:
Профиль | | #3
Добавлено: 09.01.14 16:21
Забыл добавить. Предполагается, что карта будет большая. Массив где-то, 256х128, может больше.
Номер ответа: 4
Автор ответа:
AWP
ICQ: 345685652
Вопросов: 96
Ответов: 1212
Web-сайт:
Профиль | | #4
Добавлено: 09.01.14 20:41
Немного допила и почти реалтаймовые готовы.
http://youtu.be/MijbYYYC2ew
Но, чувствую, в полевых условиях, оно может не пройти проверку. Все упирается в смазывание картинки. В здоровых лайтмапах будет конкретно лагать...
Номер ответа: 5
Автор ответа:
Mikle
Вопросов: 5
Ответов: 134
Профиль | | #5
Добавлено: 10.01.14 06:37
Так тебе нужен реалтайм, или не реалтайм? Ты же писал:
Номер ответа: 6
Автор ответа:
AWP
ICQ: 345685652
Вопросов: 96
Ответов: 1212
Web-сайт:
Профиль | | #6
Добавлено: 10.01.14 09:53
-Возможно будут небольшие, динамичные источники света, но как их в реал-тайме обрабатывать пока не знаю.
В основном, все будет статично, но будет(я надеюсь) парочка динамичных источников.
Номер ответа: 7
Автор ответа:
Mikle
Вопросов: 5
Ответов: 134
Профиль | | #7
Добавлено: 10.01.14 16:47
Вот посмотри медленный, но качественный расчёт теней, для статики пойдёт:
http://yadi.sk/d/Ind2_A_NFo7CF
Номер ответа: 8
Автор ответа:
AWP
ICQ: 345685652
Вопросов: 96
Ответов: 1212
Web-сайт:
Профиль | | #8
Добавлено: 10.01.14 19:18
Спасибо! Тени красивые, но они как радиальный моушен-блюр работают. От каждой точки тень отбрасывают, без отсечения "невидимых" частей.
Буду свои допиливать, но надо как-то найти способ более быстрого сглаживания, хотябы по контурам.
В идеале с радиальным размазыванием. Типа такого:
http://bmber.in/download/blurtest.jpg
Номер ответа: 9
Автор ответа:
AWP
ICQ: 345685652
Вопросов: 96
Ответов: 1212
Web-сайт:
Профиль | | #9
Добавлено: 10.01.14 23:35
Модифицировал немного.
http://www.youtube.com/watch?v=ymMHJT1k4pA
Номер ответа: 10
Автор ответа:
AWP
ICQ: 345685652
Вопросов: 96
Ответов: 1212
Web-сайт:
Профиль | | #10
Добавлено: 28.01.14 21:03
Переписал функцию смазывания на FreeBasic и загнал в dll, которую интегрировал в SR2D_Sprite.
Прирост производительности(эффекта blur), по сравнению с vb ровно в два раза.
Номер ответа: 11
Автор ответа:
Mikle
Вопросов: 5
Ответов: 134
Профиль | | #11
Добавлено: 29.01.14 07:51
AWP
Очень интересно, можешь дать для тестов dll и исходник функции, хочу потестировать. Пока ещё ни один бейсик так не обгонял VB6, разве что vb.net на современных процессорах. Но FreeBasic я ещё не сравнивал.
Номер ответа: 12
Автор ответа:
AWP
ICQ: 345685652
Вопросов: 96
Ответов: 1212
Web-сайт:
Профиль | | #12
Добавлено: 29.01.14 13:43
Mikle
Я, честно говоря, чуток облажался. В vb забыл оптимизации врубить. Прирост всего 8.3% оказался.
С другой стороны, он тебе может понравиться: встроенный ассемблер, многопоточность...
в общем, тест тоже выложу: http://bmber.in/test.zip
И чуток оптимизировал трассировку: http://bmber.in/test.jpg
Номер ответа: 13
Автор ответа:
Mikle
Вопросов: 5
Ответов: 134
Профиль | | #13
Добавлено: 29.01.14 13:58
Это реальнее, vb.net тоже подобный прирост даёт. Но я почти уверен, что на AMD процессоре VB6 окажется впереди.
Номер ответа: 14
Автор ответа:
Mikle
Вопросов: 5
Ответов: 134
Профиль | | #14
Добавлено: 29.01.14 17:48
AWP, а в VB6 при тестировании ты тоже применил этот трюк с подготовкой таблицы значений для деления заранее?
Почему твоя программа ничего не показывает, только выводит время?
Номер ответа: 15
Автор ответа:
AWP
ICQ: 345685652
Вопросов: 96
Ответов: 1212
Web-сайт:
Профиль | | #15
Добавлено: 29.01.14 18:54
Да, таблицы и там и там были.
у меня Феном 2.
Должна показывать.