minecraft-renderer 0.1.79 → 0.1.81
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 -26
- package/dist/mesher.js +36 -36
- package/dist/mesher.js.map +4 -4
- package/dist/mesherWasm.js +217 -217
- package/dist/minecraft-renderer.js +66 -66
- package/dist/minecraft-renderer.js.meta.json +1 -1
- package/dist/threeWorker.js +450 -450
- 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 +349 -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/cameraCollisionBlockCache.ts +156 -0
- package/src/three/cameraCollisionSolidity.ts +50 -0
- package/src/three/cameraShake.ts +15 -6
- package/src/three/chunkMeshManager.ts +223 -390
- 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 +167 -100
- package/src/three/globalLegacyBuffer.ts +248 -264
- 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 +10 -16
- 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 +24 -110
- 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 +34 -64
- 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 +300 -41
- package/src/three/tests/legacyMultiDraw.test.ts +8 -29
- package/src/three/tests/pr3PerFrameCpuCuts.test.ts +106 -29
- package/src/three/tests/signTextureCache.test.ts +4 -4
- package/src/three/thirdPersonVoxelRaycast.ts +120 -0
- 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 +144 -166
- 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/cameraCollisionBlockCache.test.ts +82 -0
- 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 +1 -93
- package/src/wasm-mesher/tests/shaderCubeInstances.test.ts +103 -141
- package/src/wasm-mesher/tests/splitColumnWasmOutput.test.ts +14 -22
- package/src/wasm-mesher/tests/thirdPersonVoxelRaycast.test.ts +63 -0
- 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
|
@@ -17,8 +17,8 @@ const GEOMETRY_EXPORT_GROUP_NAME = 'geometry-export-root'
|
|
|
17
17
|
*/
|
|
18
18
|
export function exportWorldGeometry(
|
|
19
19
|
worldRenderer: WorldRendererThree,
|
|
20
|
-
cameraPosition: { x: number
|
|
21
|
-
cameraRotation: { pitch: number
|
|
20
|
+
cameraPosition: { x: number; y: number; z: number },
|
|
21
|
+
cameraRotation: { pitch: number; yaw: number },
|
|
22
22
|
includeTexture = false
|
|
23
23
|
): ExportedWorldGeometry {
|
|
24
24
|
const sections: ExportedSection[] = []
|
|
@@ -59,12 +59,8 @@ export function exportWorldGeometry(
|
|
|
59
59
|
const vertOffset = positions.length / 3
|
|
60
60
|
const vertCount = positionAttr.count
|
|
61
61
|
const rawColors = Array.from(colorAttr.array as Float32Array)
|
|
62
|
-
const rawSky = skyAttr
|
|
63
|
-
|
|
64
|
-
: new Array(vertCount).fill(1)
|
|
65
|
-
const rawBlock = blockAttr
|
|
66
|
-
? Array.from(blockAttr.array as Float32Array)
|
|
67
|
-
: new Array(vertCount).fill(0)
|
|
62
|
+
const rawSky = skyAttr ? Array.from(skyAttr.array as Float32Array) : new Array(vertCount).fill(1)
|
|
63
|
+
const rawBlock = blockAttr ? Array.from(blockAttr.array as Float32Array) : new Array(vertCount).fill(0)
|
|
68
64
|
positions.push(...Array.from(positionAttr.array))
|
|
69
65
|
if (normalAttr) normals.push(...Array.from(normalAttr.array))
|
|
70
66
|
colors.push(...bakeLegacyVertexColors(rawColors, rawSky, rawBlock, skyLevel))
|
|
@@ -84,7 +80,7 @@ export function exportWorldGeometry(
|
|
|
84
80
|
position: {
|
|
85
81
|
x: sectionObject.worldX ?? 0,
|
|
86
82
|
y: sectionObject.worldY ?? 0,
|
|
87
|
-
z: sectionObject.worldZ ?? 0
|
|
83
|
+
z: sectionObject.worldZ ?? 0
|
|
88
84
|
},
|
|
89
85
|
geometry: {
|
|
90
86
|
positions,
|
|
@@ -93,8 +89,8 @@ export function exportWorldGeometry(
|
|
|
93
89
|
skyLights,
|
|
94
90
|
blockLights,
|
|
95
91
|
uvs,
|
|
96
|
-
indices
|
|
97
|
-
}
|
|
92
|
+
indices
|
|
93
|
+
}
|
|
98
94
|
})
|
|
99
95
|
}
|
|
100
96
|
|
|
@@ -130,8 +126,8 @@ export function exportWorldGeometry(
|
|
|
130
126
|
*/
|
|
131
127
|
export function downloadWorldGeometry(
|
|
132
128
|
worldRenderer: WorldRendererThree,
|
|
133
|
-
cameraPosition: { x: number
|
|
134
|
-
cameraRotation: { pitch: number
|
|
129
|
+
cameraPosition: { x: number; y: number; z: number },
|
|
130
|
+
cameraRotation: { pitch: number; yaw: number },
|
|
135
131
|
filename = 'world-geometry.json',
|
|
136
132
|
includeTexture = false
|
|
137
133
|
) {
|
|
@@ -164,8 +160,7 @@ export async function loadWorldGeometryFromUrl(url: string): Promise<ExportedWor
|
|
|
164
160
|
* Returns an array of mesh groups that can be added to a scene
|
|
165
161
|
*/
|
|
166
162
|
function shaderMaterialForExport(legacyMaterial: THREE.Material, skyLevel: number): THREE.ShaderMaterial | null {
|
|
167
|
-
const atlas = (legacyMaterial as THREE.MeshBasicMaterial).map
|
|
168
|
-
?? (legacyMaterial as THREE.MeshLambertMaterial).map
|
|
163
|
+
const atlas = (legacyMaterial as THREE.MeshBasicMaterial).map ?? (legacyMaterial as THREE.MeshLambertMaterial).map
|
|
169
164
|
if (!atlas) return null
|
|
170
165
|
const shaderMat = createCubeBlockMaterial()
|
|
171
166
|
shaderMat.uniforms.u_atlas.value = atlas
|
|
@@ -182,7 +177,7 @@ export function createMeshesFromExport(
|
|
|
182
177
|
exportData: ExportedWorldGeometry,
|
|
183
178
|
material: THREE.Material,
|
|
184
179
|
shaderMaterial?: THREE.ShaderMaterial | null,
|
|
185
|
-
skyLevel = 1
|
|
180
|
+
skyLevel = 1
|
|
186
181
|
): THREE.Group[] {
|
|
187
182
|
const groups: THREE.Group[] = []
|
|
188
183
|
const resolvedShaderMat = shaderMaterial ?? shaderMaterialForExport(material, skyLevel)
|
|
@@ -200,12 +195,7 @@ export function createMeshesFromExport(
|
|
|
200
195
|
}
|
|
201
196
|
if (section.geometry.colors.length) {
|
|
202
197
|
const baked = section.geometry.skyLights?.length
|
|
203
|
-
? bakeLegacyVertexColors(
|
|
204
|
-
section.geometry.colors,
|
|
205
|
-
section.geometry.skyLights,
|
|
206
|
-
section.geometry.blockLights,
|
|
207
|
-
skyLevel,
|
|
208
|
-
)
|
|
198
|
+
? bakeLegacyVertexColors(section.geometry.colors, section.geometry.skyLights, section.geometry.blockLights, skyLevel)
|
|
209
199
|
: section.geometry.colors
|
|
210
200
|
geometry.setAttribute('color', new THREE.Float32BufferAttribute(baked, 3))
|
|
211
201
|
}
|
|
@@ -275,15 +265,8 @@ const disposeGeometryExportGroup = (group: THREE.Object3D) => {
|
|
|
275
265
|
* Apply exported geometry to an existing WorldRenderer instance.
|
|
276
266
|
* Replaces any previously imported geometry export group.
|
|
277
267
|
*/
|
|
278
|
-
export async function applyWorldGeometryExport(
|
|
279
|
-
|
|
280
|
-
exportData: ExportedWorldGeometry
|
|
281
|
-
): Promise<number> {
|
|
282
|
-
const {
|
|
283
|
-
scene,
|
|
284
|
-
renderUpdateEmitter,
|
|
285
|
-
material: rendererMaterial
|
|
286
|
-
} = worldRenderer
|
|
268
|
+
export async function applyWorldGeometryExport(worldRenderer: WorldRendererThree, exportData: ExportedWorldGeometry): Promise<number> {
|
|
269
|
+
const { scene, renderUpdateEmitter, material: rendererMaterial } = worldRenderer
|
|
287
270
|
const existingGroup = scene.getObjectByName(GEOMETRY_EXPORT_GROUP_NAME)
|
|
288
271
|
if (existingGroup) {
|
|
289
272
|
scene.remove(existingGroup)
|
|
@@ -306,9 +289,7 @@ export async function applyWorldGeometryExport(
|
|
|
306
289
|
}
|
|
307
290
|
|
|
308
291
|
const skyLevel = calculateSkyLightSimple(worldRenderer.timeOfTheDay) / 15
|
|
309
|
-
const shaderMat = exportData.sections.some(s => (s.shaderCubes?.count ?? 0) > 0)
|
|
310
|
-
? shaderMaterialForExport(material, skyLevel)
|
|
311
|
-
: null
|
|
292
|
+
const shaderMat = exportData.sections.some(s => (s.shaderCubes?.count ?? 0) > 0) ? shaderMaterialForExport(material, skyLevel) : null
|
|
312
293
|
const groups = createMeshesFromExport(exportData, material, shaderMat, skyLevel)
|
|
313
294
|
const container = new THREE.Group()
|
|
314
295
|
container.name = GEOMETRY_EXPORT_GROUP_NAME
|