Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2005.07.18;
Скачать: [xml.tar.bz2];

Вниз

Динамическое освещение в 2Д   Найти похожие ветки 

 
П7   (2005-04-08 14:51) [0]

Мастера! Объясните мне суть реализации сего чуда на OpenGL? Особенно этот вопрос хотелось бы адресоват XPoroger"у, который его уже реализовывал в своей игре, и Darthman"у, который на форуме GameDev.ru говорил что это легко! (:
А то я чего-то не догоняю, как бы это так хитро реализовать...


 
A22 ©   (2005-04-08 15:44) [1]

спрайт выводится на кран как прямоугольник (состоящий из 2 треугольников) с натянутой текстурой, так? так. у вершин прямоугольника кроме текстурных координат есть еще такой параметр как цвет. с этим цветом разные вещи вытворять можно, но для освещения нужно вссего лишь указать api, что результирующий цвет пикселя на экране = цвет текстуры * цвет вершины полигона. далее (возьмем простой случай) для point лампочки, стоящей в позиции light_pos, с заданным радиусом освещения radius и мощностью power считаешь силу света в конкретной точке p:
light_power = power *(1 - VectorLength(p - light_pos) / radius);
для усорения расчетов можно заранее посчитать power/radius, назвать это чудо coeff и переписать формулу как
light_power = power - VectorLength(p - light_pos) * coeff;
кстати, если VectorLength > radius, light_power сразу = 0

теперь для создания освещения цвет вершины устанавливаешь как
LightColor * light_power (LightColor - трехкомпонентный вектор);
если лампочек много - считаешь для каждой и интерполируешь значение (берешь среднее арифметическое).

наверное, все. для 2-д хватит с головой, не переусердствуй с лампочками...

P.S. если у тебя в 2-д какой-нибудь светящийся шарик летает, лучше всего вообще градиент света в фотошопе сделай и рисуй с альфа-каналом, дешевле будет, чем считать как выше описано


 
П7   (2005-04-08 16:14) [2]

Это я все понимаю. Но динамическое освещение предполагает наличие динамических теней... (: Вот это-то мне и нужно.


 
П7   (2005-04-08 16:22) [3]

Как пример могу ещё привести GISH (так вроде пишется). Там есть уровень, где на цепи болтается фонарик, а он блоков пляшут тени. Простенькие, без наворотов, но смотреть приятно... (:


 
A22 ©   (2005-04-08 17:24) [4]

тогда вопрос бы иначе обозвал, освещение освещением, а тени - совсем другой вопрос..

придется считать контур, забивать его вершины цветом и выводить с альфой. и будут тебе тени от качающихся блоков.. конкретнее тут не подскажешь, зависит от реализации твоей игры. да и что подсказывать: как провести прямую через две точки и найти пересечение этой прямой с еще одной?:)


 
П7   (2005-04-08 21:22) [5]

Мутно пишете, товарищЪ... (: При чём тут релизация? Если всё дело в "ручной геометрии", тогда проблем нет, но если есть иные способы, то о них мне и хотелось бы узнать.


 
XProger ©   (2005-04-08 22:01) [6]

Хм... :)
Если ты имел ввиду TFK то там нет динамических теней (и не будет).
А те тени что есть расчитываются перед первым запуском карты в игре и сохраняются в неё же. Зовётся это Lightmap"ом.
А расчитывается довольно просто и качественно, но достаточно долго для реалтайм :)

А вот свет от ракет и прочей бяки, делал обычным цветастым спрайтом с ч/б текстурой, перед выводом которого включал блендинг и использовал glBlendFunc(GL_SRC_ALPHA, GL_ONE) (умножение)

Но вот тени (лайтмэп) накладывал после отрисовки всей сцены, но немного другим умножением glBlendFunc(GL_ZERO, GL_SRC_COLOR); (1 - С)

От динамических теней отказался из-за их тормознутости... :)


 
П7   (2005-04-09 00:22) [7]

Хым. Ясно. Я, кстати, только сейчас заметил, что я твой ник не правильно написал, извини, если что. (:
Блендинг, лайт-мепы, не то, а жаль, ладно, будем делать через одно место... (:


 
XProger ©   (2005-04-09 00:32) [8]

Хочешь сделать Дум3 в 2д? Юзай стенсил, но при этом будь готов к письмам "Вон у меня GF2 и твоя %$#@ на ней свыше 5 фпс не показывает" :)

Хотя, если ухудшить качество лайтмэпа то можно будет генерировать его в реальном времени... :)


 
П7   (2005-04-09 00:53) [9]

Не, какой нах стенсил? (: всё плоское, что моя справка из психушки (:
Лады, спосибо за консультацию.
Тема временно закрыта. (:


 
Zer0[np]   (2005-04-09 01:01) [10]

хех. есть подозрение что в гише тени стенсильные.


 
Zer0[np]   (2005-04-09 01:04) [11]

есть подозрение что в гише стенсельные тени.
имеем источник света, считаем направление луча от кажой точки "непрозрачного" полигона в бесконечность. рисуем стенсильный полигон.
рисуем свет с проверкой на поподание в область тени.



Страницы: 1 вся ветка

Форум: "Игры";
Текущий архив: 2005.07.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.041 c
9-1112811575
HPR
2005-04-06 22:19
2005.07.18
DelphiX и краевой альфаблендинг


10-1096353666
Zyb
2004-09-28 10:41
2005.07.18
ActiveX


11-1103199023
Роман
2004-12-16 15:10
2005.07.18
Модальная форма в ActiveX под IE


3-1118231725
SaFy
2005-06-08 15:55
2005.07.18
Очистка таблици


14-1119942299
Ш-К
2005-06-28 11:04
2005.07.18
Не получается отладка.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский