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.
- package/README.md +66 -66
- package/dist/bezier-interpolate.d.ts +15 -0
- package/dist/bezier-interpolate.d.ts.map +1 -0
- package/dist/bezier-interpolate.js +40 -0
- package/dist/engine.d.ts +3 -8
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +19 -30
- package/dist/engine_ts.d.ts +143 -0
- package/dist/engine_ts.d.ts.map +1 -0
- package/dist/engine_ts.js +1575 -0
- package/dist/ik.d.ts +32 -0
- package/dist/ik.d.ts.map +1 -0
- package/dist/ik.js +337 -0
- package/dist/player.d.ts +64 -0
- package/dist/player.d.ts.map +1 -0
- package/dist/player.js +220 -0
- package/dist/pool-scene.d.ts +52 -0
- package/dist/pool-scene.d.ts.map +1 -0
- package/dist/pool-scene.js +1122 -0
- package/dist/pool.d.ts +38 -0
- package/dist/pool.d.ts.map +1 -0
- package/dist/pool.js +422 -0
- package/dist/rzm-converter.d.ts +12 -0
- package/dist/rzm-converter.d.ts.map +1 -0
- package/dist/rzm-converter.js +40 -0
- package/dist/rzm-loader.d.ts +24 -0
- package/dist/rzm-loader.d.ts.map +1 -0
- package/dist/rzm-loader.js +488 -0
- package/dist/rzm-writer.d.ts +27 -0
- package/dist/rzm-writer.d.ts.map +1 -0
- package/dist/rzm-writer.js +701 -0
- package/package.json +1 -1
- package/src/camera.ts +358 -358
- package/src/engine.ts +28 -28
- package/src/ik-solver.ts +411 -411
- package/src/math.ts +584 -584
- package/src/physics.ts +742 -742
- package/src/vmd-loader.ts +276 -276
- package/dist/audio.d.ts +0 -29
- package/dist/audio.d.ts.map +0 -1
- package/dist/audio.js +0 -116
- package/dist/particles.d.ts +0 -67
- package/dist/particles.d.ts.map +0 -1
- 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
|
|
46
|
-
private cameraTarget
|
|
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
|
|
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
|
|
108
|
-
private bloomIntensity
|
|
108
|
+
private bloomThreshold!: number
|
|
109
|
+
private bloomIntensity!: number
|
|
109
110
|
// Rim light settings
|
|
110
|
-
private rimLightIntensity
|
|
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 ??
|
|
136
|
-
this.bloomIntensity = options.bloomIntensity ??
|
|
137
|
-
this.rimLightIntensity = options.rimLightIntensity ??
|
|
138
|
-
this.cameraDistance = options.cameraDistance ??
|
|
139
|
-
this.cameraTarget = options.cameraTarget ??
|
|
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 -
|
|
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 >=
|
|
1752
|
-
this.stats.fps = Math.round((this.framesSinceLastUpdate / elapsed) *
|
|
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
|
}
|