Проблемы с воспроизведением определенного эффекта затухания смеси. (Game Maker: Студия 1) - PullRequest
0 голосов
/ 04 октября 2019

Я пытаюсь воссоздать определенный эффект затухания, который делает игра Playstation 1 Megaman X6. Экран темнеет, темные цвета сначала становятся черными, а более светлые - черными, а затем исчезают. Это похоже на использование bm_add, но для того, чтобы сделать вещи темнее, а не светлее. Я пытался использовать bm_subtract, но это то же самое, что рисование черного прямоугольника, который постепенно увеличивает его непрозрачность по всему экрану. Все цвета становятся полностью черными одновременно. У меня почти нет опыта работы со смешиванием цветов, и я до сих пор не обнял его, поэтому я не уверен, что делать. Все режимы наложения, которые я пробовал, не работают, и мои поиски в интернете ничего не дали. Я очень расстроился, и я был бы признателен, если бы кто-то просто сказал мне, что мне нужно делать.

Мой текущий код (sprDot - это изображение белого пикселя размером 1x1, а fadeAlpha остается между 0и 1):

draw_set_blend_mode(bm_subtract);
draw_sprite_ext(sprDot, 0, view_xview[0], view_yview[0], view_wview[0], view_hview[0], 0, make_color_rgb(fadeAlpha * 255, fadeAlpha * 255, fadeAlpha * 255), 1);
draw_set_blend_mode(bm_normal);

Экран моей игры не исчезает: https://i.imgur.com/uM6KIDK.png

Экран моей игры частично исчез: https://i.imgur.com/xGT4KPI.png

Экран оригинальной игры не исчезает: https://i.imgur.com/fcGvsaV.png

Экран оригинальной игры частично потускнел: https://i.imgur.com/W5wtVMG.png

1 Ответ

1 голос
/ 04 октября 2019

Исчезновение оригинала определенно не так просто, как bm_subtract - я бы сказал, что оно наиболее близко напоминает Color Burn. Вот макет, сделанный в PDN:

enter image description here

С учетом этого, лучший способ решить проблему - написать [фрагмент] шейдер. Такой шейдер был бы довольно простым, требуя единой униформы (коэффициент затухания в диапазоне 0..1), но вы захотите поиграть с формулой для изменения выходных цветов в соответствии со значением этой униформы.

...