@benjos/create-boilerplate 1.5.6 → 1.5.9

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.
Files changed (62) hide show
  1. package/package.json +1 -1
  2. package/template-vanilla/package-lock.json +124 -93
  3. package/template-vanilla/package.json +5 -2
  4. package/template-vanilla/src/experiences/cameras/threes/DebugThreeCameraController.ts +1 -1
  5. package/template-vanilla/src/experiences/cameras/threes/LoaderThreeCameraController.ts +1 -1
  6. package/template-vanilla/src/experiences/cameras/threes/MainThreeCameraController.ts +1 -1
  7. package/template-vanilla/src/experiences/cameras/threes/bases/ThreeCameraControllerBase.ts +2 -2
  8. package/template-vanilla/src/experiences/composers/threes/MainThreeEffectComposer.ts +20 -0
  9. package/template-vanilla/src/experiences/composers/threes/bases/ThreeEffectComposerBase.ts +54 -0
  10. package/template-vanilla/src/experiences/composers/threes/bases/passes/ThreePassBase.ts +11 -0
  11. package/template-vanilla/src/experiences/composers/threes/passes/TemplateThreePass.ts +22 -0
  12. package/template-vanilla/src/experiences/engines/threes/app/LoaderThreeApp.ts +2 -2
  13. package/template-vanilla/src/experiences/engines/threes/app/MainThreeApp.ts +2 -2
  14. package/template-vanilla/src/experiences/engines/threes/app/bases/ThreeAppBase.ts +7 -7
  15. package/template-vanilla/src/experiences/managers/DebugManager.ts +19 -5
  16. package/template-vanilla/src/experiences/managers/threes/ThreeAssetsManager.ts +3 -3
  17. package/template-vanilla/src/experiences/managers/threes/ThreeRaycasterManager.ts +1 -1
  18. package/template-vanilla/src/experiences/materials/threes/loaders/{LoaderMaterial.ts → LoaderThreeMaterial.ts} +6 -6
  19. package/template-vanilla/src/experiences/renderers/threes/LoaderThreeWebGLRenderer.ts +18 -0
  20. package/template-vanilla/src/experiences/renderers/threes/{Renderer.ts → MainThreeWebGLRenderer.ts} +24 -14
  21. package/template-vanilla/src/experiences/renderers/threes/bases/ThreeWebGLRendererBase.ts +60 -0
  22. package/template-vanilla/src/experiences/shaders/threes/composers/templates/TemplatePassFragmentShader.glsl +10 -0
  23. package/template-vanilla/src/experiences/shaders/threes/composers/templates/TemplatePassVertexShader.glsl +6 -0
  24. package/template-vanilla/src/experiences/types/global.d.ts +1 -1
  25. package/template-vanilla/src/experiences/types/styles.d.ts +2 -0
  26. package/template-vanilla/src/experiences/views/threes/bases/ThreeViewBase.ts +2 -2
  27. package/template-vanilla/src/experiences/views/threes/bases/components/ThreeAnimatedModelBase.ts +1 -1
  28. package/template-vanilla/src/experiences/views/threes/bases/components/ThreeModelBase.ts +1 -1
  29. package/template-vanilla/src/experiences/views/threes/loaders/components/TemplateLoaderThreeActor.ts +4 -4
  30. package/template-vanilla/src/experiences/views/threes/worlds/components/Environment.ts +1 -1
  31. package/template-vue/package-lock.json +123 -92
  32. package/template-vue/package.json +4 -1
  33. package/template-vue/src/experiences/cameras/threes/DebugThreeCameraController.ts +1 -1
  34. package/template-vue/src/experiences/cameras/threes/LoaderThreeCameraController.ts +1 -1
  35. package/template-vue/src/experiences/cameras/threes/MainThreeCameraController.ts +1 -1
  36. package/template-vue/src/experiences/cameras/threes/bases/ThreeCameraControllerBase.ts +2 -2
  37. package/template-vue/src/experiences/composers/threes/MainThreeEffectComposer.ts +20 -0
  38. package/template-vue/src/experiences/composers/threes/bases/ThreeEffectComposerBase.ts +54 -0
  39. package/template-vue/src/experiences/composers/threes/bases/passes/ThreePassBase.ts +11 -0
  40. package/template-vue/src/experiences/composers/threes/passes/TemplateThreePass.ts +22 -0
  41. package/template-vue/src/experiences/engines/threes/app/LoaderThreeApp.ts +2 -2
  42. package/template-vue/src/experiences/engines/threes/app/MainThreeApp.ts +2 -2
  43. package/template-vue/src/experiences/engines/threes/app/bases/ThreeAppBase.ts +7 -7
  44. package/template-vue/src/experiences/managers/DebugManager.ts +19 -5
  45. package/template-vue/src/experiences/managers/threes/ThreeAssetsManager.ts +3 -3
  46. package/template-vue/src/experiences/managers/threes/ThreeRaycasterManager.ts +1 -1
  47. package/template-vue/src/experiences/materials/threes/loaders/{LoaderMaterial.ts → LoaderThreeMaterial.ts} +6 -6
  48. package/template-vue/src/experiences/renderers/threes/LoaderThreeWebGLRenderer.ts +18 -0
  49. package/template-vue/src/experiences/renderers/threes/{Renderer.ts → MainThreeWebGLRenderer.ts} +24 -14
  50. package/template-vue/src/experiences/renderers/threes/bases/ThreeWebGLRendererBase.ts +60 -0
  51. package/template-vue/src/experiences/shaders/threes/composers/templates/TemplatePassFragmentShader.glsl +10 -0
  52. package/template-vue/src/experiences/shaders/threes/composers/templates/TemplatePassVertexShader.glsl +6 -0
  53. package/template-vue/src/experiences/types/styles.d.ts +2 -0
  54. package/template-vue/src/experiences/views/threes/bases/ThreeViewBase.ts +1 -1
  55. package/template-vue/src/experiences/views/threes/bases/components/ThreeAnimatedModelBase.ts +1 -1
  56. package/template-vue/src/experiences/views/threes/bases/components/ThreeModelBase.ts +1 -1
  57. package/template-vue/src/experiences/views/threes/loaders/components/TemplateLoaderThreeActor.ts +4 -4
  58. package/template-vue/src/experiences/views/threes/worlds/components/Environment.ts +1 -1
  59. package/template-vanilla/src/experiences/renderers/threes/LoaderRenderer.ts +0 -18
  60. package/template-vanilla/src/experiences/renderers/threes/bases/WebGLRendererBase.ts +0 -29
  61. package/template-vue/src/experiences/renderers/threes/LoaderRenderer.ts +0 -18
  62. package/template-vue/src/experiences/renderers/threes/bases/WebGLRendererBase.ts +0 -29
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@benjos/create-boilerplate",
3
- "version": "1.5.6",
3
+ "version": "1.5.9",
4
4
  "description": "CLI to scaffold Three.js projects with framework support",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,20 +1,23 @@
