reze-engine 0.3.12 → 0.3.13

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 (44) hide show
  1. package/README.md +66 -66
  2. package/dist/bezier-interpolate.d.ts +15 -0
  3. package/dist/bezier-interpolate.d.ts.map +1 -0
  4. package/dist/bezier-interpolate.js +40 -0
  5. package/dist/engine.d.ts +3 -8
  6. package/dist/engine.d.ts.map +1 -1
  7. package/dist/engine.js +19 -30
  8. package/dist/engine_ts.d.ts +143 -0
  9. package/dist/engine_ts.d.ts.map +1 -0
  10. package/dist/engine_ts.js +1575 -0
  11. package/dist/ik.d.ts +32 -0
  12. package/dist/ik.d.ts.map +1 -0
  13. package/dist/ik.js +337 -0
  14. package/dist/player.d.ts +64 -0
  15. package/dist/player.d.ts.map +1 -0
  16. package/dist/player.js +220 -0
  17. package/dist/pool-scene.d.ts +52 -0
  18. package/dist/pool-scene.d.ts.map +1 -0
  19. package/dist/pool-scene.js +1122 -0
  20. package/dist/pool.d.ts +38 -0
  21. package/dist/pool.d.ts.map +1 -0
  22. package/dist/pool.js +422 -0
  23. package/dist/rzm-converter.d.ts +12 -0
  24. package/dist/rzm-converter.d.ts.map +1 -0
  25. package/dist/rzm-converter.js +40 -0
  26. package/dist/rzm-loader.d.ts +24 -0
  27. package/dist/rzm-loader.d.ts.map +1 -0
  28. package/dist/rzm-loader.js +488 -0
  29. package/dist/rzm-writer.d.ts +27 -0
  30. package/dist/rzm-writer.d.ts.map +1 -0
  31. package/dist/rzm-writer.js +701 -0
  32. package/package.json +1 -1
  33. package/src/camera.ts +358 -358
  34. package/src/engine.ts +28 -28
  35. package/src/ik-solver.ts +411 -411
  36. package/src/math.ts +584 -584
  37. package/src/physics.ts +742 -742
  38. package/src/vmd-loader.ts +276 -276
  39. package/dist/audio.d.ts +0 -29
  40. package/dist/audio.d.ts.map +0 -1
  41. package/dist/audio.js +0 -116
  42. package/dist/particles.d.ts +0 -67
  43. package/dist/particles.d.ts.map +0 -1
  44. package/dist/particles.js +0 -266
package/src/engine.ts CHANGED
@@ -9,6 +9,16 @@ export type EngineOptions = {
9
9
  rimLightIntensity?: number
10
10
  cameraDistance?: number
11
11
  cameraTarget?: Vec3
12
+ cameraFov?: number
13
+ }
14
+
15
+ export const DEFAULT_ENGINE_OPTIONS: Required<EngineOptions> = {
16
+ ambientColor: new Vec3(1.0, 1.0, 1.0),
17
+ bloomIntensity: 0.12,
18
+ rimLightIntensity: 0.45,
19
+ cameraDistance: 26.6,
20
+ cameraTarget: new Vec3(0, 12.5, 0),
21
+ cameraFov: Math.PI / 4,
12
22
  }
13
23
 
