photon-engine-compute 0.1.0

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.
@@ -0,0 +1,11 @@
1
+ import { IComputeBackend, Vec2 } from "ion-engine";
2
+ export declare class IonCompute implements IComputeBackend {
3
+ collideAABB(ax: number, ay: number, aw: number, ah: number, bx: number, by: number, bw: number, bh: number): Promise<boolean>;
4
+ batchTransform(matrices: Float32Array, count: number): Promise<Float32Array>;
5
+ noise2D(x: number, y: number, seed: number): Promise<number>;
6
+ noiseGrid(width: number, height: number, scale: number, seed: number): Promise<Float32Array>;
7
+ pathfind(grid: Uint8Array, width: number, height: number, start: Vec2, end: Vec2): Promise<Vec2[] | null>;
8
+ spatialHash(positions: Float32Array, count: number, cellSize: number): Promise<Map<number, number[]>>;
9
+ batchCollide(positions: Float32Array, sizes: Float32Array, count: number): Promise<Array<[number, number]>>;
10
+ }
11
+ //# sourceMappingURL=IonCompute.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IonCompute.d.ts","sourceRoot":"","sources":["../src/IonCompute.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEnD,qBAAa,UAAW,YAAW,eAAe;IAC1C,WAAW,CACf,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAC9C,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAC7C,OAAO,CAAC,OAAO,CAAC;IAIb,cAAc,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAI5E,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK5D,SAAS,CACb,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GACzD,OAAO,CAAC,YAAY,CAAC;IAWlB,QAAQ,CACZ,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,IAAI,EACX,GAAG,EAAE,IAAI,GACR,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;IA8EnB,WAAW,CACf,SAAS,EAAE,YAAY,EACvB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAa3B,YAAY,CAChB,SAAS,EAAE,YAAY,EACvB,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAsBpC"}
@@ -0,0 +1,122 @@
1
+ import { Vec2 } from "ion-engine";
2
+ export class IonCompute {
3
+ async collideAABB(ax, ay, aw, ah, bx, by, bw, bh) {
4
+ return ax < bx + bw && ax + aw > bx && ay < by + bh && ay + ah > by;
5
+ }
6
+ async batchTransform(matrices, count) {
7
+ return matrices.slice(0, count * 9);
8
+ }
9
+ async noise2D(x, y, seed) {
10
+ const n = Math.sin(x * 127.1 + y * 311.7 + seed * 74.7) * 43758.5453123;
11
+ return n - Math.floor(n);
12
+ }
13
+ async noiseGrid(width, height, scale, seed) {
14
+ const result = new Float32Array(width * height);
15
+ for (let y = 0; y < height; y++) {
16
+ for (let x = 0; x < width; x++) {
17
+ const val = await this.noise2D(x / scale, y / scale, seed);
18
+ result[y * width + x] = val;
19
+ }
20
+ }
21
+ return result;
22
+ }
23
+ async pathfind(grid, width, height, start, end) {
24
+ const sx = Math.floor(start.x);
25
+ const sy = Math.floor(start.y);
26
+ const ex = Math.floor(end.x);
27
+ const ey = Math.floor(end.y);
28
+ if (sx < 0 || sy < 0 || ex < 0 || ey < 0)
29
+ return null;
30
+ if (sx >= width || sy >= height || ex >= width || ey >= height)
31
+ return null;
32
+ const idx = (x, y) => y * width + x;
33
+ if (grid[idx(sx, sy)] === 1 || grid[idx(ex, ey)] === 1)
34
+ return null;
35
+ const total = width * height;
36
+ const visited = new Uint8Array(total);
37
+ const parent = new Int32Array(total).fill(-1);
38
+ const gScore = new Float32Array(total).fill(Infinity);
39
+ const heuristic = (x, y) => Math.abs(x - ex) + Math.abs(y - ey);
40
+ const open = [];
41
+ const startIdx = idx(sx, sy);
42
+ gScore[startIdx] = 0;
43
+ open.push(startIdx);
44
+ visited[startIdx] = 1;
45
+ const dirs = [[0, -1], [0, 1], [-1, 0], [1, 0]];
46
+ while (open.length > 0) {
47
+ let bestIdx = 0;
48
+ let bestF = Infinity;
49
+ for (let i = 0; i < open.length; i++) {
50
+ const node = open[i];
51
+ const nx = node % width;
52
+ const ny = Math.floor(node / width);
53
+ const f = gScore[node] + heuristic(nx, ny);
54
+ if (f < bestF) {
55
+ bestF = f;
56
+ bestIdx = i;
57
+ }
58
+ }
59
+ const current = open[bestIdx];
60
+ open.splice(bestIdx, 1);
61
+ const cx = current % width;
62
+ const cy = Math.floor(current / width);
63
+ if (cx === ex && cy === ey) {
64
+ const path = [];
65
+ let node = current;
66
+ while (node !== -1) {
67
+ path.push(new Vec2(node % width, Math.floor(node / width)));
68
+ node = parent[node];
69
+ }
70
+ return path.reverse();
71
+ }
72
+ for (const [dx, dy] of dirs) {
73
+ const nx = cx + dx;
74
+ const ny = cy + dy;
75
+ if (nx < 0 || ny < 0 || nx >= width || ny >= height)
76
+ continue;
77
+ const nIdx = idx(nx, ny);
78
+ if (grid[nIdx] === 1 || visited[nIdx])
79
+ continue;
80
+ visited[nIdx] = 1;
81
+ const newG = gScore[current] + 1;
82
+ if (newG < gScore[nIdx]) {
83
+ gScore[nIdx] = newG;
84
+ parent[nIdx] = current;
85
+ open.push(nIdx);
86
+ }
87
+ }
88
+ }
89
+ return null;
90
+ }
91
+ async spatialHash(positions, count, cellSize) {
92
+ const grid = new Map();
93
+ for (let i = 0; i < count; i++) {
94
+ const x = positions[i * 2];
95
+ const y = positions[i * 2 + 1];
96
+ const key = (Math.floor(x / cellSize) * 73856093) ^ (Math.floor(y / cellSize) * 19349663);
97
+ const hash = key & 0x7fffffff;
98
+ if (!grid.has(hash))
99
+ grid.set(hash, []);
100
+ grid.get(hash).push(i);
101
+ }
102
+ return grid;
103
+ }
104
+ async batchCollide(positions, sizes, count) {
105
+ const pairs = [];
106
+ const cellSize = 64;
107
+ const grid = await this.spatialHash(positions, count, cellSize);
108
+ for (const [, indices] of grid) {
109
+ for (let i = 0; i < indices.length; i++) {
110
+ for (let j = i + 1; j < indices.length; j++) {
111
+ const a = indices[i];
112
+ const b = indices[j];
113
+ const hit = await this.collideAABB(positions[a * 2], positions[a * 2 + 1], sizes[a * 2], sizes[a * 2 + 1], positions[b * 2], positions[b * 2 + 1], sizes[b * 2], sizes[b * 2 + 1]);
114
+ if (hit)
115
+ pairs.push([a, b]);
116
+ }
117
+ }
118
+ }
119
+ return pairs;
120
+ }
121
+ }
122
+ //# sourceMappingURL=IonCompute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IonCompute.js","sourceRoot":"","sources":["../src/IonCompute.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { IComputeBackend, Vec2 } from "photon-engine";
2
+ export declare class PhotonCompute implements IComputeBackend {
3
+ collideAABB(ax: number, ay: number, aw: number, ah: number, bx: number, by: number, bw: number, bh: number): Promise<boolean>;
4
+ batchTransform(matrices: Float32Array, count: number): Promise<Float32Array>;
5
+ noise2D(x: number, y: number, seed: number): Promise<number>;
6
+ noiseGrid(width: number, height: number, scale: number, seed: number): Promise<Float32Array>;
7
+ pathfind(grid: Uint8Array, width: number, height: number, start: Vec2, end: Vec2): Promise<Vec2[] | null>;
8
+ spatialHash(positions: Float32Array, count: number, cellSize: number): Promise<Map<number, number[]>>;
9
+ batchCollide(positions: Float32Array, sizes: Float32Array, count: number): Promise<Array<[number, number]>>;
10
+ }
11
+ //# sourceMappingURL=PhotonCompute.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PhotonCompute.d.ts","sourceRoot":"","sources":["../src/PhotonCompute.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAEtD,qBAAa,aAAc,YAAW,eAAe;IAC7C,WAAW,CACf,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAC9C,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAC7C,OAAO,CAAC,OAAO,CAAC;IAIb,cAAc,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAI5E,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK5D,SAAS,CACb,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GACzD,OAAO,CAAC,YAAY,CAAC;IAWlB,QAAQ,CACZ,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,IAAI,EACX,GAAG,EAAE,IAAI,GACR,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;IA8EnB,WAAW,CACf,SAAS,EAAE,YAAY,EACvB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAa3B,YAAY,CAChB,SAAS,EAAE,YAAY,EACvB,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAsBpC"}
@@ -0,0 +1,122 @@
1
+ import { Vec2 } from "photon-engine";
2
+ export class PhotonCompute {
3
+ async collideAABB(ax, ay, aw, ah, bx, by, bw, bh) {
4
+ return ax < bx + bw && ax + aw > bx && ay < by + bh && ay + ah > by;
5
+ }
6
+ async batchTransform(matrices, count) {
7
+ return matrices.slice(0, count * 9);
8
+ }
9
+ async noise2D(x, y, seed) {
10
+ const n = Math.sin(x * 127.1 + y * 311.7 + seed * 74.7) * 43758.5453123;
11
+ return n - Math.floor(n);
12
+ }
13
+ async noiseGrid(width, height, scale, seed) {
14
+ const result = new Float32Array(width * height);
15
+ for (let y = 0; y < height; y++) {
16
+ for (let x = 0; x < width; x++) {
17
+ const val = await this.noise2D(x / scale, y / scale, seed);
18
+ result[y * width + x] = val;
19
+ }
20
+ }
21
+ return result;
22
+ }
23
+ async pathfind(grid, width, height, start, end) {
24
+ const sx = Math.floor(start.x);
25
+ const sy = Math.floor(start.y);
26
+ const ex = Math.floor(end.x);
27
+ const ey = Math.floor(end.y);
28
+ if (sx < 0 || sy < 0 || ex < 0 || ey < 0)
29
+ return null;
30
+ if (sx >= width || sy >= height || ex >= width || ey >= height)
31
+ return null;
32
+ const idx = (x, y) => y * width + x;
33
+ if (grid[idx(sx, sy)] === 1 || grid[idx(ex, ey)] === 1)
34
+ return null;
35
+ const total = width * height;
36
+ const visited = new Uint8Array(total);
37
+ const parent = new Int32Array(total).fill(-1);
38
+ const gScore = new Float32Array(total).fill(Infinity);
39
+ const heuristic = (x, y) => Math.abs(x - ex) + Math.abs(y - ey);
40
+ const open = [];
41
+ const startIdx = idx(sx, sy);
42
+ gScore[startIdx] = 0;
43
+ open.push(startIdx);
44
+ visited[startIdx] = 1;
45
+ const dirs = [[0, -1], [0, 1], [-1, 0], [1, 0]];
46
+ while (open.length > 0) {
47
+ let bestIdx = 0;
48
+ let bestF = Infinity;
49
+ for (let i = 0; i < open.length; i++) {
50
+ const node = open[i];
51
+ const nx = node % width;
52
+ const ny = Math.floor(node / width);
53
+ const f = gScore[node] + heuristic(nx, ny);
54
+ if (f < bestF) {
55
+ bestF = f;
56
+ bestIdx = i;
57
+ }
58
+ }
59
+ const current = open[bestIdx];
60
+ open.splice(bestIdx, 1);
61
+ const cx = current % width;
62
+ const cy = Math.floor(current / width);
63
+ if (cx === ex && cy === ey) {
64
+ const path = [];
65
+ let node = current;
66
+ while (node !== -1) {
67
+ path.push(new Vec2(node % width, Math.floor(node / width)));
68
+ node = parent[node];
69
+ }
70
+ return path.reverse();
71
+ }
72
+ for (const [dx, dy] of dirs) {
73
+ const nx = cx + dx;
74
+ const ny = cy + dy;
75
+ if (nx < 0 || ny < 0 || nx >= width || ny >= height)
76
+ continue;
77
+ const nIdx = idx(nx, ny);
78
+ if (grid[nIdx] === 1 || visited[nIdx])
79
+ continue;
80
+ visited[nIdx] = 1;
81
+ const newG = gScore[current] + 1;
82
+ if (newG < gScore[nIdx]) {
83
+ gScore[nIdx] = newG;
84
+ parent[nIdx] = current;
85
+ open.push(nIdx);
86
+ }
87
+ }
88
+ }
89
+ return null;
90
+ }
91
+ async spatialHash(positions, count, cellSize) {
92
+ const grid = new Map();
93
+ for (let i = 0; i < count; i++) {
94
+ const x = positions[i * 2];
95
+ const y = positions[i * 2 + 1];
96
+ const key = (Math.floor(x / cellSize) * 73856093) ^ (Math.floor(y / cellSize) * 19349663);
97
+ const hash = key & 0x7fffffff;
98
+ if (!grid.has(hash))
99
+ grid.set(hash, []);
100
+ grid.get(hash).push(i);
101
+ }
102
+ return grid;
103
+ }
104
+ async batchCollide(positions, sizes, count) {
105
+ const pairs = [];
106
+ const cellSize = 64;
107
+ const grid = await this.spatialHash(positions, count, cellSize);
108
+ for (const [, indices] of grid) {
109
+ for (let i = 0; i < indices.length; i++) {
110
+ for (let j = i + 1; j < indices.length; j++) {
111
+ const a = indices[i];
112
+ const b = indices[j];
113
+ const hit = await this.collideAABB(positions[a * 2], positions[a * 2 + 1], sizes[a * 2], sizes[a * 2 + 1], positions[b * 2], positions[b * 2 + 1], sizes[b * 2], sizes[b * 2 + 1]);
114
+ if (hit)
115
+ pairs.push([a, b]);
116
+ }
117
+ }
118
+ }
119
+ return pairs;
120
+ }
121
+ }
122
+ //# sourceMappingURL=PhotonCompute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PhotonCompute.js","sourceRoot":"","sources":["../src/PhotonCompute.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { PhotonCompute } from "./PhotonCompute";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export { PhotonCompute } from "./PhotonCompute";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
package/package.json ADDED
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "photon-engine-compute",
3
+ "version": "0.1.0",
4
+ "description": "High-performance compute backend for Photon Engine",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/index.js",
11
+ "types": "./dist/index.d.ts"
12
+ }
13
+ },
14
+ "files": ["dist"],
15
+ "scripts": {
16
+ "build": "tsc",
17
+ "dev": "tsc --watch",
18
+ "typecheck": "tsc --noEmit",
19
+ "prepublishOnly": "npm run build"
20
+ },
21
+ "peerDependencies": {
22
+ "photon-engine": "^0.1.1"
23
+ },
24
+ "devDependencies": {
25
+ "typescript": "^5.6.0",
26
+ "photon-engine": "file:../core"
27
+ },
28
+ "license": "MIT"
29
+ }