@remotion/effects 4.0.483 → 4.0.484

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
1
  export declare const CORNER_PIN_VS = "#version 300 es\nlayout(location = 0) in vec2 aPos;\nlayout(location = 1) in vec2 aUv;\nout vec2 vUv;\n\nvoid main() {\n\tvUv = aUv;\n\tgl_Position = vec4(aPos, 0.0, 1.0);\n}\n";
2
- export declare const CORNER_PIN_FS = "#version 300 es\nprecision highp float;\n\nin vec2 vUv;\nout vec4 fragColor;\n\nuniform sampler2D uSource;\nuniform vec2 uTopLeft;\nuniform vec2 uTopRight;\nuniform vec2 uBottomRight;\nuniform vec2 uBottomLeft;\n\nfloat cross2(vec2 a, vec2 b) {\n\treturn a.x * b.y - a.y * b.x;\n}\n\nbool solveBilinearInverse(vec2 p, out vec2 uv) {\n\tvec2 a = uBottomLeft;\n\tvec2 b = uBottomRight - uBottomLeft;\n\tvec2 c = uTopLeft - uBottomLeft;\n\tvec2 d = uBottomLeft - uBottomRight + uTopRight - uTopLeft;\n\tvec2 q = p - a;\n\n\tfloat linearDenominator = cross2(b, c);\n\tif (abs(cross2(b, d)) < 0.000001) {\n\t\tif (abs(linearDenominator) < 0.000001) {\n\t\t\treturn false;\n\t\t}\n\n\t\tuv.x = cross2(q, c) / linearDenominator;\n\t\tuv.y = cross2(q, b) / cross2(c, b);\n\t\treturn true;\n\t}\n\n\tfloat qa = -cross2(b, d);\n\tfloat qb = cross2(q, d) - cross2(b, c);\n\tfloat qc = cross2(q, c);\n\tfloat discriminant = qb * qb - 4.0 * qa * qc;\n\n\tif (discriminant < 0.0) {\n\t\treturn false;\n\t}\n\n\tfloat sqrtDiscriminant = sqrt(discriminant);\n\tfloat u1 = (-qb + sqrtDiscriminant) / (2.0 * qa);\n\tfloat u2 = (-qb - sqrtDiscriminant) / (2.0 * qa);\n\tfloat u = u1;\n\tif (u1 < -0.001 || u1 > 1.001) {\n\t\tu = u2;\n\t}\n\n\tvec2 denominator = c + d * u;\n\tfloat v = abs(denominator.x) > abs(denominator.y)\n\t\t? (q.x - b.x * u) / denominator.x\n\t\t: (q.y - b.y * u) / denominator.y;\n\n\tuv = vec2(u, v);\n\treturn true;\n}\n\nvoid main() {\n\tvec2 sourceUv;\n\tif (!solveBilinearInverse(vUv, sourceUv)) {\n\t\tfragColor = vec4(0.0);\n\t\treturn;\n\t}\n\n\tif (\n\t\tsourceUv.x < 0.0 ||\n\t\tsourceUv.x > 1.0 ||\n\t\tsourceUv.y < 0.0 ||\n\t\tsourceUv.y > 1.0\n\t) {\n\t\tfragColor = vec4(0.0);\n\t\treturn;\n\t}\n\n\tfragColor = texture(uSource, sourceUv);\n}\n";
2
+ export declare const CORNER_PIN_FS = "#version 300 es\nprecision highp float;\n\nin vec2 vUv;\nout vec4 fragColor;\n\nuniform sampler2D uSource;\nuniform vec2 uTopLeft;\nuniform vec2 uTopRight;\nuniform vec2 uBottomRight;\nuniform vec2 uBottomLeft;\n\nbool solveProjectiveInverse(vec2 p, out vec2 uv) {\n\tvec2 p0 = uBottomLeft;\n\tvec2 p1 = uBottomRight;\n\tvec2 p2 = uTopRight;\n\tvec2 p3 = uTopLeft;\n\n\tvec2 dx1 = p1 - p2;\n\tvec2 dx2 = p3 - p2;\n\tvec2 dx3 = p0 - p1 + p2 - p3;\n\n\tfloat g = 0.0;\n\tfloat h = 0.0;\n\n\tif (abs(dx3.x) > 0.000001 || abs(dx3.y) > 0.000001) {\n\t\tfloat denominator = dx1.x * dx2.y - dx2.x * dx1.y;\n\t\tif (abs(denominator) < 0.000001) {\n\t\t\treturn false;\n\t\t}\n\n\t\tg = (dx3.x * dx2.y - dx2.x * dx3.y) / denominator;\n\t\th = (dx1.x * dx3.y - dx3.x * dx1.y) / denominator;\n\t}\n\n\tfloat a = p1.x - p0.x + g * p1.x;\n\tfloat b = p3.x - p0.x + h * p3.x;\n\tfloat c = p0.x;\n\tfloat d = p1.y - p0.y + g * p1.y;\n\tfloat e = p3.y - p0.y + h * p3.y;\n\tfloat f = p0.y;\n\n\tfloat inverseX =\n\t\t(e - f * h) * p.x +\n\t\t(c * h - b) * p.y +\n\t\t(b * f - c * e);\n\tfloat inverseY =\n\t\t(f * g - d) * p.x +\n\t\t(a - c * g) * p.y +\n\t\t(c * d - a * f);\n\tfloat inverseW =\n\t\t(d * h - e * g) * p.x +\n\t\t(b * g - a * h) * p.y +\n\t\t(a * e - b * d);\n\n\tif (abs(inverseW) < 0.000001) {\n\t\treturn false;\n\t}\n\n\tuv = vec2(inverseX / inverseW, inverseY / inverseW);\n\treturn true;\n}\n\nvoid main() {\n\tvec2 sourceUv;\n\tif (!solveProjectiveInverse(vUv, sourceUv)) {\n\t\tfragColor = vec4(0.0);\n\t\treturn;\n\t}\n\n\tif (\n\t\tsourceUv.x < 0.0 ||\n\t\tsourceUv.x > 1.0 ||\n\t\tsourceUv.y < 0.0 ||\n\t\tsourceUv.y > 1.0\n\t) {\n\t\tfragColor = vec4(0.0);\n\t\treturn;\n\t}\n\n\tfragColor = texture(uSource, sourceUv);\n}\n";
@@ -63,57 +63,60 @@ uniform vec2 uTopRight;
63
63
  uniform vec2 uBottomRight;