1
1
  {
2
2
  "name": "template-vanilla",
3
- "version": "1.5.6",
3
+ "version": "1.5.9",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "template-vanilla",
9
- "version": "1.5.6",
9
+ "version": "1.5.9",
10
10
  "dependencies": {
11
11
  "@benjos/cookware": "^1.0.4",
12
12
  "@benjos/spices": "^1.0.1",
13
13
  "@dimforge/rapier3d": "^0.19.3",
14
+ "@types/stats.js": "^0.17.4",
14
15
  "gsap": "^3.14.2",
15
16
  "howler": "^2.2.4",
16
17
  "lil-gui": "^0.21.0",
17
- "three": "^0.183.2"
18
+ "stats.js": "^0.17.0",
19
+ "three": "^0.183.2",
20
+ "three-custom-shader-material": "^6.4.0"
18
21
  },
19
22
  "devDependencies": {
20
23
  "@eslint/js": "^10.0.1",
@@ -286,26 +289,28 @@
286
289
  }
287
290
  },
288
291
  "node_modules/@napi-rs/wasm-runtime": {
289
- "version": "1.1.1",
290
- "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.1.tgz",
291
- "integrity": "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==",
292
+ "version": "1.1.2",
293
+ "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.2.tgz",
294
+ "integrity": "sha512-sNXv5oLJ7ob93xkZ1XnxisYhGYXfaG9f65/ZgYuAu3qt7b3NadcOEhLvx28hv31PgX8SZJRYrAIPQilQmFpLVw==",
292
295
  "dev": true,
293
296
  "license": "MIT",
294
297
  "optional": true,
295
298
  "dependencies": {
296
- "@emnapi/core": "^1.7.1",
297
- "@emnapi/runtime": "^1.7.1",
298
299
  "@tybys/wasm-util": "^0.10.1"
299
300
  },
300
301
  "funding": {
301
302
  "type": "github",
302
303
  "url": "https://github.com/sponsors/Brooooooklyn"
304
+ },
305
+ "peerDependencies": {
306
+ "@emnapi/core": "^1.7.1",
307
+ "@emnapi/runtime": "^1.7.1"
303
308
  }
304
309
  },
305
310
  "node_modules/@oxc-project/types": {
306
- "version": "0.120.0",
307
- "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.120.0.tgz",
308
- "integrity": "sha512-k1YNu55DuvAip/MGE1FTsIuU3FUCn6v/ujG9V7Nq5Df/kX2CWb13hhwD0lmJGMGqE+bE1MXvv9SZVnMzEXlWcg==",
311
+ "version": "0.123.0",
312
+ "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.123.0.tgz",
313
+ "integrity": "sha512-YtECP/y8Mj1lSHiUWGSRzy/C6teUKlS87dEfuVKT09LgQbUsBW1rNg+MiJ4buGu3yuADV60gbIvo9/HplA56Ew==",
309
314
  "dev": true,
310
315
  "license": "MIT",
311
316
  "funding": {
@@ -654,9 +659,9 @@
654
659
  }
655
660
  },
656
661
  "node_modules/@rolldown/binding-android-arm64": {
657
- "version": "1.0.0-rc.10",
658
- "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.10.tgz",
659
- "integrity": "sha512-jOHxwXhxmFKuXztiu1ORieJeTbx5vrTkcOkkkn2d35726+iwhrY1w/+nYY/AGgF12thg33qC3R1LMBF5tHTZHg==",
662
+ "version": "1.0.0-rc.13",
663
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.13.tgz",
664
+ "integrity": "sha512-5ZiiecKH2DXAVJTNN13gNMUcCDg4Jy8ZjbXEsPnqa248wgOVeYRX0iqXXD5Jz4bI9BFHgKsI2qmyJynstbmr+g==",
660
665
  "cpu": [
661
666
  "arm64"
662
667
  ],
@@ -671,9 +676,9 @@
671
676
  }
