我试图将自定义过滤器添加到这样的精灵中:
sprite.filters = [
new PIXI.Filter(undefined, SHADER_STRINGS["hue-rotate-shader-fs"], {
uHueShift: 90,
}),
new PIXI.Filter(undefined, SHADER_STRINGS["contrast-shader-fs"], {
uContrast:50,
})
];
,但仅应用过滤器数组中的最后一个。在前一种情况下,仅应用对比度,在这种情况下:
sprite.filters = [
new PIXI.Filter(undefined, SHADER_STRINGS["contrast-shader-fs"], {
uContrast:50,
})
new PIXI.Filter(undefined, SHADER_STRINGS["hue-rotate-shader-fs"], {
uHueShift: 90,
}),
];
仅应用色移。
请注意,内置滤镜(例如模糊和噪点)不会发生这种情况,因为我可以毫无问题地混合它们。
我的猜测是,最后一个着色器每次都采用不变的纹理。我该怎么做才能解决此问题,以便可以同时将多个滤镜添加到一个精灵中。
答案 0 :(得分:0)
我认为你的第二个片段着色器缺少一些东西,考虑你之前生成的颜色,尤其是它在你的第二个片段着色器中的 alpha 通道,并根据它们的两个 alpha 通道将它们混合在一起。
我已经在 PIXI@6.0.2 中进行过测试,并且 uSampler 上总是有以前的过滤器。