LIGHT ADAPTATION ИЛИ ПРИВЫКАНИЕ ГЛАЗ К ОСВЕЩЕНИЮ
Страница 1 из 1
LIGHT ADAPTATION ИЛИ ПРИВЫКАНИЕ ГЛАЗ К ОСВЕЩЕНИЮ
Время работы: 15 мин.
Требуются знания GM`а: выше средних
Версия GM`а: 6.0 – 7.0
Верите или нет, но и это можно эмулировать в Game Maker`е. Причём игра не будет требовать шейдеров и будет спокойно работать из-под DirectX 8.1, сохраняя при этом битрейт 32 бит (либо даже 16 бит).
Ни одного спрайта нам не потребуется. Одно главное – не создавайте новый файл, а используйте уже какую-то более-менее готовую игру с контрастными переходами цветов.
Создаем объект la_system. Он будет главным объектом ответственным за создание, проверку цвета и рисование la.
В <CREATE> пишем:
globalvar la_surface; ВНИМАНИЕ – Эту строку писать только если у вас Game Maker 7.0 и выше. Если нет – везде перед la_surface ставить global. . (т.е. global.la_surface)
la_surface = surface_create(view_wview[0], view_hview[0])
lacol=0
laalpha=0
В <BEGIN STEP>(!):
surface_set_target(la_surface) указываем цель для рисования
screen_redraw() перерисовываем экран
surface_reset_target() отменяем цель
Таким образом мы создаем полотно с размером под экран и перерисовываем содержимое экрана. Фактически, мы делаем копию изображения на экране в этом полотне. Туда же дописываем:
var col;
col= draw_getpixel(view_xview[0]+(view_wview[0]/2),view_yview[0]+(view_hview[0]/2))
lacol=1-(color_get_value(col)/255)
Этим мы «фотографируем» цвет пикселя, находящегося по указанным координатам (настраивайте их под себя, я указал координаты центра экрана). Третьей строкой мы записываем его яркость в lacol, но уже не в числах от 0 до 255, а от 0 до 1. Дописываем:
if(laalpha<lacol-0.05){laalpha+=0.005}
if(laalpha>lacol+0.05){laalpha-=0.005}
Этим мы «сглаживаем» изменения в цвете и записываем финальный результат в laalpha.
В <DRAW>:
draw_set_blend_mode(bm_add)
draw_surface_ext(la_surface,view_xview[0],view_yview[0],1,1,0,c_white,laalpha) рисуем полотно
draw_set_blend_mode(bm_normal)
Всё. Вот примерно такое должно получится:
Требуются знания GM`а: выше средних
Версия GM`а: 6.0 – 7.0
Верите или нет, но и это можно эмулировать в Game Maker`е. Причём игра не будет требовать шейдеров и будет спокойно работать из-под DirectX 8.1, сохраняя при этом битрейт 32 бит (либо даже 16 бит).
Ни одного спрайта нам не потребуется. Одно главное – не создавайте новый файл, а используйте уже какую-то более-менее готовую игру с контрастными переходами цветов.
Создаем объект la_system. Он будет главным объектом ответственным за создание, проверку цвета и рисование la.
В <CREATE> пишем:
globalvar la_surface; ВНИМАНИЕ – Эту строку писать только если у вас Game Maker 7.0 и выше. Если нет – везде перед la_surface ставить global. . (т.е. global.la_surface)
la_surface = surface_create(view_wview[0], view_hview[0])
lacol=0
laalpha=0
В <BEGIN STEP>(!):
surface_set_target(la_surface) указываем цель для рисования
screen_redraw() перерисовываем экран
surface_reset_target() отменяем цель
Таким образом мы создаем полотно с размером под экран и перерисовываем содержимое экрана. Фактически, мы делаем копию изображения на экране в этом полотне. Туда же дописываем:
var col;
col= draw_getpixel(view_xview[0]+(view_wview[0]/2),view_yview[0]+(view_hview[0]/2))
lacol=1-(color_get_value(col)/255)
Этим мы «фотографируем» цвет пикселя, находящегося по указанным координатам (настраивайте их под себя, я указал координаты центра экрана). Третьей строкой мы записываем его яркость в lacol, но уже не в числах от 0 до 255, а от 0 до 1. Дописываем:
if(laalpha<lacol-0.05){laalpha+=0.005}
if(laalpha>lacol+0.05){laalpha-=0.005}
Этим мы «сглаживаем» изменения в цвете и записываем финальный результат в laalpha.
В <DRAW>:
draw_set_blend_mode(bm_add)
draw_surface_ext(la_surface,view_xview[0],view_yview[0],1,1,0,c_white,laalpha) рисуем полотно
draw_set_blend_mode(bm_normal)
Всё. Вот примерно такое должно получится:
Страница 1 из 1
Права доступа к этому форуму:
Вы не можете отвечать на сообщения
|
|