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

аю с некоторой ручной обработкой изображений, и воссоздаю стандартную смесь «наложения». Я смотрю макросы "Photoshop math" здесь:

http://www.nathanm.com/photoshop-blending-math/ (Смотрите также здесь для более читаемой версии оверлея)

Оба исходных изображения в довольно стандартном формате RGBA (8 бит каждый), как и пункт назначения. Когда оба изображения полностью непрозрачны (альфа равен 1,0), результат смешивается правильно, как и ожидалось:

Но если в моем «смешанном» слое (верхнем изображении) есть прозрачность, я немного озадачен тем, чтокак включить эту альфа в уравнение смешивания правильно. Я ожидаю, что он будет работать так, что прозрачные пиксели в слое смешения не влияют на результат, непрозрачные пиксели в слое смешения делают наложение наложения как обычно, а полупрозрачные пиксели слоя смешения имеют некоторый масштабированный эффект на результат.

Может кто-нибудь объяснить мне смешанные уравнения или концепцию, стоящую за этим?

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

Спасибо!

// factor in blendLayerA, (1-blendLayerA) somehow?
resultR = ChannelBlend_Overlay(baseLayerR, blendLayerR); 
resultG = ChannelBlend_Overlay(baseLayerG, blendLayerG);
resultB = ChannelBlend_Overlay(baseLayerB, blendLayerB);
resultA = 1.0; // also, what should this be??

Ответы на вопрос(3)

Ваш ответ на вопрос