Size: a a a

2020 December 21

К

Константин in GameDev for Web
Alexander Tewpin
Чот не могу разобраться с блендингом. Параметры на пике.

Во-первых не очень понятно что есть src, а что есть dst? Я думал что dst это что уже есть во фреймбуфере, а src это то, что приходит из шейдера. Это так?

Во-вторых моя ментальная модель не соответствует тому, что я вижу экспериментально. Допустим, есть красный [1, 0, 0, 1] фон и я рендерю на нем [0, 0, 0, 0.5] (цвета задаю в шейдере). По формуле должно получиться [0, 0, 0, 1] + [1, 0, 0, 1] * 0.5, т.е. [0.5, 0, 0, 1], но получается просто черный. Немножко блендится начинает только с альфы 0.05 где-то.

Где моя ошибка?
Не должно быть черного, там точно что-то есть?
источник

К

Константин in GameDev for Web
Там же ещё есть скисорс, маски и кулы
источник

AT

Alexander Tewpin in GameDev for Web
Я ничего из этого не добавлял и не менял. Использую просто webgl, без каких-либо либ
источник

AT

Alexander Tewpin in GameDev for Web
gl.enable(gl.BLEND);
gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);


Вот весь код, который относится к блендингу
источник

К

Константин in GameDev for Web
Ну, ок, а что ты рисуешь?
источник

К

Константин in GameDev for Web
Почему решил что не работает?
источник

AT

Alexander Tewpin in GameDev for Web
Эм, треугольники рисую. Не работает потому что результат не соответствует тому, что я ожидаю увидеть
источник

AT

Alexander Tewpin in GameDev for Web
Так, кажется нашел источник проблемы
источник

К

Константин in GameDev for Web
Если ты не ПМА шишь в шейдере
источник

К

Константин in GameDev for Web
Может быть гомно
источник

К

Константин in GameDev for Web
Обязательно вернее
источник

К

Константин in GameDev for Web
Если ты не загрузил текстуру, null будет черным
источник

К

Константин in GameDev for Web
Ещё есть косяк делить на 0 )
Зависит от железяки
источник

AT

Alexander Tewpin in GameDev for Web
Походу проблема в том, что я некорректно очищаю канвас. При первой итерации блендинг ок, а потом все темнее и темнее становится
источник

К

Константин in GameDev for Web
Хе, gl.clearColor(0,0,0,0), gl.clear(gl.CLEAR_BIT_COLOR)
источник

К

Константин in GameDev for Web
Куда ещё сложнее?
источник

К

Константин in GameDev for Web
(флаги я могу не верно писать)
источник
2020 December 22

AT

Alexander Tewpin in GameDev for Web
Хм, нет, похоже дело не в этом. Судя по спектору, все корректно очищается, фреймбуфер пустой. Но все равно сначала все корректно блендится, а потом темнеет с каждым кадром.
источник

AT

Alexander Tewpin in GameDev for Web
Уфф
источник

AT

Alexander Tewpin in GameDev for Web
А webgl ничего не пишет в текстуру из которой берет данные? Чот у меня ощущение, что текстура дописывается каждый кадр
источник