@taole/giftstage 0.1.35 → 0.1.36

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,51 +1,52 @@
1
- const gQ = `#version 300 es
2
- precision highp float;
3
-
4
- layout(location = 0) in vec3 a_position;
5
- layout(location = 1) in vec4 a_color;
6
- layout(location = 2) in vec2 a_uv;
7
-
8
- uniform mat4 u_projection;
9
- uniform mat4 u_transform;
10
-
11
- out vec2 v_uv;
12
- out vec4 v_color;
13
-
14
- void main() {
15
- gl_Position = u_projection * u_transform * vec4(a_position, 1.0);
16
- v_uv = a_uv;
17
- v_color = a_color;
18
- }
1
+ const gQ = `#version 300 es\r
2
+ precision highp float;\r
3
+ \r
4
+ layout(location = 0) in vec3 a_position;\r
5
+ layout(location = 1) in vec4 a_color;\r
6
+ layout(location = 2) in vec2 a_uv;\r
7
+ \r
8
+ uniform mat4 u_projection;\r
9
+ uniform mat4 u_transform;\r
10
+ uniform float u_opacity;\r
11
+ \r
12
+ out vec2 v_uv;\r
13
+ out vec4 v_color;\r
14
+ \r
15
+ void main() {\r
16
+ gl_Position = u_projection * u_transform * vec4(a_position, 1.0);\r
17
+ v_uv = a_uv;\r
18
+ v_color = vec4(a_color.rgb, a_color.a * u_opacity);\r
19
+ }\r
19
20
  `, BQ = `#version 300 es\r
20
21
  precision highp float;\r
21
22
  \r
22
- layout(location = 0) in vec2 a_corner;
23
- layout(location = 1) in vec4 a_transform;
24
- layout(location = 2) in vec3 a_translateAlpha;
25
- layout(location = 3) in vec4 a_uvRect;
26
- layout(location = 4) in uvec2 a_packedClipRect;
27
-
28
- uniform mat4 u_projection;
29
-
30
- out vec2 v_uv;
31
- out vec4 v_color;
32
- flat out vec4 v_clipRect;
33
-
34
- void main() {
35
- vec2 world = vec2(
36
- a_transform.x * a_corner.x + a_transform.z * a_corner.y + a_translateAlpha.x,
37
- a_transform.y * a_corner.x + a_transform.w * a_corner.y + a_translateAlpha.y
38
- );
39
- gl_Position = u_projection * vec4(world, 0.0, 1.0);
40
- v_uv = mix(a_uvRect.xy, a_uvRect.zw, a_corner);
41
- v_color = vec4(1.0, 1.0, 1.0, a_translateAlpha.z);
42
- v_clipRect = vec4(
43
- float(a_packedClipRect.x & 0xffffu),
44
- float(a_packedClipRect.x >> 16u),
45
- float(a_packedClipRect.y & 0xffffu),
46
- float(a_packedClipRect.y >> 16u)
47
- );
48
- }
23
+ layout(location = 0) in vec2 a_corner;\r
24
+ layout(location = 1) in vec4 a_transform;\r
25
+ layout(location = 2) in vec3 a_translateAlpha;\r
26
+ layout(location = 3) in vec4 a_uvRect;\r
27
+ layout(location = 4) in uvec2 a_packedClipRect;\r
28
+ \r
29
+ uniform mat4 u_projection;\r
30
+ \r
31
+ out vec2 v_uv;\r
32
+ out vec4 v_color;\r
33
+ flat out vec4 v_clipRect;\r
34
+ \r
35
+ void main() {\r
36
+ vec2 world = vec2(\r
37
+ a_transform.x * a_corner.x + a_transform.z * a_corner.y + a_translateAlpha.x,\r
38
+ a_transform.y * a_corner.x + a_transform.w * a_corner.y + a_translateAlpha.y\r
39
+ );\r
40
+ gl_Position = u_projection * vec4(world, 0.0, 1.0);\r
41
+ v_uv = mix(a_uvRect.xy, a_uvRect.zw, a_corner);\r
42
+ v_color = vec4(1.0, 1.0, 1.0, a_translateAlpha.z);\r
43
+ v_clipRect = vec4(\r
44
+ float(a_packedClipRect.x & 0xffffu),\r
45
+ float(a_packedClipRect.x >> 16u),\r
46
+ float(a_packedClipRect.y & 0xffffu),\r
47
+ float(a_packedClipRect.y >> 16u)\r
48
+ );\r
49
+ }\r
49
50
  `, CQ = `#version 300 es
50
51
  precision mediump float;
51
52
 
@@ -60,29 +61,29 @@ void main() {
60
61
  vec4 c = texture(u_atlas, v_uv);
61
62
  fragColor = vec4(c.rgb * v_color.rgb * v_color.a, c.a * v_color.a);
62
63
  }