672
677
  },
673
678
  "node_modules/@rolldown/binding-darwin-arm64": {
674
- "version": "1.0.0-rc.10",
675
- "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.10.tgz",
676
- "integrity": "sha512-gED05Teg/vtTZbIJBc4VNMAxAFDUPkuO/rAIyyxZjTj1a1/s6z5TII/5yMGZ0uLRCifEtwUQn8OlYzuYc0m70w==",
679
+ "version": "1.0.0-rc.13",
680
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.13.tgz",
681
+ "integrity": "sha512-tz/v/8G77seu8zAB3A5sK3UFoOl06zcshEzhUO62sAEtrEuW/H1CcyoupOrD+NbQJytYgA4CppXPzlrmp4JZKA==",
677
682
  "cpu": [
678
683
  "arm64"
679
684
  ],
@@ -688,9 +693,9 @@
688
693
  }
689
694
  },
690
695
  "node_modules/@rolldown/binding-darwin-x64": {
691
- "version": "1.0.0-rc.10",
692
- "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.10.tgz",
693
- "integrity": "sha512-rI15NcM1mA48lqrIxVkHfAqcyFLcQwyXWThy+BQ5+mkKKPvSO26ir+ZDp36AgYoYVkqvMcdS8zOE6SeBsR9e8A==",
696
+ "version": "1.0.0-rc.13",
697
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.13.tgz",
698
+ "integrity": "sha512-8DakphqOz8JrMYWTJmWA+vDJxut6LijZ8Xcdc4flOlAhU7PNVwo2MaWBF9iXjJAPo5rC/IxEFZDhJ3GC7NHvug==",
694
699
  "cpu": [
695
700
  "x64"
696
701
  ],
@@ -705,9 +710,9 @@
705
710
  }
706
711
  },
707
712
  "node_modules/@rolldown/binding-freebsd-x64": {
708
- "version": "1.0.0-rc.10",
709
- "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.10.tgz",
710
- "integrity": "sha512-XZRXHdTa+4ME1MuDVp021+doQ+z6Ei4CCFmNc5/sKbqb8YmkiJdj8QKlV3rCI0AJtAeSB5n0WGPuJWNL9p/L2w==",
713
+ "version": "1.0.0-rc.13",
714
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.13.tgz",
715
+ "integrity": "sha512-4wBQFfjDuXYN/SVI8inBF3Aa+isq40rc6VMFbk5jcpolUBTe5cYnMsHZ51nFWsx3PVyyNN3vgoESki0Hmr/4BA==",
711
716
  "cpu": [
712
717
  "x64"
713
718
  ],
@@ -722,9 +727,9 @@
722
727
  }
723
728
  },
724
729
  "node_modules/@rolldown/binding-linux-arm-gnueabihf": {
725
- "version": "1.0.0-rc.10",
726
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.10.tgz",
727
- "integrity": "sha512-R0SQMRluISSLzFE20sPWYHVmJdDQnRyc/FzSCN72BqQmh2SOZUFG+N3/vBZpR4C6WpEUVYJLrYUXaj43sJsNLA==",
730
+ "version": "1.0.0-rc.13",
731
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.13.tgz",
732
+ "integrity": "sha512-JW/e4yPIXLms+jmnbwwy5LA/LxVwZUWLN8xug+V200wzaVi5TEGIWQlh8o91gWYFxW609euI98OCCemmWGuPrw==",
728
733
  "cpu": [
729
734
  "arm"
730
735
  ],
@@ -739,9 +744,9 @@
739
744
  }
740
745
  },
741
746
  "node_modules/@rolldown/binding-linux-arm64-gnu": {
742
- "version": "1.0.0-rc.10",
743
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.10.tgz",
744
- "integrity": "sha512-Y1reMrV/o+cwpduYhJuOE3OMKx32RMYCidf14y+HssARRmhDuWXJ4yVguDg2R/8SyyGNo+auzz64LnPK9Hq6jg==",
747
+ "version": "1.0.0-rc.13",
748
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.13.tgz",
749
+ "integrity": "sha512-ZfKWpXiUymDnavepCaM6KG/uGydJ4l2nBmMxg60Ci4CbeefpqjPWpfaZM7PThOhk2dssqBAcwLc6rAyr0uTdXg==",
745
750
  "cpu": [
746
751
  "arm64"
747
752
  ],
@@ -759,9 +764,9 @@
759
764
  }
760
765
  },
761
766
  "node_modules/@rolldown/binding-linux-arm64-musl": {
762
- "version": "1.0.0-rc.10",
763
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.10.tgz",
764
- "integrity": "sha512-vELN+HNb2IzuzSBUOD4NHmP9yrGwl1DVM29wlQvx1OLSclL0NgVWnVDKl/8tEks79EFek/kebQKnNJkIAA4W2g==",
767
+ "version": "1.0.0-rc.13",
768
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.13.tgz",
769
+ "integrity": "sha512-bmRg3O6Z0gq9yodKKWCIpnlH051sEfdVwt+6m5UDffAQMUUqU0xjnQqqAUm+Gu7ofAAly9DqiQDtKu2nPDEABA==",
765
770
  "cpu": [
766
771
  "arm64"
767
772
  ],
@@ -779,9 +784,9 @@
779
784
  }
