minecraft-renderer 0.1.78 → 0.1.80
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 +29 -25
- package/dist/mesher.js +36 -36
- package/dist/mesher.js.map +4 -4
- package/dist/mesherWasm.js +217 -217
- package/dist/minecraft-renderer.js +32 -32
- package/dist/minecraft-renderer.js.meta.json +1 -1
- package/dist/threeWorker.js +415 -415
- package/package.json +5 -2
- package/src/bundler/bundlePrepare.ts +3 -8
- package/src/graphicsBackend/appViewer.ts +10 -7
- package/src/graphicsBackend/config.ts +1 -5
- package/src/graphicsBackend/playerState.ts +35 -34
- package/src/graphicsBackend/preloadWorkers.ts +43 -41
- package/src/graphicsBackend/rendererDefaultOptions.ts +68 -70
- package/src/graphicsBackend/rendererOptionsSync.ts +24 -50
- package/src/graphicsBackend/types.ts +2 -2
- package/src/index.ts +6 -27
- package/src/lib/DebugGui.ts +34 -31
- package/src/lib/animationController.ts +9 -9
- package/src/lib/bakeLegacyLight.ts +1 -6
- package/src/lib/bindAbortableListener.test.ts +32 -12
- package/src/lib/bindAbortableListener.ts +14 -6
- package/src/lib/blockEntityLightRegistry.ts +11 -20
- package/src/lib/blockEntityLighting.test.ts +1 -6
- package/src/lib/blockEntityLighting.ts +5 -5
- package/src/lib/buildSharedConfig.mjs +4 -4
- package/src/lib/buildWorkerMcDataIndexes.test.ts +4 -4
- package/src/lib/buildWorkerMcDataIndexes.ts +11 -19
- package/src/lib/cameraBobbing.ts +1 -1
- package/src/lib/canvas2DOverlay.example.ts +13 -33
- package/src/lib/canvas2DOverlay.quickstart.ts +24 -54
- package/src/lib/canvas2DOverlay.ts +28 -47
- package/src/lib/cleanupDecorator.ts +2 -2
- package/src/lib/createPlayerObject.test.ts +2 -7
- package/src/lib/createPlayerObject.ts +18 -25
- package/src/lib/frameTimingCollector.ts +2 -5
- package/src/lib/guiRenderer.ts +57 -42
- package/src/lib/items.ts +15 -9
- package/src/lib/mesherlogReader.ts +5 -6
- package/src/lib/simpleUtils.ts +5 -5
- package/src/lib/skyLight.ts +3 -3
- package/src/lib/smoothSwitcher.ts +11 -18
- package/src/lib/ui/newStats.ts +10 -12
- package/src/lib/utils/proxy.ts +7 -1
- package/src/lib/utils/skins.ts +4 -4
- package/src/lib/utils.ts +1 -1
- package/src/lib/workerMessageSanitize.ts +5 -12
- package/src/lib/workerProxy.ts +52 -42
- package/src/lib/workerSyncOps.test.ts +58 -41
- package/src/lib/worldrendererCommon.reconfigure.test.ts +24 -21
- package/src/lib/worldrendererCommon.removeColumn.test.ts +11 -13
- package/src/lib/worldrendererCommon.ts +338 -211
- package/src/mesher-legacy/mesher.ts +9 -4
- package/src/mesher-legacy/test/a.ts +1 -1
- package/src/mesher-legacy/test/mesherTester.ts +2 -2
- package/src/mesher-legacy/test/playground.ts +1 -1
- package/src/mesher-legacy/test/run/test-js.ts +1 -1
- package/src/mesher-legacy/test/snapshotUtils.ts +3 -8
- package/src/mesher-legacy/test/test-perf.ts +1 -1
- package/src/mesher-legacy/test/tests.test.ts +2 -2
- package/src/mesher-shared/blockEntityMetadata.test.ts +7 -5
- package/src/mesher-shared/blockEntityMetadata.ts +28 -19
- package/src/mesher-shared/blockPropertiesForMeshing.ts +2 -2
- package/src/mesher-shared/computeHeightmap.ts +2 -4
- package/src/mesher-shared/exportedGeometryTypes.ts +3 -3
- package/src/mesher-shared/faceOcclusion.ts +324 -0
- package/src/mesher-shared/models.ts +80 -131
- package/src/mesher-shared/modelsGeometryCommon.ts +30 -15
- package/src/mesher-shared/shared.ts +46 -46
- package/src/mesher-shared/standaloneRenderer.ts +40 -44
- package/src/mesher-shared/tests/faceOcclusion.test.ts +179 -0
- package/src/mesher-shared/tests/liquidQuadInvariant.test.ts +12 -8
- package/src/mesher-shared/vertexShading.ts +2 -11
- package/src/mesher-shared/world.ts +19 -19
- package/src/mesher-shared/worldLighting.test.ts +2 -2
- package/src/performanceMonitor/PerformanceMonitor.ts +4 -13
- package/src/performanceMonitor/formatPerformanceFactorsDebug.ts +2 -2
- package/src/performanceMonitor/index.ts +1 -5
- package/src/performanceMonitor/types.ts +1 -1
- package/src/playerState/playerState.ts +55 -50
- package/src/playerState/types.ts +2 -8
- package/src/playground/allEntitiesDebug.ts +19 -16
- package/src/playground/baseScene.ts +29 -32
- package/src/playground/mobileControls.tsx +133 -129
- package/src/playground/playground.html +76 -73
- package/src/playground/playground.ts +14 -1
- package/src/playground/playgroundUi.tsx +100 -74
- package/src/playground/reactUtils.ts +3 -7
- package/src/playground/scenes/entities.ts +10 -7
- package/src/playground/scenes/frequentUpdates.ts +5 -5
- package/src/playground/scenes/geometryExport.ts +6 -20
- package/src/playground/scenes/highPosEntityUpdates.ts +2 -10
- package/src/playground/scenes/index.ts +1 -1
- package/src/playground/scenes/lightingStarfield.ts +18 -12
- package/src/playground/scenes/main.ts +15 -11
- package/src/playground/scenes/partialBlockCulling.ts +31 -0
- package/src/playground/scenes/railsCobweb.ts +1 -1
- package/src/playground/scenes/rotationIssue.ts +1 -1
- package/src/playground/scenes/slabsOptimization.ts +1 -2
- package/src/playground/scenes/transparencyIssue.ts +1 -1
- package/src/playground/shared.ts +2 -2
- package/src/resourcesManager/resourcesManager.ts +29 -54
- package/src/resourcesManager/resourcesManager.worker.test.ts +6 -10
- package/src/shims/minecraftData.ts +70 -24
- package/src/sign-renderer/index.html +10 -12
- package/src/sign-renderer/index.ts +29 -29
- package/src/sign-renderer/playground.ts +22 -15
- package/src/sign-renderer/tests.test.ts +16 -13
- package/src/sign-renderer/vite.config.ts +2 -2
- package/src/three/appShared.ts +46 -25
- package/src/three/bannerRenderer.ts +33 -61
- package/src/three/cameraShake.ts +15 -6
- package/src/three/chunkMeshManager.ts +329 -301
- package/src/three/cinimaticScript.ts +26 -15
- package/src/three/cubeDrawSpans.ts +27 -37
- package/src/three/cubeMultiDraw.ts +9 -22
- package/src/three/documentRenderer.ts +15 -18
- package/src/three/entities.ts +175 -150
- package/src/three/entity/EntityMesh.ts +114 -108
- package/src/three/entity/animations.js +3 -3
- package/src/three/entity/armorModels.ts +15 -15
- package/src/three/entity/gltfAnimationUtils.ts +2 -5
- package/src/three/fireworks.ts +34 -32
- package/src/three/fireworksRenderer.ts +32 -29
- package/src/three/globalBlockBuffer.ts +174 -99
- package/src/three/globalLegacyBuffer.ts +465 -136
- package/src/three/graphicsBackendBase.ts +19 -25
- package/src/three/graphicsBackendOffThread.ts +12 -15
- package/src/three/hand.ts +21 -21
- package/src/three/handLegacy.ts +3 -13
- package/src/three/holdingBlock.ts +116 -79
- package/src/three/holdingBlockFactory.ts +1 -4
- package/src/three/holdingBlockItemIdentity.test.ts +25 -17
- package/src/three/holdingBlockItemIdentity.ts +9 -6
- package/src/three/holdingBlockLegacy.ts +113 -132
- package/src/three/itemMesh.ts +20 -29
- package/src/three/legacyMultiDraw.ts +93 -0
- package/src/three/legacySectionCull.ts +8 -14
- package/src/three/menuBackground/activeView.ts +1 -4
- package/src/three/menuBackground/assetUrl.ts +1 -1
- package/src/three/menuBackground/classic.ts +4 -12
- package/src/three/menuBackground/gpuPreference.ts +1 -3
- package/src/three/menuBackground/index.ts +2 -11
- package/src/three/menuBackground/renderer.ts +1 -5
- package/src/three/menuBackground/types.ts +1 -4
- package/src/three/menuBackground/v2.ts +196 -96
- package/src/three/menuBackground/v2Meta.ts +3 -3
- package/src/three/menuBackground/worldBlocks.ts +37 -35
- package/src/three/modules/blockBreakParticles.ts +59 -28
- package/src/three/modules/cameraBobbing.ts +3 -6
- package/src/three/modules/index.ts +1 -1
- package/src/three/modules/rain.ts +10 -23
- package/src/three/modules/sciFiWorldReveal.ts +11 -25
- package/src/three/modules/starfield.ts +7 -13
- package/src/three/renderSlot.ts +28 -16
- package/src/three/rendererModuleSystem.ts +1 -3
- package/src/three/sceneOrigin.ts +96 -33
- package/src/three/sectionRaycastAabb.ts +30 -18
- package/src/three/shaderCubeMesh.ts +6 -17
- package/src/three/shaders/cubeBlockShader.ts +85 -96
- package/src/three/shaders/legacyBlockShader.ts +21 -43
- package/src/three/shaders/textureIndexMapping.ts +89 -95
- package/src/three/shaders/tintPalette.ts +156 -170
- package/src/three/signTextureCache.ts +9 -12
- package/src/three/skyboxRenderer.ts +62 -70
- package/src/three/tests/chunkMeshManagerLegacy.test.ts +133 -25
- package/src/three/tests/cubeDrawSpans.test.ts +55 -25
- package/src/three/tests/globalBlockBuffer.test.ts +217 -0
- package/src/three/tests/globalLegacyBuffer.test.ts +460 -58
- package/src/three/tests/legacyMultiDraw.test.ts +88 -0
- package/src/three/tests/pr3PerFrameCpuCuts.test.ts +370 -0
- package/src/three/tests/signTextureCache.test.ts +4 -4
- package/src/three/threeJsMedia.ts +55 -72
- package/src/three/threeJsParticles.ts +32 -41
- package/src/three/threeJsSound.ts +3 -3
- package/src/three/threeJsUtils.ts +3 -3
- package/src/three/threeWorker.ts +2 -2
- package/src/three/waypointSprite.ts +55 -82
- package/src/three/waypoints.ts +20 -23
- package/src/three/world/cursorBlock.ts +25 -12
- package/src/three/world/vr.ts +11 -17
- package/src/three/worldGeometryExport.ts +15 -34
- package/src/three/worldRendererThree.ts +131 -133
- package/src/wasm-mesher/bridge/convertChunk.ts +3 -9
- package/src/wasm-mesher/bridge/render-from-wasm.ts +204 -229
- package/src/wasm-mesher/bridge/shaderCubeBridge.ts +26 -67
- package/src/wasm-mesher/tests/cullingRegression.test.ts +307 -0
- package/src/wasm-mesher/tests/heightmapParity.test.ts +8 -18
- package/src/wasm-mesher/tests/mesherWasmConversionCache.test.ts +2 -2
- package/src/wasm-mesher/tests/sectionRaycastAabb.test.ts +17 -4
- package/src/wasm-mesher/tests/shaderCubeInstances.test.ts +103 -141
- package/src/wasm-mesher/tests/splitColumnWasmOutput.test.ts +14 -22
- package/src/wasm-mesher/worker/mesherWasm.ts +150 -141
- package/src/wasm-mesher/worker/mesherWasmConversionCache.ts +2 -8
- package/src/wasm-mesher/worker/mesherWasmLightDirty.test.ts +1 -3
- package/src/wasm-mesher/worker/mesherWasmLightDirty.ts +1 -5
- package/src/wasm-mesher/worker/mesherWasmRequestTracker.ts +42 -42
- package/src/worldView/worldView.spiral.test.ts +1 -1
- package/src/worldView/worldView.ts +34 -39
- package/src/worldView/worldViewWorkerBridge.test.ts +4 -4
|
@@ -67,7 +67,7 @@ export class FireworksRenderer {
|
|
|
67
67
|
0xff_a5_00, // Orange
|
|
68
68
|
0x80_00_80, // Purple
|
|
69
69
|
0xff_c0_cb, // Pink
|
|
70
|
-
0xff_ff_ff
|
|
70
|
+
0xff_ff_ff // White
|
|
71
71
|
]
|
|
72
72
|
|
|
73
73
|
for (const color of colors) {
|
|
@@ -122,14 +122,14 @@ export class FireworksRenderer {
|
|
|
122
122
|
|
|
123
123
|
// DEBUG: Log first few particles to understand positioning
|
|
124
124
|
if (i < 5) {
|
|
125
|
-
console.log(
|
|
125
|
+
console.log(
|
|
126
|
+
`Debug: Particle ${i} - Initial pos: (${position.x}, ${position.y}, ${position.z}), Velocity: (${velocity.x.toFixed(3)}, ${velocity.y.toFixed(3)}, ${velocity.z.toFixed(3)}), Distance: ${distance.toFixed(3)}`
|
|
127
|
+
)
|
|
126
128
|
console.log(`Debug: Particle ${i} - Velocity magnitude: ${velocity.toString()}, Expected max: ${(FireworksRenderer.VELOCITY_FACTOR * size).toFixed(3)}`)
|
|
127
129
|
}
|
|
128
130
|
|
|
129
131
|
// Create particle mesh
|
|
130
|
-
const material = color === undefined
|
|
131
|
-
? this.getRandomMaterial().clone()
|
|
132
|
-
: new THREE.MeshBasicMaterial({ color, transparent: true, opacity: 1 })
|
|
132
|
+
const material = color === undefined ? this.getRandomMaterial().clone() : new THREE.MeshBasicMaterial({ color, transparent: true, opacity: 1 })
|
|
133
133
|
|
|
134
134
|
const mesh = new THREE.Mesh(this.particleGeometry, material)
|
|
135
135
|
|
|
@@ -142,7 +142,9 @@ export class FireworksRenderer {
|
|
|
142
142
|
|
|
143
143
|
// DEBUG: Add particle size info to console
|
|
144
144
|
if (i < 5) {
|
|
145
|
-
console.log(
|
|
145
|
+
console.log(
|
|
146
|
+
`Debug: Particle ${i} mesh created at (${mesh.position.x}, ${mesh.position.y}, ${mesh.position.z}) with size ${FireworksRenderer.DEFAULT_PARTICLE_SIZE}`
|
|
147
|
+
)
|
|
146
148
|
}
|
|
147
149
|
|
|
148
150
|
const particle: FireworkParticle = {
|
|
@@ -168,8 +170,12 @@ export class FireworksRenderer {
|
|
|
168
170
|
}
|
|
169
171
|
|
|
170
172
|
this.explosions.set(explosionId, explosion)
|
|
171
|
-
console.log(
|
|
172
|
-
|
|
173
|
+
console.log(
|
|
174
|
+
`Debug: Created firework explosion ${explosionId} at (${position.x}, ${position.y}, ${position.z}) with ${particleCount} particles, duration ${duration}ms`
|
|
175
|
+
)
|
|
176
|
+
console.log(
|
|
177
|
+
`Debug: Expected behavior - All particles should start at explosion center and move outward with velocities up to ${(FireworksRenderer.VELOCITY_FACTOR * size).toFixed(3)} units/second`
|
|
178
|
+
)
|
|
173
179
|
console.log(`Debug: Debug sphere radius: ${(0.5 * size).toFixed(3)}, Particle size: ${FireworksRenderer.DEFAULT_PARTICLE_SIZE}`)
|
|
174
180
|
return explosion
|
|
175
181
|
}
|
|
@@ -199,11 +205,7 @@ export class FireworksRenderer {
|
|
|
199
205
|
|
|
200
206
|
// Get camera direction to face the explosion plane towards camera
|
|
201
207
|
const cameraPos = this.worldRenderer.getCameraPosition()
|
|
202
|
-
const directionToCamera = new Vec3(
|
|
203
|
-
cameraPos.x - position.x,
|
|
204
|
-
cameraPos.y - position.y,
|
|
205
|
-
cameraPos.z - position.z
|
|
206
|
-
).normalize()
|
|
208
|
+
const directionToCamera = new Vec3(cameraPos.x - position.x, cameraPos.y - position.y, cameraPos.z - position.z).normalize()
|
|
207
209
|
|
|
208
210
|
// Create a plane perpendicular to the camera direction
|
|
209
211
|
for (let i = 0; i < particleCount; i++) {
|
|
@@ -211,11 +213,7 @@ export class FireworksRenderer {
|
|
|
211
213
|
const distance = Math.sqrt(Math.random()) * FireworksRenderer.VELOCITY_FACTOR * size
|
|
212
214
|
|
|
213
215
|
// Create velocity in the plane perpendicular to camera direction
|
|
214
|
-
const velocity = new Vec3(
|
|
215
|
-
distance * Math.cos(angle),
|
|
216
|
-
distance * Math.sin(angle),
|
|
217
|
-
0
|
|
218
|
-
)
|
|
216
|
+
const velocity = new Vec3(distance * Math.cos(angle), distance * Math.sin(angle), 0)
|
|
219
217
|
|
|
220
218
|
// Rotate the velocity to face the camera
|
|
221
219
|
// This is a simplified rotation - in a full implementation you'd use quaternions
|
|
@@ -227,13 +225,13 @@ export class FireworksRenderer {
|
|
|
227
225
|
|
|
228
226
|
// DEBUG: Log first few particles
|
|
229
227
|
if (i < 5) {
|
|
230
|
-
console.log(
|
|
228
|
+
console.log(
|
|
229
|
+
`Debug: Camera-facing Particle ${i} - Velocity: (${rotatedVelocity.x.toFixed(3)}, ${rotatedVelocity.y.toFixed(3)}, ${rotatedVelocity.z.toFixed(3)}), Distance: ${distance.toFixed(3)}`
|
|
230
|
+
)
|
|
231
231
|
}
|
|
232
232
|
|
|
233
233
|
// Create particle mesh
|
|
234
|
-
const material = color === undefined
|
|
235
|
-
? this.getRandomMaterial().clone()
|
|
236
|
-
: new THREE.MeshBasicMaterial({ color, transparent: true, opacity: 1 })
|
|
234
|
+
const material = color === undefined ? this.getRandomMaterial().clone() : new THREE.MeshBasicMaterial({ color, transparent: true, opacity: 1 })
|
|
237
235
|
|
|
238
236
|
const mesh = new THREE.Mesh(this.particleGeometry, material)
|
|
239
237
|
|
|
@@ -267,7 +265,9 @@ export class FireworksRenderer {
|
|
|
267
265
|
}
|
|
268
266
|
|
|
269
267
|
this.explosions.set(explosionId, explosion)
|
|
270
|
-
console.log(
|
|
268
|
+
console.log(
|
|
269
|
+
`Debug: Created camera-facing firework explosion ${explosionId} at (${position.x}, ${position.y}, ${position.z}) with ${particleCount} particles, duration ${duration}ms`
|
|
270
|
+
)
|
|
271
271
|
return explosion
|
|
272
272
|
}
|
|
273
273
|
|
|
@@ -311,9 +311,8 @@ export class FireworksRenderer {
|
|
|
311
311
|
|
|
312
312
|
private updateParticle(particle: FireworkParticle, deltaTime: number, explosionDuration: number) {
|
|
313
313
|
// DEBUG: Log first few updates to see what's happening
|
|
314
|
-
const isFirstParticle =
|
|
315
|
-
particle.mesh.position.y === particle.position.y &&
|
|
316
|
-
particle.mesh.position.z === particle.position.z
|
|
314
|
+
const isFirstParticle =
|
|
315
|
+
particle.mesh.position.x === particle.position.x && particle.mesh.position.y === particle.position.y && particle.mesh.position.z === particle.position.z
|
|
317
316
|
|
|
318
317
|
if (isFirstParticle && particle.life > 0.95) {
|
|
319
318
|
console.log(`Debug: First particle update - DeltaTime: ${deltaTime}ms (${(deltaTime / 1000).toFixed(3)}s), Duration: ${explosionDuration}`)
|
|
@@ -342,7 +341,9 @@ export class FireworksRenderer {
|
|
|
342
341
|
// DEBUG: Log movement for first few frames
|
|
343
342
|
if (isFirstParticle && oldLife > 0.95) {
|
|
344
343
|
const movement = particle.position.distanceTo(oldPos)
|
|
345
|
-
console.log(
|
|
344
|
+
console.log(
|
|
345
|
+
`Debug: Particle moved ${movement.toFixed(4)} units in ${(deltaTime / 1000).toFixed(3)}s, new pos: (${particle.position.x.toFixed(3)}, ${particle.position.y.toFixed(3)}, ${particle.position.z.toFixed(3)})`
|
|
346
|
+
)
|
|
346
347
|
console.log(`Debug: Life: ${oldLife.toFixed(3)} -> ${particle.life.toFixed(3)}, Opacity: ${opacity.toFixed(3)}`)
|
|
347
348
|
}
|
|
348
349
|
|
|
@@ -354,7 +355,8 @@ export class FireworksRenderer {
|
|
|
354
355
|
const deltaTime = 16.67 // Assume ~60fps for physics calculations
|
|
355
356
|
|
|
356
357
|
// DEBUG: Log render calls occasionally
|
|
357
|
-
if (this.explosions.size > 0 && Math.random() < 0.01) {
|
|
358
|
+
if (this.explosions.size > 0 && Math.random() < 0.01) {
|
|
359
|
+
// ~1% chance
|
|
358
360
|
console.log(`Debug: Render called with ${this.explosions.size} explosions, deltaTime: ${deltaTime}`)
|
|
359
361
|
}
|
|
360
362
|
|
|
@@ -371,7 +373,8 @@ export class FireworksRenderer {
|
|
|
371
373
|
}
|
|
372
374
|
|
|
373
375
|
// DEBUG: Log explosion status every 2 seconds
|
|
374
|
-
if (elapsed % 2000 < 16) {
|
|
376
|
+
if (elapsed % 2000 < 16) {
|
|
377
|
+
// Every ~2 seconds
|
|
375
378
|
console.log(`Debug: Explosion ${explosionId} - Elapsed: ${elapsed}ms, Particles alive: ${explosion.particles.length}`)
|
|
376
379
|
}
|
|
377
380
|
|