Ogion
Пользователь
 
Репутация: 21
Offline
Пол: 
API: 8.1 Standard
Сообщений: 67
|
 |
« : Октябрь 08, 2011, 18:21:55 » |
|
Пример демонстрирует реализацию светового движка с несколькими источниками освещения. Рассчитан он на тех, кто умеет использовать сурфейсы, рисовать примитивы и использовать различные режимы смешивания, поэтому комментариев немного.  Производительность: Система: Pentium Dual-Core E5300 2.6 ГГц, GeForce GTX 560 FPS: 350 - 500 Время расчета освещения: 31 - 47 мс
Как это работает? В моем решении используется "буферный" сурфейс. От его размера будет зависеть размер светового пятна, поскольку спрайт с самим световым пятном уже будет подгоняться под этот размер. Сначала мы заливаем основной сурфейс серым цветом.  Затем мы берем буферный сурфейс и заливаем его черным цветом.  Затем рисуем на нем световое пятно.  Теперь рисуем на нем тени черным. Черный цвет будет как бы стирать свет.  А вот теперь отрисовываем буферный сурфейс на основном через bm_add. Когда мы рисуем через bm_add, черный цвет становится прозрачным. Поэтому тень от одного источника не перекрывает свет от другого.  Затем вся эта процедура выполняется для другой лампы. То есть буферный сурфейс является промежуточным звеном между лампой и основным сурфейсом.  Добавлено: Октябрь 08, 2011, 21:12:25 Если у кого-то выдавало "Unexpected error occured when running the game", перекачайте.
|
|
|
Записан
|
Я хочу, чтобы все в безумии бегали и орали.
|
|
|
Vendet
Гл. Администратор
Репутация: 772
Offline
Пол: 
API: Unity 3D
Сообщений: 3949
HellRoom Games
|
 |