780
785
  },
781
786
  "node_modules/@rolldown/binding-linux-ppc64-gnu": {
782
- "version": "1.0.0-rc.10",
783
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.0-rc.10.tgz",
784
- "integrity": "sha512-ZqrufYTgzxbHwpqOjzSsb0UV/aV2TFIY5rP8HdsiPTv/CuAgCRjM6s9cYFwQ4CNH+hf9Y4erHW1GjZuZ7WoI7w==",
787
+ "version": "1.0.0-rc.13",
788
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.0-rc.13.tgz",
789
+ "integrity": "sha512-8Wtnbw4k7pMYN9B/mOEAsQ8HOiq7AZ31Ig4M9BKn2So4xRaFEhtCSa4ZJaOutOWq50zpgR4N5+L/opnlaCx8wQ==",
785
790
  "cpu": [
786
791
  "ppc64"
787
792
  ],
@@ -799,9 +804,9 @@
799
804
  }
800
805
  },
801
806
  "node_modules/@rolldown/binding-linux-s390x-gnu": {
802
- "version": "1.0.0-rc.10",
803
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.0-rc.10.tgz",
804
- "integrity": "sha512-gSlmVS1FZJSRicA6IyjoRoKAFK7IIHBs7xJuHRSmjImqk3mPPWbR7RhbnfH2G6bcmMEllCt2vQ/7u9e6bBnByg==",
807
+ "version": "1.0.0-rc.13",
808
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.0-rc.13.tgz",
809
+ "integrity": "sha512-D/0Nlo8mQuxSMohNJUF2lDXWRsFDsHldfRRgD9bRgktj+EndGPj4DOV37LqDKPYS+osdyhZEH7fTakTAEcW7qg==",
805
810
  "cpu": [
806
811
  "s390x"
807
812
  ],
@@ -819,9 +824,9 @@
819
824
  }
820
825
  },
821
826
  "node_modules/@rolldown/binding-linux-x64-gnu": {
822
- "version": "1.0.0-rc.10",
823
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.10.tgz",
824
- "integrity": "sha512-eOCKUpluKgfObT2pHjztnaWEIbUabWzk3qPZ5PuacuPmr4+JtQG4k2vGTY0H15edaTnicgU428XW/IH6AimcQw==",
827
+ "version": "1.0.0-rc.13",
828
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.13.tgz",
829
+ "integrity": "sha512-eRrPvat2YaVQcwwKi/JzOP6MKf1WRnOCr+VaI3cTWz3ZoLcP/654z90lVCJ4dAuMEpPdke0n+qyAqXDZdIC4rA==",
825
830
  "cpu": [
826
831
  "x64"
827
832
  ],
@@ -839,9 +844,9 @@
839
844
  }
840
845
  },
841
846
  "node_modules/@rolldown/binding-linux-x64-musl": {
842
- "version": "1.0.0-rc.10",
843
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.10.tgz",
844
- "integrity": "sha512-Xdf2jQbfQowJnLcgYfD/m0Uu0Qj5OdxKallD78/IPPfzaiaI4KRAwZzHcKQ4ig1gtg1SuzC7jovNiM2TzQsBXA==",
847
+ "version": "1.0.0-rc.13",
848
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.13.tgz",
849
+ "integrity": "sha512-PsdONiFRp8hR8KgVjTWjZ9s7uA3uueWL0t74/cKHfM4dR5zXYv4AjB8BvA+QDToqxAFg4ZkcVEqeu5F7inoz5w==",
845
850
  "cpu": [
846
851
  "x64"
847
852
  ],
@@ -859,9 +864,9 @@
859
864
  }
860
865
  },
861
866
  "node_modules/@rolldown/binding-openharmony-arm64": {
862
- "version": "1.0.0-rc.10",
863
- "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.10.tgz",
864
- "integrity": "sha512-o1hYe8hLi1EY6jgPFyxQgQ1wcycX+qz8eEbVmot2hFkgUzPxy9+kF0u0NIQBeDq+Mko47AkaFFaChcvZa9UX9Q==",
867
+ "version": "1.0.0-rc.13",
868
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.13.tgz",
869
+ "integrity": "sha512-hCNXgC5dI3TVOLrPT++PKFNZ+1EtS0mLQwfXXXSUD/+rGlB65gZDwN/IDuxLpQP4x8RYYHqGomlUXzpO8aVI2w==",
865
870
  "cpu": [
866
871
  "arm64"
867
872
  ],
@@ -876,9 +881,9 @@
876
881
  }
877
882
  },
