reze-engine 0.10.2 → 0.11.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.
Files changed (62) hide show
  1. package/README.md +72 -13
  2. package/dist/engine.d.ts +170 -34
  3. package/dist/engine.d.ts.map +1 -1
  4. package/dist/engine.js +1080 -308
  5. package/dist/index.d.ts +2 -1
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +1 -1
  8. package/dist/shaders/body.d.ts +2 -0
  9. package/dist/shaders/body.d.ts.map +1 -0
  10. package/dist/shaders/body.js +209 -0
  11. package/dist/shaders/classify.d.ts +4 -0
  12. package/dist/shaders/classify.d.ts.map +1 -0
  13. package/dist/shaders/classify.js +12 -0
  14. package/dist/shaders/cloth_rough.d.ts +2 -0
  15. package/dist/shaders/cloth_rough.d.ts.map +1 -0
  16. package/dist/shaders/cloth_rough.js +172 -0
  17. package/dist/shaders/cloth_smooth.d.ts +2 -0
  18. package/dist/shaders/cloth_smooth.d.ts.map +1 -0
  19. package/dist/shaders/cloth_smooth.js +171 -0
  20. package/dist/shaders/default.d.ts +2 -0
  21. package/dist/shaders/default.d.ts.map +1 -0
  22. package/dist/shaders/default.js +168 -0
  23. package/dist/shaders/dfg_lut.d.ts +4 -0
  24. package/dist/shaders/dfg_lut.d.ts.map +1 -0
  25. package/dist/shaders/dfg_lut.js +125 -0
  26. package/dist/shaders/eye.d.ts +2 -0
  27. package/dist/shaders/eye.d.ts.map +1 -0
  28. package/dist/shaders/eye.js +142 -0
  29. package/dist/shaders/face.d.ts +2 -0
  30. package/dist/shaders/face.d.ts.map +1 -0
  31. package/dist/shaders/face.js +211 -0
  32. package/dist/shaders/hair.d.ts +2 -0
  33. package/dist/shaders/hair.d.ts.map +1 -0
  34. package/dist/shaders/hair.js +186 -0
  35. package/dist/shaders/ltc_mag_lut.d.ts +3 -0
  36. package/dist/shaders/ltc_mag_lut.d.ts.map +1 -0
  37. package/dist/shaders/ltc_mag_lut.js +1033 -0
  38. package/dist/shaders/metal.d.ts +2 -0
  39. package/dist/shaders/metal.d.ts.map +1 -0
  40. package/dist/shaders/metal.js +171 -0
  41. package/dist/shaders/nodes.d.ts +2 -0
  42. package/dist/shaders/nodes.d.ts.map +1 -0
  43. package/dist/shaders/nodes.js +423 -0
  44. package/dist/shaders/stockings.d.ts +2 -0
  45. package/dist/shaders/stockings.d.ts.map +1 -0
  46. package/dist/shaders/stockings.js +229 -0
  47. package/package.json +1 -1
  48. package/src/engine.ts +1281 -376
  49. package/src/index.ts +12 -2
  50. package/src/shaders/body.ts +211 -0
  51. package/src/shaders/classify.ts +25 -0
  52. package/src/shaders/cloth_rough.ts +174 -0
  53. package/src/shaders/cloth_smooth.ts +173 -0
  54. package/src/shaders/default.ts +169 -0
  55. package/src/shaders/dfg_lut.ts +127 -0
  56. package/src/shaders/eye.ts +143 -0
  57. package/src/shaders/face.ts +213 -0
  58. package/src/shaders/hair.ts +188 -0
  59. package/src/shaders/ltc_mag_lut.ts +1035 -0
  60. package/src/shaders/metal.ts +173 -0
  61. package/src/shaders/nodes.ts +424 -0
  62. package/src/shaders/stockings.ts +231 -0
package/README.md CHANGED
@@ -12,7 +12,7 @@ npm install reze-engine
12
12
 
13
13
  ## Features
14
14
 
15
- - Blinn-Phong shading, alpha blending, rim lighting, outlines, MSAA 4x
15
+ - Blender 3.6 EEVEE rendering port — Principled BSDF with multi-scatter + LTC energy compensation, NPR material presets (face / hair / body / eye / stockings / metal / cloth / default), Filmic tone mapping, alpha-hashed transparency, outlines, MSAA 4x
16
16
  - VMD animation with IK solver and Bullet physics
