webgl_ru | Unsorted

Telegram-канал webgl_ru - WebGL ru

-

Полезные ресурсы: https://telegra.ph/Poleznye-resursy-10-27 Правила: https://berlincodeofconduct.org/ru/ Новичкам: @gd_noobs Вакансии с указанием организации(!), вилки и хэштегом #удаленка / #офис

Subscribe to a channel

WebGL ru

Все что не звезды - шейдер. Не пойму о каком фотошопе речь

Читать полностью…

WebGL ru

Нарисуй все кривые с калькулятора для тестирования или дерни их с фотошопа после цветокоррекции. Нужно же понимать что в шейдере считается.

Читать полностью…

WebGL ru

попробовал

    color *= 1. - nightSkyColor.g;

Читать полностью…

WebGL ru

Привет. Спасибо за совет.
Я в предыдущей реализации заметил артефакты смешивания цветов и поменял немного на

    vec4 texture = texture2D(nightSky, uv);

vec4 color = clamp(vec4(retColor.rgb, alpha), 0.0, 1.0);
vec4 nightSkyColor;

if (uv.y < 0.5) {
nightSkyColor = texture;
}


float luminance = color.r * 0.2126 + color.g * 0.7152 + color.b * 0.0722;
float darkness = 1.0 - luminance;
nightSkyColor *= darkness;

color += nightSkyColor;

Читать полностью…

WebGL ru

ну ты спросил как инвертировать mix), а что там в шейдере я не вчитывался пока

Читать полностью…

WebGL ru

секьюрное html+css to canvas изобретают 🤞
https://x.com/fserb/status/1794058245901824349

Читать полностью…

WebGL ru

ну, что ты рекомендовал, спектрум вроде, всё показывает

Читать полностью…

WebGL ru

А как ты в дебаге посмотришь канвас, если не через нативные апки

Читать полностью…

WebGL ru

а чего просто в дебаге не посмореть как настроен канвас и буфер отдельно, и сравнить отличия

кажется это самый быстрый вариант был бы

Читать полностью…

WebGL ru

Мы же с ним сравниваем

Читать полностью…

WebGL ru

Ты можешь же все в PMA иметь

Читать полностью…

WebGL ru

соответственно, когда я стал юзать blendFuncSeparate я пофиксил это лишнее умножение src_alpha на саму себя, и всё стало хорошо

Читать полностью…

WebGL ru

то есть баг был всегда, я его просто на канвасе не замечал.

Читать полностью…

WebGL ru

А, прочитал неверно. Казалось что красным прозрачным

Читать полностью…

WebGL ru

Нет, ключевая информация в моем ответе - про режим блендинга и деление на альфу в шейдере. Проблема вызвана тем, как декодировалась текстура с precomputed alpha. В некоторых случаях графический редактор не готовит значения как надо, а webgl декодер png или один из этапов конвертации текстуры при загрузке думает, что там все ок, поэтому надо делить каждый цветовой канал на альфу, чтобы все отрисовалось без гало.

Читать полностью…

WebGL ru

ещё подкорректировать
color *= 1. - pow( (nightSkyColor.r+nightSkyColor.g+nightSkyColor.b)/3., 1.5 );
или
color *= 1. - pow( (nightSkyColor.r+nightSkyColor.g+nightSkyColor.b)/3., .75 );

Читать полностью…

WebGL ru

Есть ощущение что цвета пикселя текстуры не нормализованы и лежат в 0, 255.

Читать полностью…

WebGL ru

и если

nightSkyColor *= luminance;

то результат на первой пикче,
но если
nightSkyColor *= darkness;

результат второй

Читать полностью…

WebGL ru

Попробуй
color = mix(color, 1.-nightSkyColor, delta);

или
color *= 1.-nightSkyColor.g;

Читать полностью…

WebGL ru

Или вот это если clamp(delta, 0, 1)

Читать полностью…

WebGL ru

Нативный канва - нет

Читать полностью…

WebGL ru

Ну вообще-то да, так должно быть, для нормальной альфы

Читать полностью…

WebGL ru

тогда мне надо включить PMA везде. а он у меня везде выключен

Читать полностью…

WebGL ru

https://limnu.com/webgl-blending-youre-probably-wrong/

Читать полностью…

WebGL ru

И один one, one_minus_src_alpha

Читать полностью…

WebGL ru

У тебя там должно было быть 0.4,0.0, 0,0, 0.4

Читать полностью…

WebGL ru

что касается самого бага, то суть простая. я использовал blendFunc(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA)

допустим, у меня черный непрозрачный фон, на который я рисую красный пиксель с alpha 0.4

то получается, что src_alpha приводит к тому, что (1,0,0,0.4) умножается на 0.4 ещё раз, и получается (0.4,0,0,0.16).
фон умножается на ONE_MINUS_SRC_ALPHA, то есть на (1-0.4) = 0.6 и получается (0,0,0,1) * 0.6 = (0,0,0,0.6).

дальше цвета складываются - (0.4,0,0,0.16) + (0,0,0,0.6) = (0.4,0,0,0.76) - вуаля, в альфе значение 0.76, часть прозрачности "утекла" в подложку, и теперь она стала прозрачной

Читать полностью…

WebGL ru

короче, я, кажется, прохавал. канвас и фреймбуффер ничем принципиально не отличались, просто у меня у канваса альфа бэкбуффера была выключена, поэтому то, что я его так же точно "проедал" своим рисованием не было заметно. а в случае фреймбуффера это уже было заметно, т.к. цвет самого канваса вылезал наружу

Читать полностью…

WebGL ru

а почему тут умножение на 0, а не на 1? я же делаю клир (1,0,0,1)

Читать полностью…

WebGL ru

Это бленда для PMA как раз, но если клинишь фреймбуфер - очищац его с умножением в на А

Читать полностью…
Subscribe to a channel