reze-engine 0.2.11 → 0.2.12
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.
- package/README.md +71 -71
- package/dist/engine.d.ts +5 -0
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +489 -432
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/pool.d.ts +38 -0
- package/dist/pool.d.ts.map +1 -0
- package/dist/pool.js +422 -0
- package/package.json +1 -1
- package/src/camera.ts +358 -358
- package/src/engine.ts +2464 -2402
- package/src/index.ts +1 -0
- package/src/math.ts +546 -546
- package/src/model.ts +421 -421
- package/src/physics.ts +752 -752
- package/src/pmx-loader.ts +1054 -1054
- package/src/pool.ts +483 -0
- package/src/vmd-loader.ts +179 -179
package/README.md
CHANGED
|
@@ -1,71 +1,71 @@
|
|
|
1
|
-
# Reze Engine
|
|
2
|
-
|
|
3
|
-
A lightweight engine built with WebGPU and TypeScript for real-time 3D anime character MMD model rendering.
|
|
4
|
-
|
|
5
|
-
## Features
|
|
6
|
-
|
|
7
|
-
- Physics
|
|
8
|
-
- Alpha blending
|
|
9
|
-
- Post alpha eye rendering
|
|
10
|
-
- Rim lighting
|
|
11
|
-
- Bloom
|
|
12
|
-
- Outlines
|
|
13
|
-
- Toon shading with directional lights
|
|
14
|
-
- MSAA 4x anti-aliasing
|
|
15
|
-
- GPU-accelerated skinning
|
|
16
|
-
- Bone rotation api
|
|
17
|
-
- VMD animation
|
|
18
|
-
|
|
19
|
-
## Usage
|
|
20
|
-
|
|
21
|
-
```javascript
|
|
22
|
-
export default function Scene() {
|
|
23
|
-
const canvasRef = useRef < HTMLCanvasElement > null
|
|
24
|
-
const engineRef = useRef < Engine > null
|
|
25
|
-
|
|
26
|
-
const initEngine = useCallback(async () => {
|
|
27
|
-
if (canvasRef.current) {
|
|
28
|
-
try {
|
|
29
|
-
const engine = new Engine(canvasRef.current, {
|
|
30
|
-
ambient: 1.0,
|
|
31
|
-
rimLightIntensity: 0.1,
|
|
32
|
-
bloomIntensity: 0.1,
|
|
33
|
-
})
|
|
34
|
-
engineRef.current = engine
|
|
35
|
-
await engine.init()
|
|
36
|
-
await engine.loadModel("/models/塞尔凯特/塞尔凯特.pmx")
|
|
37
|
-
|
|
38
|
-
engine.runRenderLoop(() => {})
|
|
39
|
-
} catch (error) {
|
|
40
|
-
console.error(error)
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}, [])
|
|
44
|
-
|
|
45
|
-
useEffect(() => {
|
|
46
|
-
void (async () => {
|
|
47
|
-
initEngine()
|
|
48
|
-
})()
|
|
49
|
-
|
|
50
|
-
return () => {
|
|
51
|
-
if (engineRef.current) {
|
|
52
|
-
engineRef.current.dispose()
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}, [initEngine])
|
|
56
|
-
|
|
57
|
-
return <canvas ref={canvasRef} className="w-full h-full" />
|
|
58
|
-
}
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
## Projects Using This Engine
|
|
62
|
-
|
|
63
|
-
- **[MiKaPo](https://mikapo.vercel.app)** - Online real-time motion capture for MMD using webcam and MediaPipe
|
|
64
|
-
- **[Popo](https://popo.love)** - Fine-tuned LLM that generates MMD poses from natural language descriptions
|
|
65
|
-
- **[MPL](https://mmd-mpl.vercel.app)** - Semantic motion programming language for scripting MMD animations with intuitive syntax
|
|
66
|
-
|
|
67
|
-
## Tutorial
|
|
68
|
-
|
|
69
|
-
Learn WebGPU from scratch by building an anime character renderer in incremental steps. The tutorial covers the complete rendering pipeline from a simple triangle to fully textured, skeletal-animated characters.
|
|
70
|
-
|
|
71
|
-
[How to Render an Anime Character with WebGPU](https://reze.one/tutorial)
|
|
1
|
+
# Reze Engine
|
|
2
|
+
|
|
3
|
+
A lightweight engine built with WebGPU and TypeScript for real-time 3D anime character MMD model rendering.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- Physics
|
|
8
|
+
- Alpha blending
|
|
9
|
+
- Post alpha eye rendering
|
|
10
|
+
- Rim lighting
|
|
11
|
+
- Bloom
|
|
12
|
+
- Outlines
|
|
13
|
+
- Toon shading with directional lights
|
|
14
|
+
- MSAA 4x anti-aliasing
|
|
15
|
+
- GPU-accelerated skinning
|
|
16
|
+
- Bone rotation api
|
|
17
|
+
- VMD animation
|
|
18
|
+
|
|
19
|
+
## Usage
|
|
20
|
+
|
|
21
|
+
```javascript
|
|
22
|
+
export default function Scene() {
|
|
23
|
+
const canvasRef = useRef < HTMLCanvasElement > null
|
|
24
|
+
const engineRef = useRef < Engine > null
|
|
25
|
+
|
|
26
|
+
const initEngine = useCallback(async () => {
|
|
27
|
+
if (canvasRef.current) {
|
|
28
|
+
try {
|
|
29
|
+
const engine = new Engine(canvasRef.current, {
|
|
30
|
+
ambient: 1.0,
|
|
31
|
+
rimLightIntensity: 0.1,
|
|
32
|
+
bloomIntensity: 0.1,
|
|
33
|
+
})
|
|
34
|
+
engineRef.current = engine
|
|
35
|
+
await engine.init()
|
|
36
|
+
await engine.loadModel("/models/塞尔凯特/塞尔凯特.pmx")
|
|
37
|
+
|
|
38
|
+
engine.runRenderLoop(() => {})
|
|
39
|
+
} catch (error) {
|
|
40
|
+
console.error(error)
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}, [])
|
|
44
|
+
|
|
45
|
+
useEffect(() => {
|
|
46
|
+
void (async () => {
|
|
47
|
+
initEngine()
|
|
48
|
+
})()
|
|
49
|
+
|
|
50
|
+
return () => {
|
|
51
|
+
if (engineRef.current) {
|
|
52
|
+
engineRef.current.dispose()
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}, [initEngine])
|
|
56
|
+
|
|
57
|
+
return <canvas ref={canvasRef} className="w-full h-full" />
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Projects Using This Engine
|
|
62
|
+
|
|
63
|
+
- **[MiKaPo](https://mikapo.vercel.app)** - Online real-time motion capture for MMD using webcam and MediaPipe
|
|
64
|
+
- **[Popo](https://popo.love)** - Fine-tuned LLM that generates MMD poses from natural language descriptions
|
|
65
|
+
- **[MPL](https://mmd-mpl.vercel.app)** - Semantic motion programming language for scripting MMD animations with intuitive syntax
|
|
66
|
+
|
|
67
|
+
## Tutorial
|
|
68
|
+
|
|
69
|
+
Learn WebGPU from scratch by building an anime character renderer in incremental steps. The tutorial covers the complete rendering pipeline from a simple triangle to fully textured, skeletal-animated characters.
|
|
70
|
+
|
|
71
|
+
[How to Render an Anime Character with WebGPU](https://reze.one/tutorial)
|
package/dist/engine.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Quat, Vec3 } from "./math";
|
|
2
|
+
import { PoolOptions } from "./pool";
|
|
2
3
|
export type EngineOptions = {
|
|
3
4
|
ambient?: number;
|
|
4
5
|
bloomIntensity?: number;
|
|
@@ -75,6 +76,7 @@ export declare class Engine {
|
|
|
75
76
|
private currentModel;
|
|
76
77
|
private modelDir;
|
|
77
78
|
private physics;
|
|
79
|
+
private pool;
|
|
78
80
|
private materialSampler;
|
|
79
81
|
private textureCache;
|
|
80
82
|
private opaqueDraws;
|
|
@@ -110,6 +112,8 @@ export declare class Engine {
|
|
|
110
112
|
private setupResize;
|
|
111
113
|
private handleResize;
|
|
112
114
|
private setupCamera;
|
|
115
|
+
private createCameraBindGroupLayout;
|
|
116
|
+
private createCameraBindGroup;
|
|
113
117
|
private setupLighting;
|
|
114
118
|
private addLight;
|
|
115
119
|
private setAmbient;
|
|
@@ -121,6 +125,7 @@ export declare class Engine {
|
|
|
121
125
|
stopRenderLoop(): void;
|
|
122
126
|
dispose(): void;
|
|
123
127
|
loadModel(path: string): Promise<void>;
|
|
128
|
+
addPool(options?: PoolOptions): Promise<void>;
|
|
124
129
|
rotateBones(bones: string[], rotations: Quat[], durationMs?: number): void;
|
|
125
130
|
private setupModelBuffers;
|
|
126
131
|
private setupMaterials;
|
package/dist/engine.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
|