Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
7 changes: 7 additions & 0 deletions player/js/elements/canvasElements/CVEffects.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ function CVEffects(elem) {
var i;
var len = elem.data.ef ? elem.data.ef.length : 0;
this.filters = [];
this.globalData = elem.globalData;
var filterManager;
for (i = 0; i < len; i += 1) {
filterManager = null;
Expand All @@ -24,9 +25,15 @@ function CVEffects(elem) {
CVEffects.prototype.renderFrame = function (_isFirstFrame) {
var i;
var len = this.filters.length;
var canvasContext = this.globalData.canvasContext;
var filterStrings = [];
for (i = 0; i < len; i += 1) {
this.filters[i].renderFrame(_isFirstFrame);
if (this.filters[i].filterString) {
filterStrings.push(this.filters[i].filterString);
}
}
canvasContext.filter = filterStrings.length ? filterStrings.join(' ') : 'none';
};

CVEffects.prototype.getEffects = function (type) {
Expand Down
29 changes: 29 additions & 0 deletions player/js/elements/canvasElements/effects/CVGaussianBlurEffect.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
function CVGaussianBlurEffect(effectElements, elem) {
this.filterManager = effectElements;
this.globalData = elem.globalData;
this.filterString = '';
}

CVGaussianBlurEffect.prototype.renderFrame = function () {
// Empirical value, matching AE's blur appearance.
var kBlurrinessToSigma = 0.3;
var canvasScale = this.globalData.transformCanvas.sx;
var sigma = this.filterManager.effectElements[0].p.v * kBlurrinessToSigma * canvasScale;

// Dimensions mapping:
//
// 1 -> horizontal & vertical
// 2 -> horizontal only
// 3 -> vertical only
//
// The Canvas API doesn't support separate X/Y blur like SVG,
// so we use the maximum sigma.
var dimensions = this.filterManager.effectElements[1].p.v;
var sigmaX = (dimensions == 3) ? 0 : sigma; // eslint-disable-line eqeqeq
var sigmaY = (dimensions == 2) ? 0 : sigma; // eslint-disable-line eqeqeq
var maxSigma = Math.max(sigmaX, sigmaY);

this.filterString = maxSigma > 0 ? 'blur(' + maxSigma + 'px)' : '';

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@stepancar This is fine but I'm curious, is it possible to use Kawase Dual Filter blur? Gaussian blur is very expensive to compute since it needs ~3+ render target switches on the GPU, which is a lot of overhead. Kawase Dual Filter is I assume due to memory consideration, the output of the blur filter will not be cached to memory for all the frames in the lottie?

Image

};

export default CVGaussianBlurEffect;
2 changes: 2 additions & 0 deletions player/js/modules/canvas.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,15 @@ import interfacesProvider from '../utils/expressions/InterfacesProvider';
import expressionPropertyDecorator from '../utils/expressions/ExpressionPropertyDecorator';
import expressionTextPropertyDecorator from '../utils/expressions/ExpressionTextPropertyDecorator';
import CVTransformEffect from '../elements/canvasElements/effects/CVTransformEffect';
import CVGaussianBlurEffect from '../elements/canvasElements/effects/CVGaussianBlurEffect';
import { registerEffect } from '../elements/canvasElements/CVEffects';

// Registering expression plugin
setExpressionsPlugin(Expressions);
setExpressionInterfaces(interfacesProvider);
expressionPropertyDecorator();
expressionTextPropertyDecorator();
registerEffect(29, CVGaussianBlurEffect);
registerEffect(35, CVTransformEffect);

export default lottie;
2 changes: 2 additions & 0 deletions player/js/modules/full.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ import SVGMatte3Effect from '../elements/svgElements/effects/SVGMatte3Effect';
import SVGGaussianBlurEffect from '../elements/svgElements/effects/SVGGaussianBlurEffect';
import SVGTransformEffect from '../elements/svgElements/effects/SVGTransformEffect';
import CVTransformEffect from '../elements/canvasElements/effects/CVTransformEffect';
import CVGaussianBlurEffect from '../elements/canvasElements/effects/CVGaussianBlurEffect';
import { registerEffect as canvasRegisterEffect } from '../elements/canvasElements/CVEffects';

// Registering renderers
Expand Down Expand Up @@ -63,6 +64,7 @@ registerEffect(25, SVGDropShadowEffect, true);
registerEffect(28, SVGMatte3Effect, false);
registerEffect(29, SVGGaussianBlurEffect, true);
registerEffect(35, SVGTransformEffect, false);
canvasRegisterEffect(29, CVGaussianBlurEffect);
canvasRegisterEffect(35, CVTransformEffect);

export default lottie;
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00000.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00001.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00002.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00003.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00004.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00005.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00006.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00007.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00008.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00009.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00010.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00011.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00012.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00013.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00014.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00015.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00016.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00017.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00018.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00019.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00020.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00021.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00022.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00023.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00024.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00025.png
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00026.png
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00027.png
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00028.png
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00029.png
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00030.png
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00031.png
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00032.png
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00033.png
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00034.png
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00035.png
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00036.png
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00037.png
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00038.png
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00039.png
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00040.png
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00041.png
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00042.png
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00043.png
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00044.png
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00045.png
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00046.png
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00047.png
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00048.png
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00049.png
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00050.png
4 changes: 2 additions & 2 deletions screenshots/create/fabric-pattern3_canvas/image_00051.png
Loading