17
17
  - Orbit camera with bone-follow mode
18
18
  - GPU picking (double-click/tap)
@@ -25,9 +25,9 @@ npm install reze-engine
25
25
  import { Engine, Vec3 } from "reze-engine";
26
26
 
27
27
  const engine = new Engine(canvas, {
28
- ambientColor: new Vec3(0.88, 0.92, 0.99),
29
- cameraDistance: 31.5, // MMD units (1 unit = 8 cm)
30
- cameraTarget: new Vec3(0, 11.5, 0),
28
+ world: { color: new Vec3(0.4, 0.49, 0.65), strength: 1.0 },
29
+ sun: { color: new Vec3(1, 1, 1), strength: 2.0, direction: new Vec3(0, -0.5, 1) },
30
+ camera: { distance: 31.5, target: new Vec3(0, 11.5, 0) }, // MMD units (1 unit = 8 cm)
31
31
  });
32
32
  await engine.init();
33
33
 
@@ -55,6 +55,7 @@ engine.getModel(name)
55
55
  engine.getModelNames()
56
56
  engine.removeModel(name)
57
57
 
58
+ engine.setMaterialPresets(name, presetMap) // assign NPR presets by material name
58
59
  engine.setMaterialVisible(name, material, visible)
59
60
  engine.toggleMaterialVisible(name, material)
60
61
  engine.isMaterialVisible(name, material)
@@ -159,27 +160,85 @@ Call `model.play(name, options?)` to start or switch motion. `loop: true` makes
159
160
 
160
161
  ### Engine Options
161
162
 
163
+ Blender-style scene config — `world` = environment lighting, `sun` = the directional lamp, `camera` = view framing.
164
+
162
165
  ```javascript
163
166
  {
164
- ambientColor: Vec3,
165
- directionalLightIntensity: number,
166
- minSpecularIntensity: number,
167
- rimLightIntensity: number,
168
- cameraDistance: number,
169
- cameraTarget: Vec3,
170
- cameraFov: number,
167
+ world: {
168
+ color: Vec3, // World > Surface > Color (linear scene-referred)
169
+ strength: number, // World > Surface > Strength
170
+ },
171
+ sun: {
172
+ color: Vec3, // Light > Color
173
+ strength: number, // Light > Strength (Blender units)
174
+ direction: Vec3, // direction light travels (points from sun into the scene)
175
+ },
176
+ camera: {
177
+ distance: number,
178
+ target: Vec3,
179
+ fov: number, // radians
180
+ },
171
181
  onRaycast: (modelName, material, screenX, screenY) => void,
172
- shadowLightDirection: Vec3,
173
182
  physicsOptions: {
174
183
  constraintSolverKeywords: string[],
175
184
  },
176
185
  }
177
186
  ```
178
187
 
179
- `shadowLightDirection` — direction of the shadow-only light, independent of the visible directional light. Default `(0.12, -1, 0.16)` casts a near-top-down shadow with a slight offset so extended limbs still project visible shadows.
188
+ The shadow map is cast from `sun.direction` same vector the shader lights with so the visible shading and cast shadows stay coupled.
189
+
190
+ `engine.setWorld({ color?, strength? })` and `engine.setSun({ color?, strength?, direction? })` update lighting at runtime; changing `sun.direction` refreshes the shadow VP on the next frame.
180
191
 