63
- `, QQ = `#version 300 es
64
- precision highp float;
65
-
66
- uniform sampler2D u_atlas;
67
-
68
- in vec2 v_uv;
69
- in vec4 v_color;
70
- flat in vec4 v_clipRect;
71
-
72
- out vec4 fragColor;
73
-
74
- void main() {
75
- if (
76
- gl_FragCoord.x < v_clipRect.x ||
77
- gl_FragCoord.y < v_clipRect.y ||
78
- gl_FragCoord.x >= v_clipRect.z ||
79
- gl_FragCoord.y >= v_clipRect.w
80
- ) {
81
- discard;
82
- }
83
- vec4 c = texture(u_atlas, v_uv);
84
- fragColor = vec4(c.rgb * v_color.rgb * v_color.a, c.a * v_color.a);
85
- }
64
+ `, QQ = `#version 300 es\r
65
+ precision highp float;\r
66
+ \r
67
+ uniform sampler2D u_atlas;\r
68
+ \r
69
+ in vec2 v_uv;\r
70
+ in vec4 v_color;\r
71
+ flat in vec4 v_clipRect;\r
72
+ \r
73
+ out vec4 fragColor;\r
74
+ \r
75
+ void main() {\r
76
+ if (\r
77
+ gl_FragCoord.x < v_clipRect.x ||\r
78
+ gl_FragCoord.y < v_clipRect.y ||\r
79
+ gl_FragCoord.x >= v_clipRect.z ||\r
80
+ gl_FragCoord.y >= v_clipRect.w\r
81
+ ) {\r
82
+ discard;\r
83
+ }\r
84
+ vec4 c = texture(u_atlas, v_uv);\r
85
+ fragColor = vec4(c.rgb * v_color.rgb * v_color.a, c.a * v_color.a);\r
86
+ }\r
86
87
  `, EQ = `#version 300 es\r
87
88
  precision highp float;\r
88
89
  \r
@@ -313,22 +314,22 @@ layout(location = 0) in vec2 a_pos;
313
314
  void main() {
314
315
  gl_Position = u_projection * u_transform * vec4(a_pos, 0.0, 1.0);
315
316
  }
316
- `, nQ = `#version 300 es
317
- precision mediump float;
318
-
319
- uniform mat4 u_projection;
320
-
321
- layout(location = 0) in vec2 a_pos;
322
- layout(location = 1) in vec4 i_matrix;
323
- layout(location = 2) in vec2 i_translation;
324
-
325
- void main() {
326
- vec2 world = vec2(
327
- i_matrix.x * a_pos.x + i_matrix.z * a_pos.y + i_translation.x,
328
- i_matrix.y * a_pos.x + i_matrix.w * a_pos.y + i_translation.y
329
- );
330
- gl_Position = u_projection * vec4(world, 0.0, 1.0);
331
- }
317
+ `, nQ = `#version 300 es\r
318
+ precision mediump float;\r
319
+ \r
320
+ uniform mat4 u_projection;\r
321
+ \r
322
+ layout(location = 0) in vec2 a_pos;\r
323
+ layout(location = 1) in vec4 i_matrix;\r
324
+ layout(location = 2) in vec2 i_translation;\r
325
+ \r
326
+ void main() {\r
327
+ vec2 world = vec2(\r
328
+ i_matrix.x * a_pos.x + i_matrix.z * a_pos.y + i_translation.x,\r
329
+ i_matrix.y * a_pos.x + i_matrix.w * a_pos.y + i_translation.y\r
330
+ );\r
331
+ gl_Position = u_projection * vec4(world, 0.0, 1.0);\r
332
+ }\r
332
333
  `, aB = `#version 300 es\r
333
334
  precision mediump float;\r
334
335
  \r
@@ -342,6 +343,7 @@ struct Uniforms {\r
342
343
  projection: mat4x4f,\r
343
344
  transform: mat4x4f,\r
344
345
  atlasRemap: vec4f,\r
346
+ opacity: vec4f,\r
345
347
  }\r
346
348
  \r
347
349
  @group(0) @binding(0) var<uniform> uniforms: Uniforms;\r
@@ -365,7 +367,7 @@ fn vs(v: VIn) -> VOut {\r
365
367
  var o: VOut;\r
366
368
  o.pos = uniforms.projection * uniforms.transform * vec4f(v.pos, 1.0);\r
367
369
  o.uv = v.uv;\r
368
- o.color = v.color;\r
370
+ o.color = vec4f(v.color.rgb, v.color.a * uniforms.opacity.x);\r
369
371
  return o;\r
370
372
  }\r
371
373
  \r