878
883
  "node_modules/@rolldown/binding-wasm32-wasi": {
879
- "version": "1.0.0-rc.10",
880
- "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.10.tgz",
881
- "integrity": "sha512-Ugv9o7qYJudqQO5Y5y2N2SOo6S4WiqiNOpuQyoPInnhVzCY+wi/GHltcLHypG9DEUYMB0iTB/huJrpadiAcNcA==",
884
+ "version": "1.0.0-rc.13",
885
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.13.tgz",
886
+ "integrity": "sha512-viLS5C5et8NFtLWw9Sw3M/w4vvnVkbWkO7wSNh3C+7G1+uCkGpr6PcjNDSFcNtmXY/4trjPBqUfcOL+P3sWy/g==",
882
887
  "cpu": [
883
888
  "wasm32"
884
889
  ],
@@ -886,16 +891,18 @@
886
891
  "license": "MIT",
887
892
  "optional": true,
888
893
  "dependencies": {
889
- "@napi-rs/wasm-runtime": "^1.1.1"
894
+ "@emnapi/core": "1.9.1",
895
+ "@emnapi/runtime": "1.9.1",
896
+ "@napi-rs/wasm-runtime": "^1.1.2"
890
897
  },
891
898
  "engines": {
892
899
  "node": ">=14.0.0"
893
900
  }
894
901
  },
895
902
  "node_modules/@rolldown/binding-win32-arm64-msvc": {
896
- "version": "1.0.0-rc.10",
897
- "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.10.tgz",
898
- "integrity": "sha512-7UODQb4fQUNT/vmgDZBl3XOBAIOutP5R3O/rkxg0aLfEGQ4opbCgU5vOw/scPe4xOqBwL9fw7/RP1vAMZ6QlAQ==",
903
+ "version": "1.0.0-rc.13",
904
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.13.tgz",
905
+ "integrity": "sha512-Fqa3Tlt1xL4wzmAYxGNFV36Hb+VfPc9PYU+E25DAnswXv3ODDu/yyWjQDbXMo5AGWkQVjLgQExuVu8I/UaZhPQ==",
899
906
  "cpu": [
900
907
  "arm64"
901
908
  ],
@@ -910,9 +917,9 @@
910
917
  }
911
918
  },
912
919
  "node_modules/@rolldown/binding-win32-x64-msvc": {
913
- "version": "1.0.0-rc.10",
914
- "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.10.tgz",
915
- "integrity": "sha512-PYxKHMVHOb5NJuDL53vBUl1VwUjymDcYI6rzpIni0C9+9mTiJedvUxSk7/RPp7OOAm3v+EjgMu9bIy3N6b408w==",
920
+ "version": "1.0.0-rc.13",
921
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.13.tgz",
922
+ "integrity": "sha512-/pLI5kPkGEi44TDlnbio3St/5gUFeN51YWNAk/Gnv6mEQBOahRBh52qVFVBpmrnU01n2yysvBML9Ynu7K4kGAQ==",
916
923
  "cpu": [
917
924
  "x64"
918
925
  ],
@@ -927,9 +934,9 @@
927
934
  }
928
935
  },
929
936
  "node_modules/@rolldown/pluginutils": {
930
- "version": "1.0.0-rc.10",
931
- "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.10.tgz",
932
- "integrity": "sha512-UkVDEFk1w3mveXeKgaTuYfKWtPbvgck1dT8TUG3bnccrH0XtLTuAyfCoks4Q/M5ZGToSVJTIQYCzy2g/atAOeg==",
937
+ "version": "1.0.0-rc.13",
938
+ "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.13.tgz",
939
+ "integrity": "sha512-3ngTAv6F/Py35BsYbeeLeecvhMKdsKm4AoOETVhAA+Qc8nrA2I0kF7oa93mE9qnIurngOSpMnQ0x2nQY2FPviA==",
933
940
  "dev": true,
934
941
  "license": "MIT"
935
942
  },
@@ -983,7 +990,6 @@
983
990
  "version": "0.17.4",
984
991
  "resolved": "https://registry.npmjs.org/@types/stats.js/-/stats.js-0.17.4.tgz",
985
992
  "integrity": "sha512-jIBvWWShCvlBqBNIZt0KAshWpvSjhkwkEu4ZUcASoAvhmrgAUI2t1dXrjSL4xXVLB4FznPrIsX3nKXFl/Dt4vA==",
986
- "dev": true,
987
993
  "license": "MIT"
988
994
  },
989
995
  "node_modules/@types/three": {
@@ -1307,9 +1313,9 @@
1307
1313
  }
1308
1314
  },