14
24
  export interface EngineStats {
@@ -42,8 +52,9 @@ export class Engine {
42
52
  private camera!: Camera
43
53
  private cameraUniformBuffer!: GPUBuffer
44
54
  private cameraMatrixData = new Float32Array(36)
45
- private cameraDistance: number = 26.6
46
- private cameraTarget: Vec3 = new Vec3(0, 12.5, 0)
55
+ private cameraDistance!: number
56
+ private cameraTarget!: Vec3
57
+ private cameraFov!: number
47
58
  private lightUniformBuffer!: GPUBuffer
48
59
  private lightData = new Float32Array(4)
49
60
  private vertexBuffer!: GPUBuffer
@@ -72,18 +83,8 @@ export class Engine {
72
83
  private readonly STENCIL_EYE_VALUE = 1
73
84
  private readonly BLOOM_DOWNSCALE_FACTOR = 2
74
85
 
75
- // Default values
76
- private static readonly DEFAULT_BLOOM_THRESHOLD = 0.01
77
- private static readonly DEFAULT_BLOOM_INTENSITY = 0.12
78
- private static readonly DEFAULT_RIM_LIGHT_INTENSITY = 0.45
79
- private static readonly DEFAULT_CAMERA_DISTANCE = 26.6
80
- private static readonly DEFAULT_CAMERA_TARGET = new Vec3(0, 12.5, 0)
81
- private static readonly TRANSPARENCY_EPSILON = 0.001
82
- private static readonly STATS_FPS_UPDATE_INTERVAL_MS = 1000
83
- private static readonly STATS_FRAME_TIME_ROUNDING = 100
84
-
85
86
  // Ambient light settings
86
- private ambientColor: Vec3 = new Vec3(1.0, 1.0, 1.0)
87
+ private ambientColor!: Vec3
87
88
  // Bloom post-processing textures
88
89
  private sceneRenderTexture!: GPUTexture
89
90
  private sceneRenderTextureView!: GPUTextureView // Cached view (recreated on resize)
@@ -104,10 +105,10 @@ export class Engine {
104
105
  private bloomBlurVBindGroup?: GPUBindGroup
105
106
  private bloomComposeBindGroup?: GPUBindGroup
106
107
  // Bloom settings
107
- private bloomThreshold: number = Engine.DEFAULT_BLOOM_THRESHOLD
108
- private bloomIntensity: number = Engine.DEFAULT_BLOOM_INTENSITY
108
+ private bloomThreshold!: number
109
+ private bloomIntensity!: number
109
110
  // Rim light settings
110
- private rimLightIntensity: number = Engine.DEFAULT_RIM_LIGHT_INTENSITY
111
+ private rimLightIntensity!: number
111
112
 
112
113
  private currentModel: Model | null = null
113
114
  private modelDir: string = ""
@@ -132,11 +133,12 @@ export class Engine {
132
133
  constructor(canvas: HTMLCanvasElement, options?: EngineOptions) {
133
134
  this.canvas = canvas
134
135
  if (options) {
135
- this.ambientColor = options.ambientColor ?? new Vec3(1.0, 1.0, 1.0)
136
- this.bloomIntensity = options.bloomIntensity ?? Engine.DEFAULT_BLOOM_INTENSITY
137
- this.rimLightIntensity = options.rimLightIntensity ?? Engine.DEFAULT_RIM_LIGHT_INTENSITY
138
- this.cameraDistance = options.cameraDistance ?? Engine.DEFAULT_CAMERA_DISTANCE
139
- this.cameraTarget = options.cameraTarget ?? Engine.DEFAULT_CAMERA_TARGET
136
+ this.ambientColor = options.ambientColor ?? DEFAULT_ENGINE_OPTIONS.ambientColor!
137
+ this.bloomIntensity = options.bloomIntensity ?? DEFAULT_ENGINE_OPTIONS.bloomIntensity
138
+ this.rimLightIntensity = options.rimLightIntensity ?? DEFAULT_ENGINE_OPTIONS.rimLightIntensity
139
+ this.cameraDistance = options.cameraDistance ?? DEFAULT_ENGINE_OPTIONS.cameraDistance
140
+ this.cameraTarget = options.cameraTarget ?? DEFAULT_ENGINE_OPTIONS.cameraTarget
141
+ this.cameraFov = options.cameraFov ?? DEFAULT_ENGINE_OPTIONS.cameraFov
140
142
  }
141
143
  }
142
144
 
@@ -1052,7 +1054,7 @@ export class Engine {
1052
1054
  usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,
1053
1055
  })
1054
1056
 
1055
- this.camera = new Camera(Math.PI, Math.PI / 2.5, this.cameraDistance, this.cameraTarget)
1057
+ this.camera = new Camera(Math.PI, Math.PI / 2.5, this.cameraDistance, this.cameraTarget, this.cameraFov)
1056
1058
 
1057
1059
  this.camera.aspect = this.canvas.width / this.canvas.height
1058
1060
  this.camera.attachControl(this.canvas)
@@ -1285,7 +1287,7 @@ export class Engine {
1285
1287
  if (!diffuseTexture) throw new Error(`Material "${mat.name}" has no diffuse texture`)
1286
1288
 
1287
1289
  const materialAlpha = mat.diffuse[3]
1288
- const isTransparent = materialAlpha < 1.0 - Engine.TRANSPARENCY_EPSILON
1290
+ const isTransparent = materialAlpha < 1.0 - 0.001
1289
1291
 
1290
1292
  const materialUniformBuffer = this.createMaterialUniformBuffer(mat.name, materialAlpha, 0.0)
1291
1293
 
@@ -1739,17 +1741,15 @@ export class Engine {
1739
1741
  this.frameTimeSum -= avg
1740
1742
  this.frameTimeCount = maxSamples
1741
1743
  }
1742
- this.stats.frameTime =
1743
- Math.round((this.frameTimeSum / this.frameTimeCount) * Engine.STATS_FRAME_TIME_ROUNDING) /
1744
- Engine.STATS_FRAME_TIME_ROUNDING
1744
+ this.stats.frameTime = Math.round((this.frameTimeSum / this.frameTimeCount) * 100) / 100
1745
1745
 
1746
1746
  // FPS tracking
1747
1747
  const now = performance.now()
1748
1748
  this.framesSinceLastUpdate++
1749
1749
  const elapsed = now - this.lastFpsUpdate
1750
1750
 
1751
- if (elapsed >= Engine.STATS_FPS_UPDATE_INTERVAL_MS) {
1752
- this.stats.fps = Math.round((this.framesSinceLastUpdate / elapsed) * Engine.STATS_FPS_UPDATE_INTERVAL_MS)
1751
+ if (elapsed >= 1000) {
1752
+ this.stats.fps = Math.round((this.framesSinceLastUpdate / elapsed) * 1000)
1753
1753
  this.framesSinceLastUpdate = 0
1754
1754
  this.lastFpsUpdate = now
1755
1755
  }