Javascript PIXI.js精灵在应用过滤器后失去旋转

Javascript PIXI.js精灵在应用过滤器后失去旋转,javascript,webgl,pixi.js,Javascript,Webgl,Pixi.js,我首先旋转一个应用了纹理的精灵,然后应用一个带有碎片着色器的过滤器,这会导致精灵变形。但是,当我将过滤器添加到精灵时,它会旋转到正常的水平位置,而不是以前的倾斜位置 我尝试在着色器中应用旋转函数来旋转uv。这会旋转图像,但会更改旋转零件外部的图像。这里是一些截图 添加和更改角度后精灵的初始外观: 应用过滤器后的外观: 如您所见,旋转已被删除 我尝试在着色器中添加旋转矩阵,结果如下: 旋转是正确的,但仅旋转纹理,而不旋转实际容器。 将角度应用回精灵不会产生任何效果 实际结果应该是第一个+第二

我首先旋转一个应用了纹理的精灵,然后应用一个带有碎片着色器的过滤器,这会导致精灵变形。但是,当我将过滤器添加到精灵时,它会旋转到正常的水平位置,而不是以前的倾斜位置

我尝试在着色器中应用旋转函数来旋转uv。这会旋转图像,但会更改旋转零件外部的图像。这里是一些截图

添加和更改角度后精灵的初始外观:

应用过滤器后的外观:

如您所见,旋转已被删除

我尝试在着色器中添加旋转矩阵,结果如下:

旋转是正确的,但仅旋转纹理,而不旋转实际容器。 将角度应用回精灵不会产生任何效果

实际结果应该是第一个+第二个图像,以便过滤器应用于旋转的精灵

以下是将过滤器添加到图像的代码:

const filter=new PIXI.filter(null,getTransitionFragmentShader(transition,2),统一);
filter.apply=函数(filterManager、输入、输出、清除){
var矩阵=新的PIXI.matrix();
this.uniforms.mappedMatrix=filterManager.CalculaterMalizedScreensPaceMatrix(矩阵);
PIXI.Filter.prototype.apply.call(this,filterManager,input,output,clear);
};

sprite.filters=[filter]我所做的是使用顶点着色器进行旋转,如下所示:

属性向量2;
均匀mat3投影矩阵;
可变向量2 vTextureCoord;
统一的vec4输入大小;
统一的vec4输出帧;
均匀vec2旋转;
vec4过滤器位置(无效)
{
vec2位置=最大值(outputFrame.zw,vec2(0.))+outputFrame.xy;
vec2旋转位置=vec2(
位置.x*旋转.y+位置.y*旋转.x,
位置.y*旋转.y-位置.x*旋转.x
);
返回向量4((投影矩阵*向量3(旋转位置,1.0)).xy,0.0,1.0);
}
vec2过滤器文本协调(无效)
{
返回值*(outputFrame.zw*inputSize.zw);
}
真空总管(真空)
{
gl_位置=FilterTextPosition();
vTextureCoord=filterTextureCoord();
}