Изменение цветовой гаммы тайла

Темы, связанные с проектированием и программированием roguelike-игр

Модераторы: Sanja, Максим Кич

Аватара пользователя
Cfyz
Сообщения: 776
Зарегистрирован: 30 ноя 2006, 10:03
Откуда: Санкт-Петербург
Контактная информация:

Re: Изменение цветовой гаммы тайла

Сообщение Cfyz » 16 янв 2013, 22:45

hexMer писал(а):В моём опенджиэле нет ф-и glBlendColor, добавил загрузку расширения.
glBlendcolor не нужен. OpenGL смешивает цвета по формуле S * SF + D * DF, где S и D -- это смешиваемые цвета пикселей (который уже на экране и который сейчас выводится), а SF и DF -- коэффициенты, задаваемые в glBlendFunc. Расширение GL_EXT_color_blend позволяет добавить в список возможных коэффициентов свой: GL_BLEND_COLOR. Однако фишка в том, что для правильного смешения цветов (с учетом цветов в картинке тайла; цвета тайла и альфы, выставленных через glColor) достаточно glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);.
hexMer писал(а):Захотелось глянуть именно на "дрожащий свет факела в askii"
Не удержался. Не дрожит, зато практически ASCII =)
Скрытый текст: ПОКАЗАТЬ
Изображение
Вложения
beta2a-lightning.zip
(372.12 КБ) 108 скачиваний
Пытается раскуклиться

Аватара пользователя
Uvadzucumi
Сообщения: 365
Зарегистрирован: 29 ноя 2011, 07:13
Откуда: Дубай, ОАЭ (Минск, Беларусь)
Контактная информация:

Re: Изменение цветовой гаммы тайла

Сообщение Uvadzucumi » 17 янв 2013, 06:13

Cfyz писал(а):
hexMer писал(а):В моём опенджиэле нет ф-и glBlendColor, добавил загрузку расширения.
glBlendcolor не нужен. OpenGL смешивает цвета по формуле S * SF + D * DF, где S и D -- это смешиваемые цвета пикселей (который уже на экране и который сейчас выводится), а SF и DF -- коэффициенты, задаваемые в glBlendFunc. Расширение GL_EXT_color_blend позволяет добавить в список возможных коэффициентов свой: GL_BLEND_COLOR. Однако фишка в том, что для правильного смешения цветов (с учетом цветов в картинке тайла; цвета тайла и альфы, выставленных через glColor) достаточно glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);.
совершенно верно. у меня и не использовался. остался от старых экспериментов. теперь выкашено.

@Cfyz
увеличил интенсивность света и добавил его анимацию (теперь со временем меняется яркость). но, опятьже, пока не закончено. так как при расчете света, нужно учитывать вектор направления источника света и вектор направления на игрока (пока этого не делал). чтобы не видеть освещение стены с противоположной стороны. но на работе - нужно работать. позже добавлю проверку.

зы. пока, скорость смены интенсивности завязана на смену кадра анимации костра. частота в секундах вбита - в /map/level_map.cpp строка 145

Код: Выделить всё

light.dynamic_tile->SetAnimationRate(.15);
интенсивность же света, от кадра и расстояния до источника, в /map/level_map.cpp строка 89

Код: Выделить всё

int ret=strength-distance-dynamic_tile->GetCurrentFrame();
можно попробовать такой вариант:

Код: Выделить всё

int ret=strength-distance-1+dynamic_tile->GetCurrentFrame()%2;
на самом деле, это номер материала "света", который назначается тайлу при рендере. может быть от 0 до 9.

функция, которая свет в текущем вьюпорте считает -

Код: Выделить всё

void CLevelMap::CalculateMapLight(/*int *light_array,*/ int left, int top, int width, int height)
в /map/level_map.cpp

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

Аватара пользователя
hexMer
Сообщения: 150
Зарегистрирован: 12 сен 2009, 09:48

Re: Изменение цветовой гаммы тайла

Сообщение hexMer » 17 янв 2013, 07:57

Cfyz писал(а):Не удержался. Не дрожит, зато практически ASCII =)
Красиво! Особенно радует отсутствие загрузки процессора.
Uvadzucumi писал(а):но... вообще для костров? наверное, лучше так не делать... это бы прикольно смотрелась в качестве эффекта кратковременного мигания света в комноте, или эмуляции работы стартера ламп дневного света при включении.
Да, сначала смотрится интересно, но, думаю, быстро приестся и начнёт мешать.

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 38 гостей