64
64
  uniform vec2 uBottomLeft;
65
65
 
66
- float cross2(vec2 a, vec2 b) {
67
- return a.x * b.y - a.y * b.x;
68
- }
66
+ bool solveProjectiveInverse(vec2 p, out vec2 uv) {
67
+ vec2 p0 = uBottomLeft;
68
+ vec2 p1 = uBottomRight;
69
+ vec2 p2 = uTopRight;
70
+ vec2 p3 = uTopLeft;
71
+
72
+ vec2 dx1 = p1 - p2;
73
+ vec2 dx2 = p3 - p2;
74
+ vec2 dx3 = p0 - p1 + p2 - p3;
69
75
 
70
- bool solveBilinearInverse(vec2 p, out vec2 uv) {
71
- vec2 a = uBottomLeft;
72
- vec2 b = uBottomRight - uBottomLeft;
73
- vec2 c = uTopLeft - uBottomLeft;
74
- vec2 d = uBottomLeft - uBottomRight + uTopRight - uTopLeft;
75
- vec2 q = p - a;
76
+ float g = 0.0;
77
+ float h = 0.0;
76
78
 
77
- float linearDenominator = cross2(b, c);
78
- if (abs(cross2(b, d)) < 0.000001) {
79
- if (abs(linearDenominator) < 0.000001) {
79
+ if (abs(dx3.x) > 0.000001 || abs(dx3.y) > 0.000001) {
80
+ float denominator = dx1.x * dx2.y - dx2.x * dx1.y;
81
+ if (abs(denominator) < 0.000001) {
80
82
  return false;
81
83
  }
82
84
 
83
- uv.x = cross2(q, c) / linearDenominator;
84
- uv.y = cross2(q, b) / cross2(c, b);
85
- return true;
85
+ g = (dx3.x * dx2.y - dx2.x * dx3.y) / denominator;
86
+ h = (dx1.x * dx3.y - dx3.x * dx1.y) / denominator;
86
87
  }
87
88
 
88
- float qa = -cross2(b, d);
89
- float qb = cross2(q, d) - cross2(b, c);
90
- float qc = cross2(q, c);
91
- float discriminant = qb * qb - 4.0 * qa * qc;
89
+ float a = p1.x - p0.x + g * p1.x;
90
+ float b = p3.x - p0.x + h * p3.x;
91
+ float c = p0.x;
92
+ float d = p1.y - p0.y + g * p1.y;
93
+ float e = p3.y - p0.y + h * p3.y;
94
+ float f = p0.y;
92
95
 
93
- if (discriminant < 0.0) {
94
- return false;
95
- }
96
+ float inverseX =
97
+ (e - f * h) * p.x +
98
+ (c * h - b) * p.y +
99
+ (b * f - c * e);
100
+ float inverseY =
101
+ (f * g - d) * p.x +
102
+ (a - c * g) * p.y +
103
+ (c * d - a * f);
104
+ float inverseW =
105
+ (d * h - e * g) * p.x +
106
+ (b * g - a * h) * p.y +
107
+ (a * e - b * d);
96
108
 
97
- float sqrtDiscriminant = sqrt(discriminant);
98
- float u1 = (-qb + sqrtDiscriminant) / (2.0 * qa);
99
- float u2 = (-qb - sqrtDiscriminant) / (2.0 * qa);
100
- float u = u1;
101
- if (u1 < -0.001 || u1 > 1.001) {
102
- u = u2;
109
+ if (abs(inverseW) < 0.000001) {
110
+ return false;
103
111
  }
104
112
 
105
- vec2 denominator = c + d * u;
106
- float v = abs(denominator.x) > abs(denominator.y)
107
- ? (q.x - b.x * u) / denominator.x
108
- : (q.y - b.y * u) / denominator.y;
109
-
110
- uv = vec2(u, v);
113
+ uv = vec2(inverseX / inverseW, inverseY / inverseW);
111
114
  return true;
112
115
  }
113
116
 
114
117
  void main() {
115
118
  vec2 sourceUv;
116
- if (!solveBilinearInverse(vUv, sourceUv)) {
119
+ if (!solveProjectiveInverse(vUv, sourceUv)) {
117
120
  fragColor = vec4(0.0);
118
121
  return;
119
122
  }