@@ -682,43 +684,43 @@ fn vs(v: VIn) -> VOut {\r
682
684
  fn fs(f: VOut) -> @location(0) vec4f {\r
683
685
  return vec4f(0.0, 0.0, 0.0, 0.0);\r
684
686
  }\r
685
- `, MQ = `struct Globals {
686
- projection: mat4x4f,
687
- }
688
-
689
- @group(0) @binding(0) var<uniform> globals: Globals;
690
- @group(0) @binding(1) var<storage, read> instanceData: array<f32>;
691
-
692
- struct VIn {
693
- @location(0) pos: vec2f,
694
- }
695
-
696
- struct VOut {
697
- @builtin(position) pos: vec4f,
698
- }
699
-
700
- @vertex
701
- fn vs(v: VIn, @builtin(instance_index) inst: u32) -> VOut {
702
- let base = inst * 6u;
703
- let a = instanceData[base];
704
- let b = instanceData[base + 1u];
705
- let c = instanceData[base + 2u];
706
- let d = instanceData[base + 3u];
707
- let translation = vec2f(instanceData[base + 4u], instanceData[base + 5u]);
708
- let world = vec2f(
709
- a * v.pos.x + c * v.pos.y + translation.x,
710
- b * v.pos.x + d * v.pos.y + translation.y
711
- );
712
-
713
- var o: VOut;
714
- o.pos = globals.projection * vec4f(world, 0.0, 1.0);
715
- return o;
716
- }
717
-
718
- @fragment
719
- fn fs() -> @location(0) vec4f {
720
- return vec4f(0.0);
721
- }
687
+ `, MQ = `struct Globals {\r
688
+ projection: mat4x4f,\r
689
+ }\r
690
+ \r
691
+ @group(0) @binding(0) var<uniform> globals: Globals;\r
692
+ @group(0) @binding(1) var<storage, read> instanceData: array<f32>;\r
693
+ \r
694
+ struct VIn {\r
695
+ @location(0) pos: vec2f,\r
696
+ }\r
697
+ \r
698
+ struct VOut {\r
699
+ @builtin(position) pos: vec4f,\r
700
+ }\r
701
+ \r
702
+ @vertex\r
703
+ fn vs(v: VIn, @builtin(instance_index) inst: u32) -> VOut {\r
704
+ let base = inst * 6u;\r
705
+ let a = instanceData[base];\r
706
+ let b = instanceData[base + 1u];\r
707
+ let c = instanceData[base + 2u];\r
708
+ let d = instanceData[base + 3u];\r
709
+ let translation = vec2f(instanceData[base + 4u], instanceData[base + 5u]);\r
710
+ let world = vec2f(\r
711
+ a * v.pos.x + c * v.pos.y + translation.x,\r
712
+ b * v.pos.x + d * v.pos.y + translation.y\r
713
+ );\r
714
+ \r
715
+ var o: VOut;\r
716
+ o.pos = globals.projection * vec4f(world, 0.0, 1.0);\r
717
+ return o;\r
718
+ }\r
719
+ \r
720
+ @fragment\r
721
+ fn fs() -> @location(0) vec4f {\r
722
+ return vec4f(0.0);\r
723
+ }\r
722
724
  `, SQ = `struct Globals {\r
723
725
  projection: mat4x4f,\r
724
726
  }\r
@@ -740,27 +742,27 @@ struct VOut {\r
740
742
  }\r
741
743
  \r
742
744
  @vertex\r
743
- fn vs(v: VIn, @builtin(instance_index) inst: u32) -> VOut {
744
- let base = inst * 13u;
745
- let transform0 = vec2f(instanceData[base], instanceData[base + 1u]);
746
- let transform1 = vec2f(instanceData[base + 2u], instanceData[base + 3u]);
747
- let translate = vec2f(instanceData[base + 4u], instanceData[base + 5u]);
748
- let alpha = instanceData[base + 6u];
749
- let uvMin = vec2f(instanceData[base + 7u], instanceData[base + 8u]);
750
- let uvMax = vec2f(instanceData[base + 9u], instanceData[base + 10u]);
751
- let packedClip0 = bitcast<u32>(instanceData[base + 11u]);
752
- let packedClip1 = bitcast<u32>(instanceData[base + 12u]);
753
- let clipRect = vec4f(
754
- f32(packedClip0 & 0xffffu),
755
- f32(packedClip0 >> 16u),
756
- f32(packedClip1 & 0xffffu),
757
- f32(packedClip1 >> 16u)
758
- );
759
-
760
- let world = vec2f(
761
- transform0.x * v.corner.x + transform1.x * v.corner.y + translate.x,
762
- transform0.y * v.corner.x + transform1.y * v.corner.y + translate.y
763
- );
745
+ fn vs(v: VIn, @builtin(instance_index) inst: u32) -> VOut {\r
746
+ let base = inst * 13u;\r
747
+ let transform0 = vec2f(instanceData[base], instanceData[base + 1u]);\r
748
+ let transform1 = vec2f(instanceData[base + 2u], instanceData[base + 3u]);\r
749
+ let translate = vec2f(instanceData[base + 4u], instanceData[base + 5u]);\r
750
+ let alpha = instanceData[base + 6u];\r
751
+ let uvMin = vec2f(instanceData[base + 7u], instanceData[base + 8u]);\r
752
+ let uvMax = vec2f(instanceData[base + 9u], instanceData[base + 10u]);\r
753
+ let packedClip0 = bitcast<u32>(instanceData[base + 11u]);\r
754
+ let packedClip1 = bitcast<u32>(instanceData[base + 12u]);\r
755
+ let clipRect = vec4f(\r
756
+ f32(packedClip0 & 0xffffu),\r
757
+ f32(packedClip0 >> 16u),\r
758
+ f32(packedClip1 & 0xffffu),\r
759
+ f32(packedClip1 >> 16u)\r
760
+ );\r
761
+ \r
762
+ let world = vec2f(\r
763
+ transform0.x * v.corner.x + transform1.x * v.corner.y + translate.x,\r
764
+ transform0.y * v.corner.x + transform1.y * v.corner.y + translate.y\r
765
+ );\r
764
766
  \r
765
767
  var o: VOut;\r
766
768
  o.pos = globals.projection * vec4f(world, 0.0, 1.0);\r
@@ -2159,7 +2161,10 @@ const JQ = new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]), V
2159
2161
  }
