Skip to content

Commit

Permalink
Render to an empty filter texture if the filter source frame does not…
Browse files Browse the repository at this point in the history
… intersect the current source frame (pixijs#8091)
  • Loading branch information
dev7355608 committed Apr 29, 2022
1 parent 8cf0248 commit c63e917
Showing 1 changed file with 20 additions and 9 deletions.
29 changes: 20 additions & 9 deletions packages/core/src/filters/FilterSystem.ts
Original file line number Diff line number Diff line change
Expand Up @@ -188,20 +188,31 @@ export class FilterSystem implements ISystem

state.sourceFrame.pad(padding);

const sourceFrameProjected = this.tempRect.copyFrom(renderTextureSystem.sourceFrame);

// Project source frame into world space (if projection is applied)
if (renderer.projection.transform)
{
this.transformAABB(
tempMatrix.copyFrom(renderer.projection.transform).invert(),
sourceFrameProjected
);
}

if (autoFit)
{
const sourceFrameProjected = this.tempRect.copyFrom(renderTextureSystem.sourceFrame);
state.sourceFrame.fit(sourceFrameProjected);

// Project source frame into world space (if projection is applied)
if (renderer.projection.transform)
if (state.sourceFrame.width <= 0 || state.sourceFrame.height <= 0)
{
this.transformAABB(
tempMatrix.copyFrom(renderer.projection.transform).invert(),
sourceFrameProjected
);
state.sourceFrame.width = 0;
state.sourceFrame.height = 0;
}

state.sourceFrame.fit(sourceFrameProjected);
}
else if (!state.sourceFrame.intersects(sourceFrameProjected))
{
state.sourceFrame.width = 0;
state.sourceFrame.height = 0;
}

// Round sourceFrame in screen space based on render-texture.
Expand Down

0 comments on commit c63e917

Please sign in to comment.