1309
1315
  "node_modules/brace-expansion": {
1310
- "version": "5.0.4",
1311
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz",
1312
- "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==",
1316
+ "version": "5.0.5",
1317
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz",
1318
+ "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==",
1313
1319
  "dev": true,
1314
1320
  "license": "MIT",
1315
1321
  "dependencies": {
@@ -2298,9 +2304,9 @@
2298
2304
  "license": "ISC"
2299
2305
  },
2300
2306
  "node_modules/picomatch": {
2301
- "version": "4.0.3",
2302
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
2303
- "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
2307
+ "version": "4.0.4",
2308
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
2309
+ "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
2304
2310
  "dev": true,
2305
2311
  "license": "MIT",
2306
2312
  "engines": {
@@ -2414,14 +2420,14 @@
2414
2420
  }
2415
2421
  },
2416
2422
  "node_modules/rolldown": {
2417
- "version": "1.0.0-rc.10",
2418
- "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-rc.10.tgz",
2419
- "integrity": "sha512-q7j6vvarRFmKpgJUT8HCAUljkgzEp4LAhPlJUvQhA5LA1SUL36s5QCysMutErzL3EbNOZOkoziSx9iZC4FddKA==",
2423
+ "version": "1.0.0-rc.13",
2424
+ "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-rc.13.tgz",
2425
+ "integrity": "sha512-bvVj8YJmf0rq4pSFmH7laLa6pYrhghv3PRzrCdRAr23g66zOKVJ4wkvFtgohtPLWmthgg8/rkaqRHrpUEh0Zbw==",
2420
2426
  "dev": true,
2421
2427
  "license": "MIT",
2422
2428
  "dependencies": {
2423
- "@oxc-project/types": "=0.120.0",
2424
- "@rolldown/pluginutils": "1.0.0-rc.10"
2429
+ "@oxc-project/types": "=0.123.0",
2430
+ "@rolldown/pluginutils": "1.0.0-rc.13"
2425
2431
  },
2426
2432
  "bin": {
2427
2433
  "rolldown": "bin/cli.mjs"
@@ -2430,21 +2436,21 @@
2430
2436
  "node": "^20.19.0 || >=22.12.0"
2431
2437
  },
2432
2438
  "optionalDependencies": {
2433
- "@rolldown/binding-android-arm64": "1.0.0-rc.10",
2434
- "@rolldown/binding-darwin-arm64": "1.0.0-rc.10",
2435
- "@rolldown/binding-darwin-x64": "1.0.0-rc.10",
2436
- "@rolldown/binding-freebsd-x64": "1.0.0-rc.10",
2437
- "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.10",
2438
- "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.10",
2439
- "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.10",
2440
- "@rolldown/binding-linux-ppc64-gnu": "1.0.0-rc.10",
2441
- "@rolldown/binding-linux-s390x-gnu": "1.0.0-rc.10",
2442
- "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.10",
2443
- "@rolldown/binding-linux-x64-musl": "1.0.0-rc.10",
2444
- "@rolldown/binding-openharmony-arm64": "1.0.0-rc.10",
2445
- "@rolldown/binding-wasm32-wasi": "1.0.0-rc.10",
2446
- "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.10",
2447
- "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.10"
2439
+ "@rolldown/binding-android-arm64": "1.0.0-rc.13",
2440
+ "@rolldown/binding-darwin-arm64": "1.0.0-rc.13",
2441
+ "@rolldown/binding-darwin-x64": "1.0.0-rc.13",
2442
+ "@rolldown/binding-freebsd-x64": "1.0.0-rc.13",
2443
+ "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.13",
2444
+ "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.13",
2445
+ "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.13",
2446
+ "@rolldown/binding-linux-ppc64-gnu": "1.0.0-rc.13",
2447
+ "@rolldown/binding-linux-s390x-gnu": "1.0.0-rc.13",
2448
+ "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.13",
2449
+ "@rolldown/binding-linux-x64-musl": "1.0.0-rc.13",
2450
+ "@rolldown/binding-openharmony-arm64": "1.0.0-rc.13",
2451
+ "@rolldown/binding-wasm32-wasi": "1.0.0-rc.13",
2452
+ "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.13",
2453
+ "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.13"
2448
2454
  }
2449
2455
  },
2450
2456
  "node_modules/rxjs": {
@@ -2897,6 +2903,12 @@
2897
2903
  "node": ">=0.10.0"
2898
2904
  }
2899
2905
  },
2906
+ "node_modules/stats.js": {
2907
+ "version": "0.17.0",
2908
+ "resolved": "https://registry.npmjs.org/stats.js/-/stats.js-0.17.0.tgz",
2909
+ "integrity": "sha512-hNKz8phvYLPEcRkeG1rsGmV5ChMjKDAWU7/OJJdDErPBNChQXxCo3WZurGpnWc6gZhAzEPFad1aVgyOANH1sMw==",
2910
+ "license": "MIT"
2911
+ },
2900
2912
  "node_modules/sync-child-process": {
2901
2913
  "version": "1.0.2",
2902
2914
  "resolved": "https://registry.npmjs.org/sync-child-process/-/sync-child-process-1.0.2.tgz",
@@ -2942,6 +2954,25 @@
2942
2954
  "integrity": "sha512-di3BsL2FEQ1PA7Hcvn4fyJOlxRRgFYBpMTcyOgkwJIaDOdJMebEFPA+t98EvjuljDx4hNulAGwF6KIjtwI5jgQ==",
2943
2955
  "license": "MIT"
2944
2956
  },
2957
+ "node_modules/three-custom-shader-material": {
2958
+ "version": "6.4.0",
2959
+ "resolved": "https://registry.npmjs.org/three-custom-shader-material/-/three-custom-shader-material-6.4.0.tgz",
2960
+ "integrity": "sha512-dIbkwX1P4DcHMOZrywW+/TDp5qJhlyU6NP/2kmHw91UqC+TrK4JSBtAV3qGc6UnkqSOmR1i0O+Yz5EnTp2aQ1g==",
2961
+ "license": "MIT",
2962
+ "peerDependencies": {
2963
+ "@react-three/fiber": ">=8.0",
2964
+ "react": ">=18.0",
2965
+ "three": ">=0.159"
2966
+ },
2967
+ "peerDependenciesMeta": {
2968
+ "@react-three/fiber": {
2969
+ "optional": true
2970
+ },
2971
+ "react": {
2972
+ "optional": true
2973
+ }
2974
+ }
2975
+ },
2945
2976
  "node_modules/three-perf": {
2946
2977
  "version": "1.0.11",
2947
2978
  "resolved": "https://registry.npmjs.org/three-perf/-/three-perf-1.0.11.tgz",
@@ -3104,16 +3135,16 @@
3104
3135
  "license": "MIT"
3105
3136
  },