2160
2162
  initPrograms() {
2161
2163
  const A = this.gl, I = lA(A, b.svgaBatchPremul.vert, b.svgaBatchPremul.frag);
2162
- this.programs.set("svga-batch-premul", this.makeProgramEntry(I, { transform: !0 })), this.bindProgramSamplers(I, { u_atlas: 0 });
2164
+ this.programs.set(
2165
+ "svga-batch-premul",
2166
+ this.makeProgramEntry(I, { transform: !0, opacity: !0 })
2167
+ ), this.bindProgramSamplers(I, { u_atlas: 0 });
2163
2168
  const g = lA(
2164
2169
  A,
2165
2170
  b.svgaInstancedPremul.vert,
@@ -2265,8 +2270,8 @@ const JQ = new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]), V
2265
2270
  Q instanceof Float32Array && B.uniform4fv(A.atlasRemapLoc, Q);
2266
2271
  }
2267
2272
  if (A.opacityLoc) {
2268
- const Q = g.uniforms.u_opacity;
2269
- typeof Q == "number" && A.lastOpacity !== Q && (B.uniform1f(A.opacityLoc, Q), A.lastOpacity = Q);
2273
+ const Q = g.uniforms.u_opacity, E = typeof Q == "number" ? Q : 1;
2274
+ A.lastOpacity !== E && (B.uniform1f(A.opacityLoc, E), A.lastOpacity = E);
2270
2275
  }
2271
2276
  if (A.rgbPremultipliedLoc) {
2272
2277
  const Q = g.uniforms.u_rgbPremultiplied;
@@ -2766,7 +2771,10 @@ class wB {
2766
2771
  a_color: 1,
2767
2772
  a_uv: 2
2768
2773
  });
2769
- this.programs.set("svga-batch-premul", this.makeProgramEntry(I, { transform: !0 })), this.bindProgramSamplers(I, { u_atlas: 0 });
2774
+ this.programs.set(
2775
+ "svga-batch-premul",
2776
+ this.makeProgramEntry(I, { transform: !0, opacity: !0 })
2777
+ ), this.bindProgramSamplers(I, { u_atlas: 0 });
2770
2778
  const g = tI(A, b.vap.vert, b.vap.frag, {
2771
2779
  a_position: 0,
2772
2780
  a_rgbUV: 1,
@@ -2855,8 +2863,8 @@ class wB {
2855
2863
  E instanceof Float32Array && B.uniform4fv(A.atlasRemapLoc, E);
2856
2864
  }
2857
2865
  if (A.opacityLoc) {
2858
- const E = g.uniforms.u_opacity;
2859
- typeof E == "number" && A.lastOpacity !== E && (B.uniform1f(A.opacityLoc, E), A.lastOpacity = E);
2866
+ const E = g.uniforms.u_opacity, o = typeof E == "number" ? E : 1;
2867
+ A.lastOpacity !== o && (B.uniform1f(A.opacityLoc, o), A.lastOpacity = o);
2860
2868
  }
2861
2869
  if (A.rgbPremultipliedLoc) {
2862
2870
  const E = g.uniforms.u_rgbPremultiplied;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taole/giftstage",
3
- "version": "0.1.35",
3
+ "version": "0.1.36",
4
4
  "description": "High-performance WebGPU/WebGL gift animation player unifying SVGA, VAP, AlphaVideo, and images",
5
5
  "type": "module",
6
6
  "main": "dist/gift-stage.cjs.js",