I am not sure why the behavior is different between C3 and C2, but in C3 the wrong skend behavior shows up when there are more sprites in the project (and when sprites are packed into some large textures.) To resolve this I normalized the delta x offset based on srcStart/SrcEnd and also switched back to pixelSize.y. See comments in the effect.fx code below.
I updated the c3addon in the OP with this new version, bilgekaan please try it again.
I tried a few tests with a different number of other sprites and checked for how the textures were packed using the chrome debugger, the effect worked across a few cases, but watch for the skend effect changing as you change the number of sprite objects (not instances) and size of the sprite source texture (animation).
Also the more you skend, you may need to 'pad' in your original texture or you'll get clipping and perhaps sampling neighboring textures in the case of packed textures.
Here's the new code:
/////////////////////////////////////////////////////////
// Skend effect
varying mediump vec2 vTex;
uniform lowp sampler2D samplerFront;
uniform lowp float pixelWidth;
uniform lowp float pixelHeight;
uniform lowp float Skend;
uniform mediump vec2 pixelSize;
uniform mediump vec2 srcEnd;
uniform mediump vec2 srcStart;
uniform mediump vec2 srcOriginStart;
uniform mediump vec2 srcOriginEnd;
uniform mediump vec2 layoutStart;
uniform mediump vec2 layoutEnd;
void main(void)
{
mediump vec2 tex = vTex;
mediump vec2 texOffset = tex - srcStart;
// Original from C2 effect, did not work with sprite packing in C3 and pixelHeight did not seem to work
// tex.y -= (pixelHeight*Skend)*pow(tex.x,2.0);
// Instead, calculate the normalised position n of vTex in the foreground rectangle and use that for Skend amount
mediump vec2 n = (vTex - srcOriginStart) / (srcOriginEnd - srcOriginStart);
tex.y -= (pixelSize.y*Skend)*pow(n.x,2.0);
gl_FragColor = texture2D(samplerFront,tex);
}[/code:1a37uoab]