« Ответ #1 : Октябрь 08, 2011, 21:45:39 » |
|
Молодец, будет полезно. 
|
|
|
Записан
|
|
|
|
PelmeshkO
GM Pro user
Репутация: 67
Offline
Пол:  Награды: ![За постоянность! [200 дней на форуме] За постоянность! [200 дней на форуме]](https://forum.hellroom.ru/awards/78e87f17e3713947881315332c8ce619_hellroomforum_time_silver.gif)
API: GameMaker Studio
Сообщений: 314
Stay hungry. Stay foolish.
|
 |
« Ответ #2 : Октябрь 08, 2011, 23:32:30 » |
|
Отличный пример 
|
|
|
Записан
|
"Великое начинается с малого..."
|
|
|
MogAIka
Участник
  
Репутация: 35
Offline
Пол: 
API: Game Maker 8.0 Pro
Деятельность: GML, C++, Java
Сообщений: 202
|
 |
« Ответ #3 : Январь 07, 2012, 20:06:23 » |
|
Очень интересный пример
|
|
|
Записан
|
|
|
|
skypo
GM Pro user
Репутация: 63
Offline
Пол:  Награды:  ![За постоянность! [50 дней на форуме] За постоянность! [50 дней на форуме]](https://forum.hellroom.ru/awards/d09ba76b977b84fd4f5dcfae1f2918ff_hellroomforum_time_copper.gif)
API: GameMaker Studio Pro
Сообщений: 809
|
 |
« Ответ #4 : Март 09, 2012, 19:38:03 » |
|
Не спорю, я ленивый  , но как програмно (кодом) рисовать тени? С меня 
|
|
|
Записан
|
|
|
|
Krib
|
 |
« Ответ #5 : Март 09, 2012, 19:39:43 » |
|
Пример выше 
|
|
|
Записан
|
Fuge, late, tace
|
|
|
MusNik
KeeVee Games
GM Pro user
Репутация: 733
Offline
Пол:  Награды:  ![За постоянность! [200 дней на форуме] За постоянность! [200 дней на форуме]](https://forum.hellroom.ru/awards/78e87f17e3713947881315332c8ce619_hellroomforum_time_silver.gif) ![За лояльность! [+500 репутации] За лояльность! [+500 репутации]](https://forum.hellroom.ru/awards/90cb589b7473ca11705300194079bf64_hellroomforum_good_bronze.gif)   ...
API: GameMaker Studio 2
Сообщений: 3241
|
 |
« Ответ #6 : Март 09, 2012, 21:10:47 » |
|
Хороший пример) Пример выше  
|
|
|
Записан
|
|
|
|
plomax
Активный участник
   
Репутация: 24
Offline
Пол:  Награды: ![За постоянность! [10 дней на форуме] За постоянность! [10 дней на форуме]](https://forum.hellroom.ru/awards/35b6e985f89cc9a79a2bbfdd216390ca_hellroomforum_time_tin.gif)
API: Game Maker 8.0 Pro
Сообщений: 300
|
 |
« Ответ #7 : Март 10, 2012, 00:52:27 » |
|
FPS: 350 - 500 я около FPS: 970-850 
|
|
|
Записан
|
Я легенда 2525 А.Е.
|
|
|
skypo
GM Pro user
Репутация: 63
Offline
Пол:  Награды:  ![За постоянность! [50 дней на форуме] За постоянность! [50 дней на форуме]](https://forum.hellroom.ru/awards/d09ba76b977b84fd4f5dcfae1f2918ff_hellroomforum_time_copper.gif)
API: GameMaker Studio Pro
Сообщений: 809
|
 |
« Ответ #8 : Март 10, 2012, 21:08:45 » |
|
FPS 12-82. И это при всего-то 7 объектах и мелком размере сурфейса. Мда, как-то не оптимизировано. Альтернатив, как полагаю, нет?
P,S,: больше 7. Был не прав.
|
|
|
Записан
|
|
|
|
Ogion
Пользователь
 
Репутация: 21
Offline
Пол: 
API: 8.1 Standard
Сообщений: 67
|
 |
« Ответ #9 : Март 17, 2012, 23:51:38 » |
|
Освещение рассчитывается заранее при старте комнаты, поэтому производительность самого освещения будет зависеть только от того, насколько быстро будет рисоваться сурфейс. Некоторые старые видеокарты плохо работают с сурфейсами, стороны которых не являются степенями двойки, возможно, проблема в этом. Попробуй вот этот вариант, здесь стороны основного сурфейса увеличиваются до степеней двойки. Не поможет — ищи проблему где-то у себя.
|
|
|
Записан
|
Я хочу, чтобы все в безумии бегали и орали.
|
|
|
Hamster099
|
 |
« Ответ #10 : Март 18, 2012, 19:40:13 » |
|
Занимательно, но насколько я понимаю тут нет рассчёта на перемещение источников освещения, иначе всю эту байду придётся пересчитывать в степе, что крепко нагрузит проц 
|
|
|
Записан
|
|
|
|
VladTheCat
Немного
GM Pro user
Репутация: 145
Offline
Пол:  Награды:  ![За постоянность! [100 дней на форуме] За постоянность! [100 дней на форуме]](https://forum.hellroom.ru/awards/79b1a4915bff7098a4a1984ad370be2c_hellroomforum_time_bronze.gif) 
API: Love
Деятельность: Целая игростудия, состоящая из одного кота.
Сообщений: 1435
|
 |
« Ответ #11 : Март 19, 2012, 20:51:59 » |
|
Да и темнее нельзя сделать...
|
|
|
Записан
|
 Будьте вежливы: Вам помогли? Не забудьте поставить плюс. А то банда злобных апельсинов придет за вами. И даже тех. поддержка вам не поможет. :3 Когда я что-то пишу в "<>", то это значит, что содержимое надо заменить на свое значение.
|
|
|
DIMKA_98
Участник
  
Репутация: 22
Offline
Пол: 
API: Game Maker 8.0 Pro
Сообщений: 116
|
 |
« Ответ #12 : Март 19, 2012, 21:09:58 » |
|
Да и темнее нельзя сделать... Можно, и цвет освещения менять можно.
|
|
|
Записан
|
|
|
|
Ogion
Пользователь
 
Репутация: 21
Offline
Пол: 
API: 8.1 Standard
Сообщений: 67
|
 |
« Ответ #13 : Март 19, 2012, 22:56:14 » |
|
Занимательно, но насколько я понимаю тут нет рассчёта на перемещение источников освещения, иначе всю эту байду придётся пересчитывать в степе, что крепко нагрузит проц  Это лишь пример, который демонстрирует, как накладывать одно световое пятно на другое. Использовать это можно как угодно. Если уменьшить количество источников освещения, количество отбрасывающих теней объектов и размер светового пятна, то можно сделать и динамическое освещение. А еще освещение можно сделать гибридным, заранее просчитав тени для статических объектов и добавив обработку динамических. Все в ваших руках — дерзайте.
|
|
|
Записан
|
Я хочу, чтобы все в безумии бегали и орали.
|
|
|
GrinRad
Участник
  
Репутация: 17
Offline
Пол: 
API: Game Maker 8.0 Pro
Деятельность: Эффекты GM
Сообщений: 163
|
 |
« Ответ #14 : Июнь 19, 2013, 14:47:08 » |
|
А можно сделать чтобы при уничтожении источника света, уничтожалось и его освещение?
|
|
|
Записан
|
|
|
|
|