我正在尝试向sprite添加自定义滤镜,如下所示:
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,
})
];
但只应用filters数组中的最后一个。在前一种情况下,仅应用对比度,在此情况下:
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,
}),
];
仅应用色调偏移。
请注意,这不会发生与内置过滤器,如模糊和噪声,因为我可以混合他们没有问题。
我的猜测是,最后一个着色器每次都会采用未接触的纹理。我可以做什么来解决这个问题,以便我可以添加多个过滤器到一个精灵在同一时间。
发布于 2021-05-18 03:05:38
我认为你的第二个frag着色器缺少一些东西,考虑你之前生成的颜色,特别是它在第二个frag着色器中的alpha通道,并根据它们的两个alpha通道将它们混合在一起。
我在PIXI@6.0.2中测试过,uSampler上总是有以前的过滤器。
https://stackoverflow.com/questions/64606344
复制相似问题