3106
3137
  "node_modules/vite": {
3107
- "version": "8.0.1",
3108
- "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.1.tgz",
3109
- "integrity": "sha512-wt+Z2qIhfFt85uiyRt5LPU4oVEJBXj8hZNWKeqFG4gRG/0RaRGJ7njQCwzFVjO+v4+Ipmf5CY7VdmZRAYYBPHw==",
3138
+ "version": "8.0.6",
3139
+ "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.6.tgz",
3140
+ "integrity": "sha512-jeOXoY6N8rOfit/mZADMd0misLqjRdWBB3/S23ZQNuPcbVsfMBJutWD8b4ftdczMOsNyMBnKro0Z1Kt0HIqq5Q==",
3110
3141
  "dev": true,
3111
3142
  "license": "MIT",
3112
3143
  "dependencies": {
3113
3144
  "lightningcss": "^1.32.0",
3114
- "picomatch": "^4.0.3",
3145
+ "picomatch": "^4.0.4",
3115
3146
  "postcss": "^8.5.8",
3116
- "rolldown": "1.0.0-rc.10",
3147
+ "rolldown": "1.0.0-rc.13",
3117
3148
  "tinyglobby": "^0.2.15"
3118
3149
  },
3119
3150
  "bin": {
@@ -3131,7 +3162,7 @@
3131
3162
  "peerDependencies": {
3132
3163
  "@types/node": "^20.19.0 || >=22.12.0",
3133
3164
  "@vitejs/devtools": "^0.1.0",
3134
- "esbuild": "^0.27.0",
3165
+ "esbuild": "^0.27.0 || ^0.28.0",
3135
3166
  "jiti": ">=1.21.0",
3136
3167
  "less": "^4.0.0",
3137
3168
  "sass": "^1.70.0",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "template-vanilla",
3
3
  "private": true,
4
- "version": "1.5.6",
4
+ "version": "1.5.9",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "dev": "vite",
@@ -31,9 +31,12 @@
31
31
  "@benjos/cookware": "^1.0.4",
32
32
  "@benjos/spices": "^1.0.1",
33
33
  "@dimforge/rapier3d": "^0.19.3",
34
+ "@types/stats.js": "^0.17.4",
34
35
  "gsap": "^3.14.2",
35
36
  "howler": "^2.2.4",
36
37
  "lil-gui": "^0.21.0",
37
- "three": "^0.183.2"
38
+ "stats.js": "^0.17.0",
39
+ "three": "^0.183.2",
40
+ "three-custom-shader-material": "^6.4.0"
38
41
  }
39
42
  }
@@ -5,7 +5,7 @@ import { OrbitControls } from 'three/examples/jsm/Addons.js';
5
5
  import { CameraId } from '../../constants/experiences/CameraId';
6
6
  import MainThreeApp from '../../engines/threes/app/MainThreeApp';
7
7
  import ThreeRaycasterManager from '../../managers/threes/ThreeRaycasterManager';
8
- import { ThreeCameraOptions, ThreeCameraType } from '../../types/cameraTypes';
8
+ import { ThreeCameraType, type ThreeCameraOptions } from '../../types/cameraTypes';
9
9
  import ThreeCameraControllerBase from './bases/ThreeCameraControllerBase';
10
10
 
11
11
  export default class DebugThreeCameraController extends ThreeCameraControllerBase<OrbitControls> {
@@ -1,7 +1,7 @@
1
1
  import { Vector3 } from 'three';
2
2
  import { CameraId } from '../../constants/experiences/CameraId';
3
3
  import LoaderThreeApp from '../../engines/threes/app/LoaderThreeApp';
4
- import { ThreeCameraOptions, ThreeCameraType } from '../../types/cameraTypes';
4
+ import { ThreeCameraType, type ThreeCameraOptions } from '../../types/cameraTypes';
5
5
  import ThreeCameraControllerBase from './bases/ThreeCameraControllerBase';
6
6
 
7
7
  export default class LoaderThreeCameraController extends ThreeCameraControllerBase {
@@ -1,6 +1,6 @@
1
1
  import { Vector3 } from 'three';
2
2
  import { CameraId } from '../../constants/experiences/CameraId';
3
- import { ThreeCameraOptions, ThreeCameraType } from '../../types/cameraTypes';
3
+ import { ThreeCameraType, type ThreeCameraOptions } from '../../types/cameraTypes';
4
4
  import ThreeCameraControllerBase from './bases/ThreeCameraControllerBase';
5
5
 
6
6
  export default class MainThreeCameraController extends ThreeCameraControllerBase {
@@ -1,8 +1,8 @@
1
1
  import { DomResizeManager } from '@benjos/cookware';
2
- import { Object3D, OrthographicCamera, PerspectiveCamera, Scene } from 'three';
2
+ import { Object3D, OrthographicCamera, PerspectiveCamera, type Scene } from 'three';
3
3
  import type { CameraId } from '../../../constants/experiences/CameraId';
4
4
  import MainThreeApp from '../../../engines/threes/app/MainThreeApp';
5
- import { ThreeCameraOptions, ThreeCameraType, ThreeControls } from '../../../types/cameraTypes';
5
+ import { ThreeCameraType, type ThreeCameraOptions, type ThreeControls } from '../../../types/cameraTypes';
6
6
 
7
7
  export default abstract class ThreeCameraControllerBase<T extends ThreeControls = ThreeControls> extends Object3D {
8
8
  private static readonly _DEFAULT_CAMERA_OPTIONS: ThreeCameraOptions = {
@@ -0,0 +1,20 @@
1
+ import type { Camera, Scene, WebGLRenderer } from "three";
2
+ import { GlitchPass } from "three/examples/jsm/Addons.js";
3
+ import ThreeEffectComposerBase from "./bases/ThreeEffectComposerBase";
4
+ import TemplateThreePass from "./passes/TemplateThreePass";
5
+
6
+ export default class MainThreeEffectComposer extends ThreeEffectComposerBase {
7
+ constructor(renderer: WebGLRenderer, scene: Scene, camera: Camera) {
8
+ super(renderer, scene, camera);
9
+ }
10
+
11
+ protected override _addPasses(): void {
12
+ super._addPasses();
13
+ this._addPass(new TemplateThreePass());
14
+ this._addPass(new GlitchPass());
15
+ }
16
+
17
+ public override update(dt: number): void {
18
+ super.update(dt);
19
+ }
20
+ }
@@ -0,0 +1,54 @@
1
+ import { DomResizeManager } from "@benjos/cookware";
2
+ import { HalfFloatType, WebGLRenderTarget, type Camera, type Scene, type TextureDataType, type WebGLRenderer } from "three";
3
+ import { EffectComposer, OutputPass, RenderPass, type Pass } from "three/examples/jsm/Addons.js";
4
+ import ThreePassBase from "./passes/ThreePassBase";
5
+
6
+ export default abstract class ThreeEffectComposerBase extends EffectComposer {
7
+ protected static readonly _DEFAULT_RENDER_TARGET_SAMPLES = 4;
8
+ protected static readonly _DEFAULT_RENDER_TARGET_TYPE = HalfFloatType;
9
+
10
+ protected readonly _passes: Pass[];
11
+ private declare _renderPass: RenderPass;
12
+
13
+ constructor(renderer: WebGLRenderer, scene: Scene, camera: Camera, options: { samples?: number, type?: TextureDataType } = {}) {
14
+ const samples = options.samples ?? ThreeEffectComposerBase._DEFAULT_RENDER_TARGET_SAMPLES;
15
+ const type = options.type ?? ThreeEffectComposerBase._DEFAULT_RENDER_TARGET_TYPE;
16
+ super(renderer, new WebGLRenderTarget(DomResizeManager.width, DomResizeManager.height, { samples, type }));
17
+
18
+ this._createRenderPass(scene, camera);
19
+ this._passes = [];
20
+ this._addPasses();
21
+ this._addPass(new OutputPass());
22
+ this.resize();
23
+ }
24
+
25
+ public setCamera(camera: Camera): void {
26
+ this._renderPass.camera = camera;
27
+ }
28
+
29
+ public resize(): void {
30
+ this.setSize(DomResizeManager.width, DomResizeManager.height);
31
+ this.setPixelRatio(DomResizeManager.pixelRatio);
32
+ }
33
+
34
+ private _createRenderPass(scene: Scene, camera: Camera): void {
35
+ this._renderPass = new RenderPass(scene, camera);
36
+ this.addPass(this._renderPass);
37
+ }
38
+
39
+ protected _addPasses(): void {
40
+ //
41
+ }
42
+
43
+ protected _addPass(pass: Pass): void {
44
+ this.addPass(pass);
45
+ this._passes.push(pass);
46
+ }
47
+
48
+ public update(dt: number): void {
49
+ for (const pass of this._passes) {
50
+ if (pass instanceof ThreePassBase) pass.update(dt);
51
+ }
52
+ this.render(dt);
53
+ }
54
+ }
@@ -0,0 +1,11 @@
1
+ import { ShaderPass } from "three/examples/jsm/Addons.js";
2
+
3
+ export default abstract class ThreePassBase extends ShaderPass {
4
+ constructor(shader: any) {
5
+ super(shader);
6
+ }
7
+
8
+ public update(_dt: number): void {
9
+
10
+ }
11
+ }
@@ -0,0 +1,22 @@
1
+ import TemplatePassFragmentShader from '../../../shaders/threes/composers/templates/TemplatePassFragmentShader.glsl';
2
+ import TemplatePassVertexShader from '../../../shaders/threes/composers/templates/TemplatePassVertexShader.glsl';
3
+ import ThreePassBase from "../bases/passes/ThreePassBase";
4
+
5
+ export default class TemplateThreePass extends ThreePassBase {
6
+ constructor() {
7
+ super({
8
+ uniforms: {
9
+ tDiffuse: { value: null },
10
+ uTime: { value: null },
11
+ },
12
+ vertexShader: TemplatePassVertexShader,
13
+ fragmentShader: TemplatePassFragmentShader,
14
+ });
15
+
16
+ this.uniforms.uTime.value = 0;
17
+ }
18
+
19
+ public update(dt: number): void {
20
+ this.uniforms.uTime.value += dt;
21
+ }
22
+ }