Форум: "Игры";
Текущий архив: 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.035 c