Comments 27

В правой картинке, очевидно, зашит чёрный фон, так что на любом другом фоне она будет выглядеть криво - с тёмной окантовкой. Зачем такой формат "прозрачности" хоть кому-то нужен остаётся загадкой.
Да, если смотреть только на RGB, кажется, будто справа «зашит чёрный фон». На самом деле это не фон, а уже выполненное умножение цвета на альфу.
Такую картинку нельзя просто положить на другой фон как обычный PNG. Её композят так:
Тогда тёмная кайма не появляется: поскольку изображение сверху добавляется через ADD. Напомню ADD это операция когда цвета становятся ярче, но никак не темнее. Кайма возникает, когда premultiplied принимают за straight и умножают на альфу второй раз — об этом как раз абзац про чёрный контур вокруг огня.
Зачем так хранить:
в одном слое можно держать (и, главное, рендерить) и полупрозрачность, и свечение (огонь, glare, блик), это я указал в статье
при мипмапинге и фильтрации такая альфа ведёт себя лучше;
рендер, Nuke, Fusion, работают именно с таким типом альфы. Это - стандарт композа.
А как для игр экспортят такие текстуры со свечением и нулевой альфой, если в PNG некрасиво? Делают две текстуры и смешивают на рендере? Или другой формат изображений берут?
Просто переключатель в настройках текстуры типа такого: https://docs.unity3d.com/6000.1/Documentation/Manual/urp/blending-modes.html
По самому файлу не поймёшь, там straight или premultiplied, так же как не поймёшь нормали там direct x или openGL
direct x или openGL
Любопытно, а в чём разница?
О, у меня есть видос на эту тему: https://www.youtube.com/watch?v=mjbxB1rb9OI
Если в кратце инвертированы в зеленом канале

Прямо сейчас видео посмотреть не могу, но ведь это только для Fixed Function Pipeline? На шейдерах же можно как угодно карты нормалей сделать.
В системе координат, в Dx она леворукая, в огл праворукая(или наоборот, точно не помню) отсюда и разная работа с нормалмапами, потому что они запекаются в тангентспэйсе.
Хороший вопрос на самом деле, я не знаю какой там пайплайн. Я заметил, что если сохранить в tiff, то 8bit выводится straight, а 16bit premultiplied. По идее можно сохранить в 16bit tiff, a потом уже где собирается атлас сохранить во что-то более удобное.
Полученные изображения нужно проявить на одну плёнку.
То ли авто генерация, то ли автор не понимает процессов в плёночной фотографии и киносъёмке.
Ну, так и есть, понимания процессов пленочных кино/фото не было до конца у Вас, а фразу “expose different elements onto the same frame of film” Вы поняли неверно. Expose означает “экспонировать”, а не проявить. Действительно, на светочувствительный материала можно экспонировать несколько изображений. (Да, сколько влезет раз. Мы так в школе развлекались в 5 классе, делая комбинированные съёмки, где человек сам с собой был в нескольких штуках на одном снимке. Не все взрослые умели, но мы читали книги.))) А, потом уже этот светочувствительный материал после серии засветов можно проявить — провести химический процесс превращения скрытого изображения в эмульсии в явное.
Т. е. изображения можно экспонировать на светочувствительный материал на отдельные кадры множество раз (физический процесс взаимодействия фотонов с галогенидами серебра в светочувствительной эмульсии).
А светочувствительный материал можно проявить за один раз сразу и весь целиком со всеми кадрами (химический процесс восстановления галогенидов до металлического серебра, когда образуются непрозрачные кристаллы металлического серебра).
Нельзя “проявить изображения на плёнку”.
Кстати, в видео это наглядно так и показано: сначала идет экпонирование (засветка) нескольких разных изображений на один и тот же кадр светочувствительного материала (кинопленки), потом она вся разом проявляется, промывается и закрепляется в растворах, после чего все эти наложенные экспозиции (засветки) появляются изображением на одном кадре.
Засветка несколькими разными изображениями одного и того же светочувствительного кадра очень похожа на несколько полупрозрачных слоев в растровом редакторе.
Проявка — сведение всех этих отдельных слоёв в выходной однослойный растр.
Удачи! Пишите исчо! ;-)) Но, материал изучайте плотнее, чтобы таких касузов не выдавать в эфир.
генерация, кругом генерация!
Просто скриншот нельзя сделать?
ПО для композинга обычно поддерживает premultiplied alpha и в формате PNG, нужно просто поставить соответствующую галочку при импорте. Никогда не испытывал с этим проблем, видишь темный контур и сразу знаешь что нужно включить.
Ха-ха, да, но проблема не в импорте, а экспорте. Проблема в том как рендер из Blender сохранить в PNG с premultiplied alpha. До 2.8 можно было выбрать формат при сохранении, а в современных версиях выбора нет.
насчет Straight alpha: насколько помню, в браузерах будет не 50/50, а
50% opacity means, 50% of the light is blocked
50% + (50% * 50%) = 75% opacity.
(это если два слоя по 0.5 миксовать)
ну или если более точно
Total Opacity = First Opacity + (100 - First Opacity) * Second Opacity
при этом first - это тот, что снизу.
сверялся с этим обсуждением и на практике вроде все сходилось
Полученные изображения нужно проявить на одну плёнку.
Тут я споткнулся. Не проявить, а снять на одну пленку?
Ну, то что блендер не способен сохранить в полупрозрачное PNG, без предварительного умножения, запеча эффекты, эт просто косяк блендера, а не незнание пользователей и т.д.
По сути статья не про разные альфы, а по разные способы композа, которых к слову не 2 а гораздо больше. И если говорить про GAPI то каждая операция над текущими данными и бэком настраивается через параметры смешивания.

Куда девается свечение при сохранении в PNG. Два формата прозрачности, о которых почти никто не знает