diff --git a/e2e/fixtures/images/title-logo-transparent.png b/e2e/fixtures/images/title-logo-transparent.png
new file mode 100644
index 00000000..7951bcc7
Binary files /dev/null and b/e2e/fixtures/images/title-logo-transparent.png differ
diff --git a/e2e/pages/shape/transparent-premultiply.html b/e2e/pages/shape/transparent-premultiply.html
new file mode 100644
index 00000000..c591d220
--- /dev/null
+++ b/e2e/pages/shape/transparent-premultiply.html
@@ -0,0 +1,58 @@
+
+
+
+
+
+ Next2D E2E - Transparent Image Premultiplied Alpha
+
+
+
+
+
+
+
+
diff --git a/e2e/snapshots/webgl/blendmode.spec.ts-snapshots/blendmode-all-webgl-darwin.png b/e2e/snapshots/webgl/blendmode.spec.ts-snapshots/blendmode-all-webgl-darwin.png
index edf0131a..3e8d8f3a 100644
Binary files a/e2e/snapshots/webgl/blendmode.spec.ts-snapshots/blendmode-all-webgl-darwin.png and b/e2e/snapshots/webgl/blendmode.spec.ts-snapshots/blendmode-all-webgl-darwin.png differ
diff --git a/e2e/snapshots/webgl/mask.spec.ts-snapshots/mask-sprite-webgl-darwin.png b/e2e/snapshots/webgl/mask.spec.ts-snapshots/mask-sprite-webgl-darwin.png
index b6be7e67..625b25d7 100644
Binary files a/e2e/snapshots/webgl/mask.spec.ts-snapshots/mask-sprite-webgl-darwin.png and b/e2e/snapshots/webgl/mask.spec.ts-snapshots/mask-sprite-webgl-darwin.png differ
diff --git a/e2e/snapshots/webgl/shape.spec.ts-snapshots/load-image-flip-webgl-darwin.png b/e2e/snapshots/webgl/shape.spec.ts-snapshots/load-image-flip-webgl-darwin.png
index 2cca07b8..d1d1bbc1 100644
Binary files a/e2e/snapshots/webgl/shape.spec.ts-snapshots/load-image-flip-webgl-darwin.png and b/e2e/snapshots/webgl/shape.spec.ts-snapshots/load-image-flip-webgl-darwin.png differ
diff --git a/e2e/snapshots/webgl/shape.spec.ts-snapshots/transparent-premultiply-webgl-darwin.png b/e2e/snapshots/webgl/shape.spec.ts-snapshots/transparent-premultiply-webgl-darwin.png
new file mode 100644
index 00000000..ef3c16a2
Binary files /dev/null and b/e2e/snapshots/webgl/shape.spec.ts-snapshots/transparent-premultiply-webgl-darwin.png differ
diff --git a/e2e/snapshots/webgl/textfield.spec.ts-snapshots/textfield-auto-font-size-webgl-darwin.png b/e2e/snapshots/webgl/textfield.spec.ts-snapshots/textfield-auto-font-size-webgl-darwin.png
index 8f79032a..77e6fa46 100644
Binary files a/e2e/snapshots/webgl/textfield.spec.ts-snapshots/textfield-auto-font-size-webgl-darwin.png and b/e2e/snapshots/webgl/textfield.spec.ts-snapshots/textfield-auto-font-size-webgl-darwin.png differ
diff --git a/e2e/snapshots/webgl/textfield.spec.ts-snapshots/textfield-basic-webgl-darwin.png b/e2e/snapshots/webgl/textfield.spec.ts-snapshots/textfield-basic-webgl-darwin.png
index 878a0b40..e1c04d31 100644
Binary files a/e2e/snapshots/webgl/textfield.spec.ts-snapshots/textfield-basic-webgl-darwin.png and b/e2e/snapshots/webgl/textfield.spec.ts-snapshots/textfield-basic-webgl-darwin.png differ
diff --git a/e2e/snapshots/webgl/textfield.spec.ts-snapshots/textfield-blendmode-webgl-darwin.png b/e2e/snapshots/webgl/textfield.spec.ts-snapshots/textfield-blendmode-webgl-darwin.png
index 6775bc97..3aac9bca 100644
Binary files a/e2e/snapshots/webgl/textfield.spec.ts-snapshots/textfield-blendmode-webgl-darwin.png and b/e2e/snapshots/webgl/textfield.spec.ts-snapshots/textfield-blendmode-webgl-darwin.png differ
diff --git a/e2e/snapshots/webgl/textfield.spec.ts-snapshots/textfield-filter-webgl-darwin.png b/e2e/snapshots/webgl/textfield.spec.ts-snapshots/textfield-filter-webgl-darwin.png
index 79c05297..cc8c675d 100644
Binary files a/e2e/snapshots/webgl/textfield.spec.ts-snapshots/textfield-filter-webgl-darwin.png and b/e2e/snapshots/webgl/textfield.spec.ts-snapshots/textfield-filter-webgl-darwin.png differ
diff --git a/e2e/snapshots/webgl/textfield.spec.ts-snapshots/textfield-format-webgl-darwin.png b/e2e/snapshots/webgl/textfield.spec.ts-snapshots/textfield-format-webgl-darwin.png
index ced9469f..a7a2fd57 100644
Binary files a/e2e/snapshots/webgl/textfield.spec.ts-snapshots/textfield-format-webgl-darwin.png and b/e2e/snapshots/webgl/textfield.spec.ts-snapshots/textfield-format-webgl-darwin.png differ
diff --git a/e2e/snapshots/webgl/textfield.spec.ts-snapshots/textfield-html-text-webgl-darwin.png b/e2e/snapshots/webgl/textfield.spec.ts-snapshots/textfield-html-text-webgl-darwin.png
index 59287e4f..4d0379e7 100644
Binary files a/e2e/snapshots/webgl/textfield.spec.ts-snapshots/textfield-html-text-webgl-darwin.png and b/e2e/snapshots/webgl/textfield.spec.ts-snapshots/textfield-html-text-webgl-darwin.png differ
diff --git a/e2e/snapshots/webgl/textfield.spec.ts-snapshots/textfield-scroll-webgl-darwin.png b/e2e/snapshots/webgl/textfield.spec.ts-snapshots/textfield-scroll-webgl-darwin.png
index 1ed897e3..58f351cb 100644
Binary files a/e2e/snapshots/webgl/textfield.spec.ts-snapshots/textfield-scroll-webgl-darwin.png and b/e2e/snapshots/webgl/textfield.spec.ts-snapshots/textfield-scroll-webgl-darwin.png differ
diff --git a/e2e/snapshots/webgl/textfield.spec.ts-snapshots/textfield-thickness-webgl-darwin.png b/e2e/snapshots/webgl/textfield.spec.ts-snapshots/textfield-thickness-webgl-darwin.png
index 65e049fc..d9ca91b1 100644
Binary files a/e2e/snapshots/webgl/textfield.spec.ts-snapshots/textfield-thickness-webgl-darwin.png and b/e2e/snapshots/webgl/textfield.spec.ts-snapshots/textfield-thickness-webgl-darwin.png differ
diff --git a/e2e/snapshots/webgl/video.spec.ts-snapshots/video-blendmode-webgl-darwin.png b/e2e/snapshots/webgl/video.spec.ts-snapshots/video-blendmode-webgl-darwin.png
index 1c67eac9..3379d699 100644
Binary files a/e2e/snapshots/webgl/video.spec.ts-snapshots/video-blendmode-webgl-darwin.png and b/e2e/snapshots/webgl/video.spec.ts-snapshots/video-blendmode-webgl-darwin.png differ
diff --git a/e2e/snapshots/webgl/video.spec.ts-snapshots/video-filter-webgl-darwin.png b/e2e/snapshots/webgl/video.spec.ts-snapshots/video-filter-webgl-darwin.png
index af751db4..4fdeac5e 100644
Binary files a/e2e/snapshots/webgl/video.spec.ts-snapshots/video-filter-webgl-darwin.png and b/e2e/snapshots/webgl/video.spec.ts-snapshots/video-filter-webgl-darwin.png differ
diff --git a/e2e/snapshots/webgl/video.spec.ts-snapshots/video-playback-webgl-darwin.png b/e2e/snapshots/webgl/video.spec.ts-snapshots/video-playback-webgl-darwin.png
index 74e41f0c..3e4dc41d 100644
Binary files a/e2e/snapshots/webgl/video.spec.ts-snapshots/video-playback-webgl-darwin.png and b/e2e/snapshots/webgl/video.spec.ts-snapshots/video-playback-webgl-darwin.png differ
diff --git a/e2e/snapshots/webgpu/shape.spec.ts-snapshots/transparent-premultiply-webgpu-darwin.png b/e2e/snapshots/webgpu/shape.spec.ts-snapshots/transparent-premultiply-webgpu-darwin.png
new file mode 100644
index 00000000..db705234
Binary files /dev/null and b/e2e/snapshots/webgpu/shape.spec.ts-snapshots/transparent-premultiply-webgpu-darwin.png differ
diff --git a/e2e/tests/shape.spec.ts b/e2e/tests/shape.spec.ts
index ad14977c..cfa9851d 100644
--- a/e2e/tests/shape.spec.ts
+++ b/e2e/tests/shape.spec.ts
@@ -89,6 +89,15 @@ test.describe("Shape描画テスト", () => {
await expect(page).toHaveScreenshot("load-image-flip.png");
});
+
+ // 透明PNGがプリマルチプライドアルファで正しく合成されることの回帰テスト。
+ // ストレートアルファのまま合成すると半透明領域の白抜け・縁の白線が再発する。
+ test("Shape.load - 透明画像のプリマルチプライ合成(白抜け・白縁の回帰)", async ({ page }) => {
+ await page.goto("/e2e/pages/shape/transparent-premultiply.html");
+ await waitForCanvas(page);
+
+ await expect(page).toHaveScreenshot("transparent-premultiply.png");
+ });
});
test.describe("Graphics操作", () => {
diff --git a/package-lock.json b/package-lock.json
index 8855f041..e0836596 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@next2d/player",
- "version": "3.7.0",
+ "version": "3.8.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@next2d/player",
- "version": "3.7.0",
+ "version": "3.8.0",
"license": "MIT",
"workspaces": [
"packages/*"
@@ -26,7 +26,7 @@
"eslint-plugin-unused-imports": "^4.4.1",
"globals": "^17.6.0",
"jsdom": "^29.1.1",
- "rollup": "^4.62.0",
+ "rollup": "^4.62.2",
"typescript": "^6.0.3",
"vite": "^8.0.16",
"vitest": "^4.1.9",
@@ -163,9 +163,9 @@
}
},
"node_modules/@csstools/css-color-parser": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-4.1.1.tgz",
- "integrity": "sha512-eZ5XOtyhK+mggRafYUWzA0tvaYOFgdY8AkgQiCJF9qNAePnUo/zmsqqYubBBb3sQ8uNUaSKTY9s9klfRaAXL0g==",
+ "version": "4.1.8",
+ "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-4.1.8.tgz",
+ "integrity": "sha512-3chWb7PRLijpJpPIKkDxdu6IBeO5MrFACND57On0j8OPpc0wZibcGc3xAHrSEbOx/KDRyMHoIxGn0w1PhXMYHw==",
"dev": true,
"funding": [
{
@@ -618,14 +618,14 @@
}
},
"node_modules/@napi-rs/wasm-runtime": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz",
- "integrity": "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==",
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.5.tgz",
+ "integrity": "sha512-AWPoBRJ9tsnVhor4sjO7rkni+7p+2IAEFj6cx06UgP10jkQHqay/36uRV/bFkgrh18D9vb4cr8Q0Pthskgzy+Q==",
"dev": true,
"license": "MIT",
"optional": true,
"dependencies": {
- "@tybys/wasm-util": "^0.10.1"
+ "@tybys/wasm-util": "^0.10.2"
},
"funding": {
"type": "github",
@@ -1130,9 +1130,9 @@
}
},
"node_modules/@rollup/rollup-android-arm-eabi": {
- "version": "4.62.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.62.0.tgz",
- "integrity": "sha512-IPIQ55ythEHkfEd9jMEi32OQ7SxURsGA43JI22lj01OLZNt2NUbJX8YUHxkVWyQ6daHPNn0truF5nSj3DQp6YQ==",
+ "version": "4.62.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.62.2.tgz",
+ "integrity": "sha512-6o7ZLZK+BeenkZCFNDXqpbjw9bD6nuWonvS/lwQJp7NoVVxm6p3qE7qQ5jGuBjiFsgvqjD8mZAU5oWxTmbOeOg==",
"cpu": [
"arm"
],
@@ -1144,9 +1144,9 @@
]
},
"node_modules/@rollup/rollup-android-arm64": {
- "version": "4.62.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.62.0.tgz",
- "integrity": "sha512-M6s9cr10MibETyo8JsOkq+Lo1+lU6hcvb1MApnUql5qte/5hMEgzlN8/ReIKNfRV8rrqX50W1BX9zoUhC192RA==",
+ "version": "4.62.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.62.2.tgz",
+ "integrity": "sha512-BaH7BllCACHoH1LguOU56UItGfUWjujlO65kS9LAodViaN4bwIKd7oeW/ZHJ/4ljr/7MIiENnNy3HJ0zXv8Zkw==",
"cpu": [
"arm64"
],
@@ -1158,9 +1158,9 @@
]
},
"node_modules/@rollup/rollup-darwin-arm64": {
- "version": "4.62.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.62.0.tgz",
- "integrity": "sha512-BqCoMoIbn0keKys+dEAdBa70EtOwV1bEsQCUgU9FdiZmmMge/Zk7LlkYGqbrdHR+Frnt0E1FOanly+rlwvvQzw==",
+ "version": "4.62.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.62.2.tgz",
+ "integrity": "sha512-v39RCCvj4He82I9sFmk+M1VZ0PLM9sfsLVikjfx2hYBNALhrrOR2D3JjQA6AhlaSOgcR+RzrKY7e1+bT6SUO/A==",
"cpu": [
"arm64"
],
@@ -1172,9 +1172,9 @@
]
},
"node_modules/@rollup/rollup-darwin-x64": {
- "version": "4.62.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.62.0.tgz",
- "integrity": "sha512-SIMzST3VFNXDAbeIWDWiFCNM5qncUBDWaEV7NfE7oZbDt2mgfW4MvbKdbYiGOLoM32gbTv608UMd0XktEYSD7w==",
+ "version": "4.62.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.62.2.tgz",
+ "integrity": "sha512-yl0y2vq3S3lHeuXhEdss6TWfKW8vkujImO12tn4ZkG/4oghr09LvdYm2RElVjokTQiUvDUGXLGsYeLqUMCKpGA==",
"cpu": [
"x64"
],
@@ -1186,9 +1186,9 @@
]
},
"node_modules/@rollup/rollup-freebsd-arm64": {
- "version": "4.62.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.62.0.tgz",
- "integrity": "sha512-ezjfSQMP7ArdUsbBwbQIfwAlhE84I2iVnzQNCFSveqV42q+BmKlzVpf7mxv5EchLcoWU4y6/heFzVg1F+hodUQ==",
+ "version": "4.62.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.62.2.tgz",
+ "integrity": "sha512-tT4pvt4qXD+vEoezupCWi+a1F0vvDiksiHc+PxRlYTOH1I6/X4id9jPxTP+Fg+545euaFT1jJVs4CEdHZAU1vw==",
"cpu": [
"arm64"
],
@@ -1200,9 +1200,9 @@
]
},
"node_modules/@rollup/rollup-freebsd-x64": {
- "version": "4.62.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.62.0.tgz",
- "integrity": "sha512-9+qTWGW9AZRhnUgwtTwzNwcPlL87ngkeN0LA+q1bADvmY9aNvWaF2TFW8BZgnQPYxpDI7+rMVLivcd4V737TAQ==",
+ "version": "4.62.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.62.2.tgz",
+ "integrity": "sha512-6nU5F2wCW+qvCBhTn1pdIU3bzsIoF7EUwsCDRxilWGprQR6yd508YnH9+OKFCwpfS8pjZqDUmnCAr7exax0XCg==",
"cpu": [
"x64"
],
@@ -1214,9 +1214,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
- "version": "4.62.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.62.0.tgz",
- "integrity": "sha512-T1dMEQhXA/jkJ/jyMIw9IovK8bSUq7A8kLIlvZTb/6YIVsp2zLavr4F3oyllHWo7eIVJRyE5n3tUjQJEbE1IuQ==",
+ "version": "4.62.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.62.2.tgz",
+ "integrity": "sha512-n1GJHPOvpIfhi3TmrCeh6S6URt9BFCt0KQE3qvexyGCTAKpR4Lg+eWvNZEqu7epxwus/8ElT3hacYEucm49SZg==",
"cpu": [
"arm"
],
@@ -1231,9 +1231,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm-musleabihf": {
- "version": "4.62.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.62.0.tgz",
- "integrity": "sha512-2as0LgT7qQpyceQq6VUJYnumUMUrgGQCWIiDIN9DE0/tglsk6o66uCB4f3djRawAltvfCNLyZZrsqbPA6inCsA==",
+ "version": "4.62.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.62.2.tgz",
+ "integrity": "sha512-JqgflS8wEB+UXV/vS1RpRbifGBeN4D5lz8D8oOFbFZw4vedvdOgCFAjfBmIMdW3yL10XpQQ0Ambepw6MXrhOnA==",
"cpu": [
"arm"
],
@@ -1248,9 +1248,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-gnu": {
- "version": "4.62.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.62.0.tgz",
- "integrity": "sha512-bVURMg+6eNN9C/yc0aVjooZcwTTtYF4YW3xta5pP0//r3o1V8gXEHXWCndj47w/HhwsFroZrFhR+6uQP5T0n0g==",
+ "version": "4.62.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.62.2.tgz",
+ "integrity": "sha512-wnFJkogWvN4jm/hQRF2UBaeUmk20j5+DmHvoyWii2b8HJDyvz1MF2OU/6ynXt2KR63rbZLWkFpoytpdc/yBuSA==",
"cpu": [
"arm64"
],
@@ -1265,9 +1265,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-musl": {
- "version": "4.62.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.62.0.tgz",
- "integrity": "sha512-Ful8pM/2yYI83PViWdFdpZhdI8HJ5qsXANe5atypbHDf+KIBBDsZsbyy8hbXnULVvW9NsTh5DHwbcBftyLTfiw==",
+ "version": "4.62.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.62.2.tgz",
+ "integrity": "sha512-HVu2bp0zhvJ8xHEV9+UUs7S90VadmBSY3LcIMvozbPo4AuMGDWlz3ymHLHZPX4hR67TKTt8Qp5PJ5RBg/i+RMQ==",
"cpu": [
"arm64"
],
@@ -1282,9 +1282,9 @@
]
},
"node_modules/@rollup/rollup-linux-loong64-gnu": {
- "version": "4.62.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.62.0.tgz",
- "integrity": "sha512-9Gp/DgrkzfUBmNPVTyPTvay+4xEP7M/clXpj3efXBcm6uTIVIgDg4rqUpqKXvLEuFRVuEpSAOkhgNeecvaZ4Cg==",
+ "version": "4.62.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.62.2.tgz",
+ "integrity": "sha512-mQqqAV8QaoSgr9I2fKDLY2BAVvmKjWoGiu/cSYQonsLvtqwEn1E4QYfnCOcp5zoEqNhsDYin1s6jx/VJmrxlZg==",
"cpu": [
"loong64"
],
@@ -1299,9 +1299,9 @@
]
},
"node_modules/@rollup/rollup-linux-loong64-musl": {
- "version": "4.62.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.62.0.tgz",
- "integrity": "sha512-m9tsJz54LUXkSYM8+8PG81B9IKK5r+2T0clMq4QrS16xFosufU7firBDAZEsDheDs7wTlP7h3++S7lMsU955HA==",
+ "version": "4.62.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.62.2.tgz",
+ "integrity": "sha512-IxKLoxCQ2IWi6bT2akyDUBGsOImDKB+sPp4EsTmwFQ/fMwpCKm8uLSSgP/Kx/QYUgKis6SEZ5/Nlhup0DIA0PQ==",
"cpu": [
"loong64"
],
@@ -1316,9 +1316,9 @@
]
},
"node_modules/@rollup/rollup-linux-ppc64-gnu": {
- "version": "4.62.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.62.0.tgz",
- "integrity": "sha512-3UvJ5PNVU16aJf6M3tFI24pWzAl2/ynfbyRN3ICyQajK1lSkrnVYNnLz3v04J32qKa0FczJc22zeToc0lr2A3w==",
+ "version": "4.62.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.62.2.tgz",
+ "integrity": "sha512-Mk5ha2RQSgyFfmYYLkBpPnUk8D8FriBxesO1u9O75X0mHgXL1UQcH5Itl2lurWL2tj0RxV9b9tJgipac0hRY9A==",
"cpu": [
"ppc64"
],
@@ -1333,9 +1333,9 @@
]
},
"node_modules/@rollup/rollup-linux-ppc64-musl": {
- "version": "4.62.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.62.0.tgz",
- "integrity": "sha512-vRWUAbYLGHBZS6Q8Msb2sfnf1fvJf+47t8l/TwOerM2qArzy+IeNMTHrYLHXh95h8MoatPHI5hhSZNs+mGXKPg==",
+ "version": "4.62.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.62.2.tgz",
+ "integrity": "sha512-CjvEnqJL/0/TQ3TXX3OPIJ/kmBellrWd4heXUmHeJlTnmwjKpSJzoehLaL6Xk0ZnMHBu9dZuFADNOrtjF4v+2w==",
"cpu": [
"ppc64"
],
@@ -1350,9 +1350,9 @@
]
},
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
- "version": "4.62.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.62.0.tgz",
- "integrity": "sha512-c00T5SYENHAt86cfW47URaP3Us5vLC/4QO7GYud1G5VNRffCwwCuBspwqYrriuJB+5m0WFzClCn9wed0FBjKvg==",
+ "version": "4.62.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.62.2.tgz",
+ "integrity": "sha512-1SiZbzwdkaDURsew/tSOrooKiYy7EQGT6m8ufavAi9NEyQb/6VuIxFXAL1fqa4iZe3g4NbNk4P7J32z2tw5Mgg==",
"cpu": [
"riscv64"
],
@@ -1367,9 +1367,9 @@
]
},
"node_modules/@rollup/rollup-linux-riscv64-musl": {
- "version": "4.62.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.62.0.tgz",
- "integrity": "sha512-krrCDilhXOwFkSkO3Wm9I/f9H0L92XHHwy2fwxjukxIbh0dem8gZqOW5Y8BsHrpJv5qwlRBV+Wl4ZFyRWhUpwg==",
+ "version": "4.62.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.62.2.tgz",
+ "integrity": "sha512-nQts12zJ3NQRoE6uYljOH89v7szzLDvG2JD/vsX+vGXU8w/At1GowTZ5/7qeFQ8m7L55rpR8Okugnuo5bgjy2Q==",
"cpu": [
"riscv64"
],
@@ -1384,9 +1384,9 @@
]
},
"node_modules/@rollup/rollup-linux-s390x-gnu": {
- "version": "4.62.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.62.0.tgz",
- "integrity": "sha512-7pfYFSTc4/rUC/FtAI0Qp6QthDBCIi6/AuP1xYqFk5vanI6KnL5dWKP60OM/05LOsbwTmIcvr6eXC4CJuJ75IA==",
+ "version": "4.62.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.62.2.tgz",
+ "integrity": "sha512-E9/ll019jhPIJgpzfZoIkBGhcz+kKNgVWYRY0zr9srBdPPFVpvOKW8VaJKUbeK+eZXyQF9ltME+Kk6affeaPgg==",
"cpu": [
"s390x"
],
@@ -1401,9 +1401,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.62.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.62.0.tgz",
- "integrity": "sha512-7SDIalKeIpG0Ifogbbdn58HmSotYMlf23K3dCJEmiVd9Fg36Vmni82iPQec27N3wY4Bvbxftkxz6vSx9OcouTg==",
+ "version": "4.62.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.62.2.tgz",
+ "integrity": "sha512-5BqxR/pshjey51iliyzTD5Xi3EN0aLmQ2lZ3lvefVV9c82BvrLo2/6OT55iifpWBufs6kdwWbuOKS841DrmK9A==",
"cpu": [
"x64"
],
@@ -1418,9 +1418,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-musl": {
- "version": "4.62.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.62.0.tgz",
- "integrity": "sha512-eRZevouTH2i1HeAVLqJuLnt256krQkGY0TN6WsTmsIhuzbh457HuWDMakKwmi0Cjadux983CoSr8Lim2QhUIFw==",
+ "version": "4.62.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.62.2.tgz",
+ "integrity": "sha512-uNN83XxQrRAh/w0/pmAfibcwyb6YWt4gP+dpnQKPVJshAloQ785ii8CT8ZCIxkGg9opVsvAlGhFitSm6D1Jjpg==",
"cpu": [
"x64"
],
@@ -1435,9 +1435,9 @@
]
},
"node_modules/@rollup/rollup-openbsd-x64": {
- "version": "4.62.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.62.0.tgz",
- "integrity": "sha512-3oVS7FLGa4U1qcvao9ylGxrjXZyUQqR8UwxEcnUEyPX53O/C/mKDZegNXTdHCP+h3e6ta/f1EN38Yif1mmZHYg==",
+ "version": "4.62.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.62.2.tgz",
+ "integrity": "sha512-srjEIxSH3LRnJN6THczDHWQplqEMFiAJrTab0msUryh9kwNpkICf3Ea6q6MN/2cZwRFUNx5w+h6Hpi4QuHS6Zg==",
"cpu": [
"x64"
],
@@ -1449,9 +1449,9 @@
]
},
"node_modules/@rollup/rollup-openharmony-arm64": {
- "version": "4.62.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.62.0.tgz",
- "integrity": "sha512-yTB9TgfWj5wHe5QgktAgXTLLot1gvEjl1NiPPAUiCs4oPrIWFl5V4nC3GrkNdj9LaAU4s94nVrGbGOCqUpyWsg==",
+ "version": "4.62.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.62.2.tgz",
+ "integrity": "sha512-8hOJnxgbyObnCm5AlRA3A931xX19xq80RjVTKgJOvEKWqJruP/Uf12IbAOaDjjEXYRewwHLfmF0YRIdK3OwKWA==",
"cpu": [
"arm64"
],
@@ -1463,9 +1463,9 @@
]
},
"node_modules/@rollup/rollup-win32-arm64-msvc": {
- "version": "4.62.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.62.0.tgz",
- "integrity": "sha512-5LOhoaesY3doG1c+ac/2JtgREpKoJr5bUHH8tKY0V8di7+uSV6BwLs2PlR0/yzefGOkR+wE7ZolZphHCsyG5Rw==",
+ "version": "4.62.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.62.2.tgz",
+ "integrity": "sha512-mmF4AY1i0hG/bLWUctUq59gtmgaSIRa3cu/A3JFRp/sCNEme2bgDEiDS22P9FbnJB8NJNF4jPJiSP5RHQpUTDg==",
"cpu": [
"arm64"
],
@@ -1477,9 +1477,9 @@
]
},
"node_modules/@rollup/rollup-win32-ia32-msvc": {
- "version": "4.62.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.62.0.tgz",
- "integrity": "sha512-yYkWHhmbhRTWTnWos5HC4GcPQfjlzzCNbM9e/+GXrLuaBXYA3qSDR9f0Vgufd5S8yX81U8jPKp7ZnAjZFMtRnw==",
+ "version": "4.62.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.62.2.tgz",
+ "integrity": "sha512-DZgkknc6jhHrk46V25vbAM0zZkyP0nSDkJB8/dRkLTxv470dOmWDqGoEJl/9A0dFfS7yE3REOwNDxpHwSLSt0Q==",
"cpu": [
"ia32"
],
@@ -1491,9 +1491,9 @@
]
},
"node_modules/@rollup/rollup-win32-x64-gnu": {
- "version": "4.62.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.62.0.tgz",
- "integrity": "sha512-SoTb6lPg25xZlA2ibwQ++ahCCnH+FP0qmEuafMJ4gznZKOlXioKEAeJLgCrqjM98ACziXM9V1amFjICVL4IFoA==",
+ "version": "4.62.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.62.2.tgz",
+ "integrity": "sha512-T6xr6ucWSFto+VGajA8YH26LdpHRuP4YLHEKAtCWvJDOlnmWcDZVCI2Jmjr+IFHDlt2zRaTAKE4tfjTaWLgJBg==",
"cpu": [
"x64"
],
@@ -1505,9 +1505,9 @@
]
},
"node_modules/@rollup/rollup-win32-x64-msvc": {
- "version": "4.62.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.62.0.tgz",
- "integrity": "sha512-5L+T1fMX4RIEBoZzT0+sQ0PhTS36NULFmMXtl1TZo44TMAROIMHbZufSOjVWt/Y622BtxgxtaNOokbTDvfsrZA==",
+ "version": "4.62.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.62.2.tgz",
+ "integrity": "sha512-BfzEnDJOt9T8M989/lA37EcJgat01wLRnoi5dQf3QzOH7jzpqTAzdDbVfRljVr5r+jzKqpbHeyOfAaXxAd0PAA==",
"cpu": [
"x64"
],
@@ -1995,9 +1995,9 @@
"license": "BSD-3-Clause"
},
"node_modules/acorn": {
- "version": "8.16.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz",
- "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==",
+ "version": "8.17.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.17.0.tgz",
+ "integrity": "sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==",
"dev": true,
"license": "MIT",
"bin": {
@@ -3276,9 +3276,9 @@
"license": "MIT"
},
"node_modules/nanoid": {
- "version": "3.3.12",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz",
- "integrity": "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==",
+ "version": "3.3.13",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.13.tgz",
+ "integrity": "sha512-sPdqC6ByMVVGvF1ynvvMo0/o+oD1VX7DaHhijt1bFgjvBkHBib4t49GoNDhf2NDta4oeUNlaGbSt5K7qjZ955Q==",
"dev": true,
"funding": [
{
@@ -3302,15 +3302,18 @@
"license": "MIT"
},
"node_modules/obug": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz",
- "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==",
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.3.tgz",
+ "integrity": "sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==",
"dev": true,
"funding": [
"https://github.com/sponsors/sxzz",
"https://opencollective.com/debug"
],
- "license": "MIT"
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.20.0"
+ }
},
"node_modules/optionator": {
"version": "0.9.4",
@@ -3610,9 +3613,9 @@
}
},
"node_modules/rollup": {
- "version": "4.62.0",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.62.0.tgz",
- "integrity": "sha512-nc72Wgq62I7rtDV4izT5/aaS0zxy3kttkinf9586ApknY3jZO9NYsmtc24fUckA0X7Q2v+ML4a15pdUlV5V/jA==",
+ "version": "4.62.2",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.62.2.tgz",
+ "integrity": "sha512-RFnrW4lhXA3s3eqHDZvN654g8OTjzRfqpIRJYczCGB6HzphckVAi/Qh4tbPUbRuDi7s1Llv8g/NspLkttY3gTA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3626,31 +3629,31 @@
"npm": ">=8.0.0"
},
"optionalDependencies": {
- "@rollup/rollup-android-arm-eabi": "4.62.0",
- "@rollup/rollup-android-arm64": "4.62.0",
- "@rollup/rollup-darwin-arm64": "4.62.0",
- "@rollup/rollup-darwin-x64": "4.62.0",
- "@rollup/rollup-freebsd-arm64": "4.62.0",
- "@rollup/rollup-freebsd-x64": "4.62.0",
- "@rollup/rollup-linux-arm-gnueabihf": "4.62.0",
- "@rollup/rollup-linux-arm-musleabihf": "4.62.0",
- "@rollup/rollup-linux-arm64-gnu": "4.62.0",
- "@rollup/rollup-linux-arm64-musl": "4.62.0",
- "@rollup/rollup-linux-loong64-gnu": "4.62.0",
- "@rollup/rollup-linux-loong64-musl": "4.62.0",
- "@rollup/rollup-linux-ppc64-gnu": "4.62.0",
- "@rollup/rollup-linux-ppc64-musl": "4.62.0",
- "@rollup/rollup-linux-riscv64-gnu": "4.62.0",
- "@rollup/rollup-linux-riscv64-musl": "4.62.0",
- "@rollup/rollup-linux-s390x-gnu": "4.62.0",
- "@rollup/rollup-linux-x64-gnu": "4.62.0",
- "@rollup/rollup-linux-x64-musl": "4.62.0",
- "@rollup/rollup-openbsd-x64": "4.62.0",
- "@rollup/rollup-openharmony-arm64": "4.62.0",
- "@rollup/rollup-win32-arm64-msvc": "4.62.0",
- "@rollup/rollup-win32-ia32-msvc": "4.62.0",
- "@rollup/rollup-win32-x64-gnu": "4.62.0",
- "@rollup/rollup-win32-x64-msvc": "4.62.0",
+ "@rollup/rollup-android-arm-eabi": "4.62.2",
+ "@rollup/rollup-android-arm64": "4.62.2",
+ "@rollup/rollup-darwin-arm64": "4.62.2",
+ "@rollup/rollup-darwin-x64": "4.62.2",
+ "@rollup/rollup-freebsd-arm64": "4.62.2",
+ "@rollup/rollup-freebsd-x64": "4.62.2",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.62.2",
+ "@rollup/rollup-linux-arm-musleabihf": "4.62.2",
+ "@rollup/rollup-linux-arm64-gnu": "4.62.2",
+ "@rollup/rollup-linux-arm64-musl": "4.62.2",
+ "@rollup/rollup-linux-loong64-gnu": "4.62.2",
+ "@rollup/rollup-linux-loong64-musl": "4.62.2",
+ "@rollup/rollup-linux-ppc64-gnu": "4.62.2",
+ "@rollup/rollup-linux-ppc64-musl": "4.62.2",
+ "@rollup/rollup-linux-riscv64-gnu": "4.62.2",
+ "@rollup/rollup-linux-riscv64-musl": "4.62.2",
+ "@rollup/rollup-linux-s390x-gnu": "4.62.2",
+ "@rollup/rollup-linux-x64-gnu": "4.62.2",
+ "@rollup/rollup-linux-x64-musl": "4.62.2",
+ "@rollup/rollup-openbsd-x64": "4.62.2",
+ "@rollup/rollup-openharmony-arm64": "4.62.2",
+ "@rollup/rollup-win32-arm64-msvc": "4.62.2",
+ "@rollup/rollup-win32-ia32-msvc": "4.62.2",
+ "@rollup/rollup-win32-x64-gnu": "4.62.2",
+ "@rollup/rollup-win32-x64-msvc": "4.62.2",
"fsevents": "~2.3.2"
}
},
@@ -3668,9 +3671,9 @@
}
},
"node_modules/semver": {
- "version": "7.8.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.4.tgz",
- "integrity": "sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA==",
+ "version": "7.8.5",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
+ "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
"dev": true,
"license": "ISC",
"bin": {
@@ -3681,9 +3684,9 @@
}
},
"node_modules/serialize-javascript": {
- "version": "7.0.5",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-7.0.5.tgz",
- "integrity": "sha512-F4LcB0UqUl1zErq+1nYEEzSHJnIwb3AF2XWB94b+afhrekOUijwooAYqFyRbjYkm2PAKBabx6oYv/xDxNi8IBw==",
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-7.0.6.tgz",
+ "integrity": "sha512-ATTK5Q4gFVg0YDp1my2vqygyvhcklD/UV5GIlYHooGTn/NogJqIzpetkD6E5kmuVULqz/S9inUL25XcAgDRJQg==",
"dev": true,
"license": "BSD-3-Clause",
"engines": {
@@ -3872,22 +3875,22 @@
}
},
"node_modules/tldts": {
- "version": "7.4.2",
- "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.4.2.tgz",
- "integrity": "sha512-kCwffuaH8ntKtygnWe1b4BJKWiCUH30n5KfoTr6IchcXOwR7chAOFJxFrH3vjANafUYrIA4a7SDL+nn7SiR4Sw==",
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.4.3.tgz",
+ "integrity": "sha512-A3BDQBeeukYPzB4QdQ1DtdlUmp4x2OCH8n5UVhEWbyANxNep8GavottKzd1xYKFJKjUgMyPT7EzOfnBO55s8Sg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "tldts-core": "^7.4.2"
+ "tldts-core": "^7.4.3"
},
"bin": {
"tldts": "bin/cli.js"
}
},
"node_modules/tldts-core": {
- "version": "7.4.2",
- "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.4.2.tgz",
- "integrity": "sha512-nwEyF4vl4RSJjwSjBUmOSxc3BFPoIFdlRthJ6e+5v9P3bHNsoD06UjuqMUspqp7vsEZ1beaHi1km+optiE17yA==",
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.4.3.tgz",
+ "integrity": "sha512-27ep5H9PzdBrNd5OFM/j3WCU8F3kPwM9D0BOaOf7uYfxMJfyr0K5Tjj69Gri+sZlh2WXd5buIm47NuPF29CDiw==",
"dev": true,
"license": "MIT"
},
@@ -3966,9 +3969,9 @@
}
},
"node_modules/undici": {
- "version": "7.27.0",
- "resolved": "https://registry.npmjs.org/undici/-/undici-7.27.0.tgz",
- "integrity": "sha512-+t2Z/GwkZQDtu00813aP66ygViGtPHKhhoFZpQKpKrE+9jIgES+Zw+mFNaDWOVRKiuJjuqKHzD3B1sfGg8+ZOQ==",
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/undici/-/undici-7.28.0.tgz",
+ "integrity": "sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==",
"dev": true,
"license": "MIT",
"engines": {
diff --git a/package.json b/package.json
index c3ed0156..02167e97 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@next2d/player",
- "version": "3.7.0",
+ "version": "3.8.0",
"description": "Experience the fast and beautiful anti-aliased rendering of WebGL/WebGPU. You can create rich, interactive graphics, cross-platform applications and games without worrying about browser or device compatibility.",
"author": "Toshiyuki Ienaga (https://github.com/ienaga/)",
"license": "MIT",
@@ -62,7 +62,7 @@
"eslint-plugin-unused-imports": "^4.4.1",
"globals": "^17.6.0",
"jsdom": "^29.1.1",
- "rollup": "^4.62.0",
+ "rollup": "^4.62.2",
"typescript": "^6.0.3",
"vite": "^8.0.16",
"vitest": "^4.1.9",
diff --git a/packages/webgl/src/Context/usecase/ContextDrawElementUseCase.test.ts b/packages/webgl/src/Context/usecase/ContextDrawElementUseCase.test.ts
index 6388e9a5..83743565 100644
--- a/packages/webgl/src/Context/usecase/ContextDrawElementUseCase.test.ts
+++ b/packages/webgl/src/Context/usecase/ContextDrawElementUseCase.test.ts
@@ -8,7 +8,7 @@ vi.mock("../../TextureManager/usecase/TextureManagerCreateFromCanvasUseCase", ()
vi.mock("../../TextureManager/usecase/TextureManagerReleaseTextureObjectUseCase", () => ({
execute: vi.fn()
}));
-vi.mock("../../Shader/Variants/Blend/service/VariantsBlendTextureShaderService", () => ({
+vi.mock("../../Shader/Variants/Blend/service/VariantsBlendTexturePremultiplyShaderService", () => ({
execute: vi.fn(() => ({}))
}));
vi.mock("../../Shader/ShaderManager/service/ShaderManagerSetTextureUniformService", () => ({
diff --git a/packages/webgl/src/Context/usecase/ContextDrawElementUseCase.ts b/packages/webgl/src/Context/usecase/ContextDrawElementUseCase.ts
index 5629ecdf..b76552a0 100644
--- a/packages/webgl/src/Context/usecase/ContextDrawElementUseCase.ts
+++ b/packages/webgl/src/Context/usecase/ContextDrawElementUseCase.ts
@@ -1,7 +1,7 @@
import type { Node } from "@next2d/texture-packer";
import { execute as textureManagerCreateFromCanvasUseCase } from "../../TextureManager/usecase/TextureManagerCreateFromCanvasUseCase";
import { execute as textureManagerReleaseTextureObjectUseCase } from "../../TextureManager/usecase/TextureManagerReleaseTextureObjectUseCase";
-import { execute as variantsBlendTextureShaderService } from "../../Shader/Variants/Blend/service/VariantsBlendTextureShaderService";
+import { execute as variantsBlendTexturePremultiplyShaderService } from "../../Shader/Variants/Blend/service/VariantsBlendTexturePremultiplyShaderService";
import { execute as shaderManagerSetTextureUniformService } from "../../Shader/ShaderManager/service/ShaderManagerSetTextureUniformService";
import { execute as shaderManagerDrawTextureUseCase } from "../../Shader/ShaderManager/usecase/ShaderManagerDrawTextureUseCase";
import { execute as blendResetService } from "../../Blend/service/BlendResetService";
@@ -20,7 +20,7 @@ export const execute = (node: Node, element: OffscreenCanvas | ImageBitmap): voi
{
const textureObject = textureManagerCreateFromCanvasUseCase(node.w, node.h, element);
- const shaderManager = variantsBlendTextureShaderService();
+ const shaderManager = variantsBlendTexturePremultiplyShaderService();
shaderManagerSetTextureUniformService(shaderManager, node.w, node.h);
// テクスチャを描画
diff --git a/packages/webgl/src/Context/usecase/ContextDrawPixelsUseCase.test.ts b/packages/webgl/src/Context/usecase/ContextDrawPixelsUseCase.test.ts
index db9ec0e6..8a92ea32 100644
--- a/packages/webgl/src/Context/usecase/ContextDrawPixelsUseCase.test.ts
+++ b/packages/webgl/src/Context/usecase/ContextDrawPixelsUseCase.test.ts
@@ -8,7 +8,7 @@ vi.mock("../../TextureManager/usecase/TextureManagerCreateFromPixelsUseCase", ()
vi.mock("../../TextureManager/usecase/TextureManagerReleaseTextureObjectUseCase", () => ({
execute: vi.fn()
}));
-vi.mock("../../Shader/Variants/Blend/service/VariantsBlendTextureShaderService", () => ({
+vi.mock("../../Shader/Variants/Blend/service/VariantsBlendTexturePremultiplyShaderService", () => ({
execute: vi.fn(() => ({}))
}));
vi.mock("../../Shader/ShaderManager/service/ShaderManagerSetTextureUniformService", () => ({
diff --git a/packages/webgl/src/Context/usecase/ContextDrawPixelsUseCase.ts b/packages/webgl/src/Context/usecase/ContextDrawPixelsUseCase.ts
index ad960d82..7dd8c4e6 100644
--- a/packages/webgl/src/Context/usecase/ContextDrawPixelsUseCase.ts
+++ b/packages/webgl/src/Context/usecase/ContextDrawPixelsUseCase.ts
@@ -1,7 +1,7 @@
import type { Node } from "@next2d/texture-packer";
import { execute as textureManagerCreateFromPixelsUseCase } from "../../TextureManager/usecase/TextureManagerCreateFromPixelsUseCase";
import { execute as textureManagerReleaseTextureObjectUseCase } from "../../TextureManager/usecase/TextureManagerReleaseTextureObjectUseCase";
-import { execute as variantsBlendTextureShaderService } from "../../Shader/Variants/Blend/service/VariantsBlendTextureShaderService";
+import { execute as variantsBlendTexturePremultiplyShaderService } from "../../Shader/Variants/Blend/service/VariantsBlendTexturePremultiplyShaderService";
import { execute as shaderManagerSetTextureUniformService } from "../../Shader/ShaderManager/service/ShaderManagerSetTextureUniformService";
import { execute as shaderManagerDrawTextureUseCase } from "../../Shader/ShaderManager/usecase/ShaderManagerDrawTextureUseCase";
import { execute as blendResetService } from "../../Blend/service/BlendResetService";
@@ -20,7 +20,7 @@ export const execute = (node: Node, pixels: Uint8Array): void =>
{
const textureObject = textureManagerCreateFromPixelsUseCase(node.w, node.h, pixels);
- const shaderManager = variantsBlendTextureShaderService();
+ const shaderManager = variantsBlendTexturePremultiplyShaderService();
shaderManagerSetTextureUniformService(shaderManager, node.w, node.h);
// テクスチャを描画
diff --git a/packages/webgl/src/Shader/Fragment/FragmentShaderSourceTexture.ts b/packages/webgl/src/Shader/Fragment/FragmentShaderSourceTexture.ts
index 0032c1ee..afd72fa6 100644
--- a/packages/webgl/src/Shader/Fragment/FragmentShaderSourceTexture.ts
+++ b/packages/webgl/src/Shader/Fragment/FragmentShaderSourceTexture.ts
@@ -26,6 +26,25 @@ void main() {
}`;
};
+export const TEXTURE_PREMULTIPLY = (): string =>
+{
+ return `#version 300 es
+precision mediump float;
+
+uniform sampler2D u_texture;
+
+in vec2 v_coord;
+out vec4 o_color;
+
+void main() {
+ vec4 src = texture(u_texture, v_coord);
+ // ストレートアルファのソースをプリマルチプライドアルファへ変換して出力する。
+ // アトラスはプリマルチプライ空間で構築され blendFunc(ONE, ONE_MINUS_SRC_ALPHA) で
+ // 合成されるため、変換しないと透明部の白抜けや縁の白線が発生する。
+ o_color = vec4(src.rgb * src.a, src.a);
+}`;
+};
+
export const INSTANCE_TEXTURE = (): string =>
{
return `#version 300 es
diff --git a/packages/webgl/src/Shader/Variants/Blend/service/VariantsBlendTexturePremultiplyShaderService.ts b/packages/webgl/src/Shader/Variants/Blend/service/VariantsBlendTexturePremultiplyShaderService.ts
new file mode 100644
index 00000000..c0559872
--- /dev/null
+++ b/packages/webgl/src/Shader/Variants/Blend/service/VariantsBlendTexturePremultiplyShaderService.ts
@@ -0,0 +1,34 @@
+import { TEXTURE_PREMULTIPLY } from "../../../Fragment/FragmentShaderSourceTexture";
+import { ShaderManager } from "../../../ShaderManager";
+import { BLEND_TEMPLATE } from "../../../Vertex/VertexShaderSource";
+import { $collection } from "../../BlendVariants";
+
+/**
+ * @description ストレートアルファのテクスチャをプリマルチプライドアルファへ変換して描画する
+ * シェーダーを生成して返却。画像(Bitmap)・TextField・Video など、ストレート
+ * アルファのソースをプリマルチプライ空間のアトラスへ合成する用途で使用する。
+ * Generate and return the shader that converts a straight-alpha texture into
+ * premultiplied alpha. Used for compositing straight-alpha sources (Bitmap
+ * image, TextField, Video) into the premultiplied-alpha atlas.
+ *
+ * @return {ShaderManager}
+ * @method
+ * @protected
+ */
+export const execute = (): ShaderManager =>
+{
+ const key = "pp";
+
+ if ($collection.has(key)) {
+ return $collection.get(key) as NonNullable;
+ }
+
+ const shaderManager = new ShaderManager(
+ BLEND_TEMPLATE(),
+ TEXTURE_PREMULTIPLY()
+ );
+
+ $collection.set(key, shaderManager);
+
+ return shaderManager;
+};
diff --git a/src/index.ts b/src/index.ts
index a56cbd15..0bf27f51 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -3,7 +3,7 @@
import { Next2D } from "@next2d/core";
if (!("next2d" in window)) {
- console.log("%c Next2D Player %c 3.7.0 %c https://next2d.app",
+ console.log("%c Next2D Player %c 3.8.0 %c https://next2d.app",
"color: #fff; background: #5f5f5f",
"color: #fff; background: #4bc729",
"");