181
192
  `constraintSolverKeywords` — joints whose name contains any keyword use the Bullet 2.75 constraint solver; all others keep the stable Ammo 2.82+ default. See [babylon-mmd: Fix Constraint Behavior](https://noname0310.github.io/babylon-mmd/docs/reference/runtime/apply-physics-to-mmd-models/#fix-constraint-behavior) for details.
182
193
 
194
+ ## Rendering
195
+
196
+ The renderer follows Blender 3.6 EEVEE — shading, tone mapping, and transparency decisions match the reference CPU/GPU paths so authors tuning a model in Blender see the same result on the web.
197
+
198
+ ### Principled BSDF port
199
+
200
+ - GGX specular with Schlick Fresnel and Smith G1
201
+ - **Multi-scatter compensation** via Fdez-Agüera 2019 (`F_brdf_multi_scatter`) — the closed-form version used in EEVEE's `bsdf_common_lib.glsl`
202
+ - **DFG split-sum LUT** baked at `engine.init()` — port of Blender's `bsdf_lut_frag.glsl`. Used for indirect specular and as the denominator of the direct-spec energy compensation
203
+ - **LTC direct-specular energy compensation** (`ltc_brdf_scale = (ltc.x + ltc.y) / (dfg.x + dfg.y)`, per `closure_eval_glossy_lib.glsl:79-81`) — keeps direct and indirect spec in the same energy budget. The LTC magnitude LUT is uploaded from `eevee_lut.c` constants
204
+ - Sheen coarse approximation (`f³·0.077 + f·0.01 + 0.00026`) on cloth/stockings
205
+
206
+ ### NPR material presets
207
+
208
+ Each PMX material is dispatched to one of the preset shaders, all ported from "仿深空之眼渲染预设v1.0" Blender node graphs:
209
+
210
+ | Preset | Based on Blender material |
211
+ | -------------- | ------------------------- |
212
+ | `face` | `M_Face` — toon ramp + rim + warm bleed + Principled mix |
213
+ | `hair` | `M_Hair` — anisotropic spec highlight + rim |
214
+ | `body` | `M_Body` — toon ramp + AO + rim + Principled mix |
215
+ | `eye` | `M_Eye` — iris mapping + highlight |
216
+ | `stockings` | `M_Stockings` — NPR mask × Principled with sheen, alpha-hashed |
217
+ | `metal` | `M_Metal` — anisotropic + environment rim |
218
+ | `cloth_smooth` | `M_Cloth_Smooth` — Principled cloth with sheen |
219
+ | `cloth_rough` | `M_Cloth_Rough` — rougher variant |
220
+ | `default` | Principled BSDF (unmapped fallback) |
221
+
222
+ Assign presets per-model:
223
+
224
+ ```javascript
225
+ engine.setMaterialPresets("hero", {
226
+ face: ["顔", "白目", "口の中"],
227
+ hair: ["髪", "前髪"],
228
+ body: ["肌"],
229
+ eye: ["瞳"],
230
+ stockings: ["袜子"],
231
+ cloth_smooth: ["制服", "スカート"],
232
+ metal: ["ボタン"],
233
+ });
234
+ ```
235
+
236
+ Material names not listed fall through to the `default` Principled BSDF.
237
+
238
+ ### Alpha-hashed transparency
239
+
240
+ `stockings` uses the Wyman & McGuire 2017 derivative-aware stochastic discard (port of EEVEE's `prepass_frag.glsl::hashed_alpha_threshold`) instead of alpha blend. Self-overlapping transparent meshes (stockings wrap the leg — front and back surfaces share screen pixels) can't be sorted per-fragment in one draw call, so blend produces "cracks". Hashed alpha keeps opaque-style depth writes, resolves under MSAA/TAA, and matches the fix the preset author documented.
241
+
183
242
  ## Projects Using This Engine
184
243
 
185
244
  - **[Reze Studio](https://reze.studio)** - Web-native MMD animation editor
package/dist/engine.d.ts CHANGED
@@ -2,37 +2,85 @@ import { Vec3 } from "./math";
2
2
  import { Model } from "./model";
3
3
  import { type PhysicsOptions } from "./physics";
4
4
  import { type AssetReader } from "./asset-reader";
5
+ import { type MaterialPresetMap } from "./shaders/classify";
5
6
  export type RaycastCallback = (modelName: string, material: string | null, screenX: number, screenY: number) => void;
6
7
  /** Select a folder (webkitdirectory) and pass FileList or File[]; pmxFile picks which .pmx when several exist. */
7
8
  export type LoadModelFromFilesOptions = {
8
9
  files: FileList | File[];
9
10
  pmxFile?: File;
10
11
  };
12
+ export type WorldOptions = {
13
+ /** Linear scene-referred color of the World Background (Blender: World > Surface > Color). */
14
+ color?: Vec3;
15
+ /** Multiplier on world color (Blender: World > Surface > Strength). */
16
+ strength?: number;
17
+ };
18
+ export type SunOptions = {
19
+ /** Linear color of the sun lamp (Blender: Light > Color). */
20
+ color?: Vec3;
21
+ /** Lamp power in Blender units (Blender: Light > Strength). */
22
+ strength?: number;
23
+ /** Direction sunlight travels (points FROM sun TO scene, Blender: -light.rotation.Z). */
24
+ direction?: Vec3;
25
+ };
26
+ export type CameraOptions = {
27
+ /** Orbit distance from target. */
28
+ distance?: number;
29
+ /** World-space orbit center. */
30
+ target?: Vec3;
31
+ /** Vertical field of view in radians. */
32
+ fov?: number;
33
+ };
34
+ /** EEVEE Bloom panel (3D Viewport > Render > Bloom). Fields map 1:1 to Blender's UI. */
35
+ export type BloomOptions = {
36
+ enabled: boolean;
37
+ threshold: number;
38
+ knee: number;
39
+ radius: number;
40
+ color: Vec3;
41
+ intensity: number;
42
+ clamp: number;
43
+ };
44
+ export declare const DEFAULT_BLOOM_OPTIONS: BloomOptions;
45
+ /** Blender Color Management / View (rendering.txt: Filmic, exposure, gamma). `look` is reserved for future curve tweaks. */
46
+ export type ViewTransformOptions = {
47
+ /** Stops applied before Filmic: `linear *= 2^exposure` (Blender default often ~−0.3). */
48
+ exposure: number;
49
+ /** After Filmic, display gamma (`pow(rgb, 1/gamma)`). */
50
+ gamma: number;
51
+ look: "default" | "medium_high_contrast";
52
+ };
53
+ export declare const DEFAULT_VIEW_TRANSFORM: ViewTransformOptions;
11
54
  export type EngineOptions = {
12
- ambientColor?: Vec3;
13
- directionalLightIntensity?: number;
14
- minSpecularIntensity?: number;
15
- rimLightIntensity?: number;
16
- cameraDistance?: number;
17
- cameraTarget?: Vec3;
18
- cameraFov?: number;
55
+ world?: WorldOptions;
56
+ sun?: SunOptions;
57
+ camera?: CameraOptions;
58
+ /** Initial EEVEE-style bloom; tune at runtime with `setBloomOptions`. */
59
+ bloom?: Partial<BloomOptions>;
60
+ /** View transform (exposure/gamma) applied in composite before/after Filmic. */
61
+ view?: Partial<ViewTransformOptions>;
19
62
  onRaycast?: RaycastCallback;
20
63
  physicsOptions?: PhysicsOptions;
21
- shadowLightDirection?: Vec3;
22
64
  };
23
65
  export declare const DEFAULT_ENGINE_OPTIONS: {
24
- ambientColor: Vec3;
25
- directionalLightIntensity: number;
26
- minSpecularIntensity: number;
27
- rimLightIntensity: number;
28
- cameraDistance: number;
29
- cameraTarget: Vec3;
30
- cameraFov: number;
66
+ world: {
67
+ color: Vec3;
68
+ strength: number;
69
+ };
70
+ sun: {
71
+ color: Vec3;
72
+ strength: number;
73
+ direction: Vec3;
74
+ };
75
+ camera: {
76
+ distance: number;
77
+ target: Vec3;
78
+ fov: number;
79
+ };
31
80
  onRaycast: undefined;
32
81
  physicsOptions: {
33
82
  constraintSolverKeywords: string[];
34
83
  };
35
- shadowLightDirection: Vec3;
36
84
  };
37
85
  export interface EngineStats {
38
86
  fps: number;
@@ -48,15 +96,23 @@ export declare class Engine {
48
96
  private camera;
49
97
  private cameraUniformBuffer;
50
98
  private cameraMatrixData;
51
- private cameraDistance;
52
- private cameraTarget;
53
- private cameraFov;
99
+ private world;
100
+ private sun;
101
+ private cameraConfig;
54
102
  private lightUniformBuffer;
55
103
  private lightData;
56
104
  private lightCount;
57
105
  private resizeObserver;
58
106
  private depthTexture;
59
107
  private modelPipeline;
108
+ private facePipeline;
109
+ private hairPipeline;
110
+ private clothSmoothPipeline;
111
+ private clothRoughPipeline;
112
+ private metalPipeline;
113
+ private bodyPipeline;
114
+ private eyePipeline;
115
+ private stockingsPipeline;
60
116
  private groundShadowPipeline;
61
117
  private groundShadowBindGroupLayout;
62
118
  private outlinePipeline;
@@ -68,17 +124,48 @@ export declare class Engine {
68
124
  private perFrameBindGroup;
69
125
  private outlinePerFrameBindGroup;
70
126
  private multisampleTexture;
127
+ private hdrResolveTexture;
71
128
  private static readonly MULTISAMPLE_COUNT;
129
+ private static readonly HDR_FORMAT;
72
130
  private renderPassDescriptor;
73
- private ambientColor;
74
- private directionalLightIntensity;
75
- private minSpecularIntensity;
76
- private rimLightIntensity;
131
+ private compositePassDescriptor;
132
+ private compositePipeline;
133
+ private compositeBindGroupLayout;
134
+ private compositeBindGroup;
135
+ private compositeUniformBuffer;
136
+ private readonly compositeUniformData;
137
+ private bloomSampler;
138
+ private bloomBlitUniformBuffer;
139
+ private bloomUpsampleUniformBuffer;
140
+ private readonly bloomBlitUniformData;
141
+ private readonly bloomUpsampleUniformData;
142
+ private bloomBlitPipeline;
143
+ private bloomDownsamplePipeline;
144
+ private bloomUpsamplePipeline;
145
+ private bloomBlitBindGroupLayout;
146
+ private bloomDownsampleBindGroupLayout;
147
+ private bloomUpsampleBindGroupLayout;
148
+ private bloomDownTexture;
149
+ private bloomUpTexture;
150
+ private bloomMipCount;
151
+ private bloomDownMipViews;
152
+ private bloomUpMipViews;
153
+ private bloomBlitBindGroup;
154
+ private bloomDownsampleBindGroups;
155
+ private bloomUpsampleBindGroups;
156
+ /** Single-attachment pass; colorAttachments[0].view set per bloom step. */
157
+ private bloomPassDescriptor;
158
+ private static readonly BLOOM_MAX_LEVELS;
77
159
  private groundVertexBuffer?;
78
160
  private groundIndexBuffer?;
79
161
  private hasGround;
80
- private shadowMapTexture?;
81
- private shadowMapDepthView?;
162
+ private shadowMapTexture;
163
+ private shadowMapDepthView;
164
+ private dfgLutTexture;
165
+ private dfgLutView;
166
+ private ltcMagLutTexture;
167
+ private ltcMagLutView;
168
+ private static readonly SHADOW_MAP_SIZE;
82
169
  private shadowDepthPipeline;
83
170
  private shadowLightVPBuffer;
84
171
  private shadowLightVPMatrix;
@@ -88,7 +175,6 @@ export declare class Engine {
88
175
  private groundDrawCall;
89
176
  private onRaycast?;
90
177
  private physicsOptions;
91
- private shadowLightDirection;
92
178
  private lastTouchTime;
93
179
  private readonly DOUBLE_TAP_DELAY;
94
180
  private pickPipeline;
@@ -117,8 +203,23 @@ export declare class Engine {
117
203
  private stats;
118
204
  private animationFrameId;
119
205
  private renderLoopCallback;
206
+ private bloomSettings;
207
+ private viewTransform;
120
208
  constructor(canvas: HTMLCanvasElement, options?: EngineOptions);
209
+ /** Merge partial bloom with EEVEE defaults (same as constructor). */
210
+ static mergeBloomDefaults(partial?: Partial<BloomOptions>): BloomOptions;
211
+ static mergeViewTransformDefaults(partial?: Partial<ViewTransformOptions>): ViewTransformOptions;
212
+ /** Current bloom settings (Blender names; tint is a copied `Vec3`). */
213
+ getBloomOptions(): BloomOptions;
214
+ getViewTransformOptions(): ViewTransformOptions;
215
+ setViewTransformOptions(patch: Partial<ViewTransformOptions>): void;
216
+ private writeCompositeViewUniforms;
217
+ /** Patch bloom; GPU uniforms update immediately if `init()` has run. */
218
+ setBloomOptions(patch: Partial<BloomOptions>): void;
219
+ private writeBloomUniforms;
121
220
  init(): Promise<void>;
221
+ private bakeDfgLut;
222
+ private uploadLtcMagLut;
122
223
  private createRenderPipeline;
123
224
  private createPipelines;
124
225
  private setupResize;
@@ -137,15 +238,33 @@ export declare class Engine {
137
238
  getCameraBeta(): number;
138
239
  setCameraBeta(b: number): void;
139
240
  private setupLighting;
140
- private setAmbientColor;
141
- private addLight;
241
+ /**
242
+ * Write world ambient. For a uniform-radiance world, hemispherical irradiance
243
+ * is E = π·L and a Lambertian BRDF reflects (albedo/π)·E = albedo·L, so the
244
+ * shader's ambient uniform is just `world.color × world.strength` — no /π.
245
+ */
246
+ private writeWorld;
247
+ /** Write sun lamp into light slot `index` (0..3). Layout mirrors the WGSL struct. */
248
+ private writeSun;
249
+ /** Update the world environment (Blender: World Background). Ambient recomputes immediately. */
250
+ setWorld(options: WorldOptions): void;
251
+ /** Update the sun lamp (Blender: Light > Sun). Direction change marks shadow VP dirty. */
252
+ setSun(options: SunOptions): void;
253
+ getWorld(): Readonly<{
254
+ color: Vec3;
255
+ strength: number;
256
+ }>;
257
+ getSun(): Readonly<{
258
+ color: Vec3;
259
+ strength: number;
260
+ direction: Vec3;
261
+ }>;
142
262
  addGround(options?: {
143
263
  width?: number;
144
264
  height?: number;
145
265
  diffuseColor?: Vec3;
146
266
  fadeStart?: number;
147
267
  fadeEnd?: number;
148
- shadowMapSize?: number;
149
268
  shadowStrength?: number;
150
269
  gridSpacing?: number;
151
270
  gridLineWidth?: number;
@@ -166,6 +285,7 @@ export declare class Engine {
166
285
  getModelNames(): string[];
167
286
  getModel(name: string): Model | null;
168
287
  markVertexBufferDirty(modelNameOrModel?: string | Model): void;
288
+ setMaterialPresets(modelName: string, presets: MaterialPresetMap): void;
169
289
  setMaterialVisible(modelName: string, materialName: string, visible: boolean): void;
170
290
  toggleMaterialVisible(modelName: string, materialName: string): void;
171
291
  isMaterialVisible(modelName: string, materialName: string): boolean;
@@ -193,15 +313,31 @@ export declare class Engine {
193
313
  private renderPickPass;
194
314
  private resolvePickResult;
195
315
  render(): void;
196
- private updateRenderTarget;
197
316
  private drawInstanceShadow;
198
- private drawOpaque;
199
- private drawTransparent;
200
- private bindMainGroups;
317
+ private pipelineForPreset;
318
+ /**
319
+ * Draw every material of a given type (`opaque` or `transparent`) using the main
320
+ * pipeline(s). Binds the per-frame and per-instance groups once at the top of the
321
+ * batch, then issues one draw per material. Early-outs if nothing to draw so we
322
+ * don't waste bindings when a model has no transparents, etc.
323
+ */
324
+ private drawMaterials;
325
+ /**
326
+ * Draw every outline of a given type (`opaque-outline` or `transparent-outline`).
327
+ * Uses its own pipeline layout (group 0 = camera-only, group 2 = edge uniforms), so
328
+ * every batch binds its own groups from scratch — the next drawMaterials call will
329
+ * rebind group 0/1 correctly if needed.
330
+ */
331
+ private drawOutlines;
332
+ /**
333
+ * Main-pass render sequence for one model instance:
334
+ * 1) opaque bodies → 2) opaque outlines → 3) transparents → 4) transparent outlines.
335
+ * Each batch binds the groups it needs, so switching between main and outline
336
+ * pipelines is self-contained (no cross-batch dependencies).
337
+ */
201
338
  private renderOneModel;
202
339
  private updateCameraUniforms;
203
340
  private updateSkinMatrices;
204
- private drawOutlines;
205
341
  private updateStats;
206
342
  }
207
343
  //# sourceMappingURL=engine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}