From ac136bae7e4601f1ab3f7c455800b7162846a0f8 Mon Sep 17 00:00:00 2001 From: Alfarish Fizikri Date: Fri, 26 Dec 2025 21:02:59 +0700 Subject: [PATCH] Create background --- package-lock.json | 73 ++ package.json | 1 + src/constants/Categories.ts | 3 +- src/constants/Components.ts | 1 + .../code/Backgrounds/gridScanCode.ts | 28 + src/content/Backgrounds/GridScan/GridScan.vue | 923 ++++++++++++++++++ src/demo/Backgrounds/GridScanDemo.vue | 176 ++++ 7 files changed, 1204 insertions(+), 1 deletion(-) create mode 100644 src/constants/code/Backgrounds/gridScanCode.ts create mode 100644 src/content/Backgrounds/GridScan/GridScan.vue create mode 100644 src/demo/Backgrounds/GridScanDemo.vue diff --git a/package-lock.json b/package-lock.json index 199e728..e8f7b74 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,7 @@ "@vueuse/core": "^14.1.0", "@vueuse/motion": "^3.0.3", "@wdns/vue-code-block": "^2.3.5", + "face-api.js": "^0.22.2", "gl-matrix": "^3.4.3", "gsap": "^3.13.0", "lenis": "^1.3.8", @@ -4717,6 +4718,35 @@ "vite": "^5.2.0 || ^6 || ^7" } }, + "node_modules/@tensorflow/tfjs-core": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-core/-/tfjs-core-1.7.0.tgz", + "integrity": "sha512-uwQdiklNjqBnHPeseOdG0sGxrI3+d6lybaKu2+ou3ajVeKdPEwpWbgqA6iHjq1iylnOGkgkbbnQ6r2lwkiIIHw==", + "license": "Apache-2.0", + "dependencies": { + "@types/offscreencanvas": "~2019.3.0", + "@types/seedrandom": "2.4.27", + "@types/webgl-ext": "0.0.30", + "@types/webgl2": "0.0.4", + "node-fetch": "~2.1.2", + "seedrandom": "2.4.3" + }, + "engines": { + "yarn": ">= 1.3.2" + } + }, + "node_modules/@tensorflow/tfjs-core/node_modules/@types/offscreencanvas": { + "version": "2019.3.0", + "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.3.0.tgz", + "integrity": "sha512-esIJx9bQg+QYF0ra8GnvfianIY8qWB0GBx54PK5Eps6m+xTj86KLavHv6qDhzKcu5UUOgNfJ2pWaIIV7TRUd9Q==", + "license": "MIT" + }, + "node_modules/@tensorflow/tfjs-core/node_modules/seedrandom": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-2.4.3.tgz", + "integrity": "sha512-2CkZ9Wn2dS4mMUWQaXLsOAfGD+irMlLEeSP3cMxpGbgyOOzJGFa+MWCOMTOCMyZinHRPxyOj/S/C57li/1to6Q==", + "license": "MIT" + }, "node_modules/@tresjs/cientos": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/@tresjs/cientos/-/cientos-4.3.1.tgz", @@ -4899,6 +4929,12 @@ "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", "license": "MIT" }, + "node_modules/@types/seedrandom": { + "version": "2.4.27", + "resolved": "https://registry.npmjs.org/@types/seedrandom/-/seedrandom-2.4.27.tgz", + "integrity": "sha512-YvMLqFak/7rt//lPBtEHv3M4sRNA+HGxrhFZ+DQs9K2IkYJbNwVIb8avtJfhDiuaUBX/AW0jnjv48FV8h3u9bQ==", + "license": "MIT" + }, "node_modules/@types/stats.js": { "version": "0.17.4", "resolved": "https://registry.npmjs.org/@types/stats.js/-/stats.js-0.17.4.tgz", @@ -4926,6 +4962,18 @@ "integrity": "sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==", "license": "MIT" }, + "node_modules/@types/webgl-ext": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/webgl-ext/-/webgl-ext-0.0.30.tgz", + "integrity": "sha512-LKVgNmBxN0BbljJrVUwkxwRYqzsAEPcZOe6S2T6ZaBDIrFp0qu4FNlpc5sM1tGbXUYFgdVQIoeLk1Y1UoblyEg==", + "license": "MIT" + }, + "node_modules/@types/webgl2": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@types/webgl2/-/webgl2-0.0.4.tgz", + "integrity": "sha512-PACt1xdErJbMUOUweSrbVM7gSIYm1vTncW2hF6Os/EeWi6TXYAYMPp+8v6rzHmypE5gHrxaxZNXgMkJVIdZpHw==", + "license": "MIT" + }, "node_modules/@types/webxr": { "version": "0.5.23", "resolved": "https://registry.npmjs.org/@types/webxr/-/webxr-0.5.23.tgz", @@ -7821,6 +7869,22 @@ "integrity": "sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==", "license": "MIT" }, + "node_modules/face-api.js": { + "version": "0.22.2", + "resolved": "https://registry.npmjs.org/face-api.js/-/face-api.js-0.22.2.tgz", + "integrity": "sha512-9Bbv/yaBRTKCXjiDqzryeKhYxmgSjJ7ukvOvEBy6krA0Ah/vNBlsf7iBNfJljWiPA8Tys1/MnB3lyP2Hfmsuyw==", + "license": "MIT", + "dependencies": { + "@tensorflow/tfjs-core": "1.7.0", + "tslib": "^1.11.1" + } + }, + "node_modules/face-api.js/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -10009,6 +10073,15 @@ "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", "license": "MIT" }, + "node_modules/node-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz", + "integrity": "sha512-IHLHYskTc2arMYsHZH82PVX8CSKT5lzb7AXeyO06QnjGDKtkv+pv3mEki6S7reB/x1QPo+YPxQRNEVgR5V/w3Q==", + "license": "MIT", + "engines": { + "node": "4.x || >=6.0.0" + } + }, "node_modules/node-fetch-native": { "version": "1.6.7", "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.7.tgz", diff --git a/package.json b/package.json index c88e2ea..7aa194e 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ "@vueuse/core": "^14.1.0", "@vueuse/motion": "^3.0.3", "@wdns/vue-code-block": "^2.3.5", + "face-api.js": "^0.22.2", "gl-matrix": "^3.4.3", "gsap": "^3.13.0", "lenis": "^1.3.8", diff --git a/src/constants/Categories.ts b/src/constants/Categories.ts index 7cd715b..260aa9b 100644 --- a/src/constants/Categories.ts +++ b/src/constants/Categories.ts @@ -1,5 +1,5 @@ // Highlighted sidebar items -export const NEW = ['Color Bends', 'Ghost Cursor', 'Laser Flow', 'Liquid Ether', 'Pixel Blast', 'Floating Lines', 'Light Pillar', 'Pixel Snow']; +export const NEW = ['Color Bends', 'Ghost Cursor', 'Grid Scan', 'Laser Flow', 'Liquid Ether', 'Pixel Blast', 'Floating Lines', 'Light Pillar', 'Pixel Snow']; export const UPDATED = []; // Used for main sidebar navigation @@ -119,6 +119,7 @@ export const CATEGORIES = [ 'Gradient Blinds', 'Grid Distortion', 'Grid Motion', + 'Grid Scan', 'Hyperspeed', 'Iridescence', 'Letter Glitch', diff --git a/src/constants/Components.ts b/src/constants/Components.ts index 57bf847..ef53990 100644 --- a/src/constants/Components.ts +++ b/src/constants/Components.ts @@ -123,6 +123,7 @@ const backgrounds = { 'floating-lines': () => import('../demo/Backgrounds/FloatingLinesDemo.vue'), 'light-pillar': () => import('../demo/Backgrounds/LightPillarDemo.vue'), 'pixel-snow': () => import('../demo/Backgrounds/PixelSnowDemo.vue'), + 'grid-scan': () => import('../demo/Backgrounds/GridScanDemo.vue'), }; export const componentMap = { diff --git a/src/constants/code/Backgrounds/gridScanCode.ts b/src/constants/code/Backgrounds/gridScanCode.ts new file mode 100644 index 0000000..4a6520c --- /dev/null +++ b/src/constants/code/Backgrounds/gridScanCode.ts @@ -0,0 +1,28 @@ +import code from '@content/Backgrounds/GridScan/GridScan.vue?raw'; +import { createCodeObject } from '@/types/code'; + +export const gridScan = createCodeObject(code, 'Backgrounds/GridScan', { + installation: `npm install three postprocessing face-api.js`, + usage: ` + +` +}); diff --git a/src/content/Backgrounds/GridScan/GridScan.vue b/src/content/Backgrounds/GridScan/GridScan.vue new file mode 100644 index 0000000..0f17373 --- /dev/null +++ b/src/content/Backgrounds/GridScan/GridScan.vue @@ -0,0 +1,923 @@ + + + diff --git a/src/demo/Backgrounds/GridScanDemo.vue b/src/demo/Backgrounds/GridScanDemo.vue new file mode 100644 index 0000000..40589b4 --- /dev/null +++ b/src/demo/Backgrounds/GridScanDemo.vue @@ -0,0 +1,176 @@ + + +