我正在重新创建一些 Photoshop 混合,并尝试使用线性光模式。在 Photoshop 中,您将有一个不透明度为 100% 的背景图层,然后是一个不透明度为 50% 的顶层,其混合模式设置为“线性光”。
我确实找到了有关如何进行线性光混合的信息,但它仅在两个图层都为 100% 不透明度时才有效。
下面是执行线性光模式的着色器代码,当图层都为 100% 不透明度时,它给出与 Photoshop 相同的结果:
#define BlendLinearDodgef BlendAddf
#define BlendLinearBurnf BlendSubstractf
#define BlendAddf(base, blend) min(base + blend, 1.0)
#define BlendSubstractf(base, blend) max(base + blend - 1.0, 0.0)
#define BlendLinearLightf(base, blend) (blend < 0.5 ? BlendLinearBurnf(base, (2.0 * blend)) : BlendLinearDodgef(base, (2.0 * (blend - 0.5))))
我看过http://en.wikipedia.org/wiki/Alpha_compositing http://en.wikipedia.org/wiki/Alpha_compositing但我仍然遇到问题。
如何使混合模式适用于半透明图层?
您应该阅读PDF spec https://www.adobe.com/content/dam/acom/en/devnet/pdf/pdfs/pdf_reference_archives/PDFReference.pdf了解当 Alpha 值不是 100% 时如何使用混合模式。特别是,请参阅第 7.2 节“基本合成计算”。第 414 页上的公式应该解释您需要什么:
Cr= (1-as/ar) * Cb + (as/ar) * [(1-ab) * Cs + ab * B(Cb,Cs)]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)