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.
Files changed (200) hide show
  1. package/README.md +29 -25
  2. package/dist/mesher.js +36 -36
  3. package/dist/mesher.js.map +4 -4
  4. package/dist/mesherWasm.js +217 -217
  5. package/dist/minecraft-renderer.js +32 -32
  6. package/dist/minecraft-renderer.js.meta.json +1 -1
  7. package/dist/threeWorker.js +415 -415
  8. package/package.json +5 -2
  9. package/src/bundler/bundlePrepare.ts +3 -8
  10. package/src/graphicsBackend/appViewer.ts +10 -7
  11. package/src/graphicsBackend/config.ts +1 -5
  12. package/src/graphicsBackend/playerState.ts +35 -34
  13. package/src/graphicsBackend/preloadWorkers.ts +43 -41
  14. package/src/graphicsBackend/rendererDefaultOptions.ts +68 -70
  15. package/src/graphicsBackend/rendererOptionsSync.ts +24 -50
  16. package/src/graphicsBackend/types.ts +2 -2
  17. package/src/index.ts +6 -27
  18. package/src/lib/DebugGui.ts +34 -31
  19. package/src/lib/animationController.ts +9 -9
  20. package/src/lib/bakeLegacyLight.ts +1 -6
  21. package/src/lib/bindAbortableListener.test.ts +32 -12
  22. package/src/lib/bindAbortableListener.ts +14 -6
  23. package/src/lib/blockEntityLightRegistry.ts +11 -20
  24. package/src/lib/blockEntityLighting.test.ts +1 -6
  25. package/src/lib/blockEntityLighting.ts +5 -5
  26. package/src/lib/buildSharedConfig.mjs +4 -4
  27. package/src/lib/buildWorkerMcDataIndexes.test.ts +4 -4
  28. package/src/lib/buildWorkerMcDataIndexes.ts +11 -19
  29. package/src/lib/cameraBobbing.ts +1 -1
  30. package/src/lib/canvas2DOverlay.example.ts +13 -33
  31. package/src/lib/canvas2DOverlay.quickstart.ts +24 -54
  32. package/src/lib/canvas2DOverlay.ts +28 -47
  33. package/src/lib/cleanupDecorator.ts +2 -2
  34. package/src/lib/createPlayerObject.test.ts +2 -7
  35. package/src/lib/createPlayerObject.ts +18 -25
  36. package/src/lib/frameTimingCollector.ts +2 -5
  37. package/src/lib/guiRenderer.ts +57 -42
  38. package/src/lib/items.ts +15 -9
  39. package/src/lib/mesherlogReader.ts +5 -6
  40. package/src/lib/simpleUtils.ts +5 -5
  41. package/src/lib/skyLight.ts +3 -3
  42. package/src/lib/smoothSwitcher.ts +11 -18
  43. package/src/lib/ui/newStats.ts +10 -12
  44. package/src/lib/utils/proxy.ts +7 -1
  45. package/src/lib/utils/skins.ts +4 -4
  46. package/src/lib/utils.ts +1 -1
  47. package/src/lib/workerMessageSanitize.ts +5 -12
  48. package/src/lib/workerProxy.ts +52 -42
  49. package/src/lib/workerSyncOps.test.ts +58 -41
  50. package/src/lib/worldrendererCommon.reconfigure.test.ts +24 -21
  51. package/src/lib/worldrendererCommon.removeColumn.test.ts +11 -13
  52. package/src/lib/worldrendererCommon.ts +338 -211
  53. package/src/mesher-legacy/mesher.ts +9 -4
  54. package/src/mesher-legacy/test/a.ts +1 -1
  55. package/src/mesher-legacy/test/mesherTester.ts +2 -2
  56. package/src/mesher-legacy/test/playground.ts +1 -1
  57. package/src/mesher-legacy/test/run/test-js.ts +1 -1
  58. package/src/mesher-legacy/test/snapshotUtils.ts +3 -8
  59. package/src/mesher-legacy/test/test-perf.ts +1 -1
  60. package/src/mesher-legacy/test/tests.test.ts +2 -2
  61. package/src/mesher-shared/blockEntityMetadata.test.ts +7 -5
  62. package/src/mesher-shared/blockEntityMetadata.ts +28 -19
  63. package/src/mesher-shared/blockPropertiesForMeshing.ts +2 -2
  64. package/src/mesher-shared/computeHeightmap.ts +2 -4
  65. package/src/mesher-shared/exportedGeometryTypes.ts +3 -3
  66. package/src/mesher-shared/faceOcclusion.ts +324 -0
  67. package/src/mesher-shared/models.ts +80 -131
  68. package/src/mesher-shared/modelsGeometryCommon.ts +30 -15
  69. package/src/mesher-shared/shared.ts +46 -46
  70. package/src/mesher-shared/standaloneRenderer.ts +40 -44
  71. package/src/mesher-shared/tests/faceOcclusion.test.ts +179 -0
  72. package/src/mesher-shared/tests/liquidQuadInvariant.test.ts +12 -8
  73. package/src/mesher-shared/vertexShading.ts +2 -11
  74. package/src/mesher-shared/world.ts +19 -19
  75. package/src/mesher-shared/worldLighting.test.ts +2 -2
  76. package/src/performanceMonitor/PerformanceMonitor.ts +4 -13
  77. package/src/performanceMonitor/formatPerformanceFactorsDebug.ts +2 -2
  78. package/src/performanceMonitor/index.ts +1 -5
  79. package/src/performanceMonitor/types.ts +1 -1
  80. package/src/playerState/playerState.ts +55 -50
  81. package/src/playerState/types.ts +2 -8
  82. package/src/playground/allEntitiesDebug.ts +19 -16
  83. package/src/playground/baseScene.ts +29 -32
  84. package/src/playground/mobileControls.tsx +133 -129
  85. package/src/playground/playground.html +76 -73
  86. package/src/playground/playground.ts +14 -1
  87. package/src/playground/playgroundUi.tsx +100 -74
  88. package/src/playground/reactUtils.ts +3 -7
  89. package/src/playground/scenes/entities.ts +10 -7
  90. package/src/playground/scenes/frequentUpdates.ts +5 -5
  91. package/src/playground/scenes/geometryExport.ts +6 -20
  92. package/src/playground/scenes/highPosEntityUpdates.ts +2 -10
  93. package/src/playground/scenes/index.ts +1 -1
  94. package/src/playground/scenes/lightingStarfield.ts +18 -12
  95. package/src/playground/scenes/main.ts +15 -11
  96. package/src/playground/scenes/partialBlockCulling.ts +31 -0
  97. package/src/playground/scenes/railsCobweb.ts +1 -1
  98. package/src/playground/scenes/rotationIssue.ts +1 -1
  99. package/src/playground/scenes/slabsOptimization.ts +1 -2
  100. package/src/playground/scenes/transparencyIssue.ts +1 -1
  101. package/src/playground/shared.ts +2 -2
  102. package/src/resourcesManager/resourcesManager.ts +29 -54
  103. package/src/resourcesManager/resourcesManager.worker.test.ts +6 -10
  104. package/src/shims/minecraftData.ts +70 -24
  105. package/src/sign-renderer/index.html +10 -12
  106. package/src/sign-renderer/index.ts +29 -29
  107. package/src/sign-renderer/playground.ts +22 -15
  108. package/src/sign-renderer/tests.test.ts +16 -13
  109. package/src/sign-renderer/vite.config.ts +2 -2
  110. package/src/three/appShared.ts +46 -25
  111. package/src/three/bannerRenderer.ts +33 -61
  112. package/src/three/cameraShake.ts +15 -6
  113. package/src/three/chunkMeshManager.ts +329 -301
  114. package/src/three/cinimaticScript.ts +26 -15
  115. package/src/three/cubeDrawSpans.ts +27 -37
  116. package/src/three/cubeMultiDraw.ts +9 -22
  117. package/src/three/documentRenderer.ts +15 -18
  118. package/src/three/entities.ts +175 -150
  119. package/src/three/entity/EntityMesh.ts +114 -108
  120. package/src/three/entity/animations.js +3 -3
  121. package/src/three/entity/armorModels.ts +15 -15
  122. package/src/three/entity/gltfAnimationUtils.ts +2 -5
  123. package/src/three/fireworks.ts +34 -32
  124. package/src/three/fireworksRenderer.ts +32 -29
  125. package/src/three/globalBlockBuffer.ts +174 -99
  126. package/src/three/globalLegacyBuffer.ts +465 -136
  127. package/src/three/graphicsBackendBase.ts +19 -25
  128. package/src/three/graphicsBackendOffThread.ts +12 -15
  129. package/src/three/hand.ts +21 -21
  130. package/src/three/handLegacy.ts +3 -13
  131. package/src/three/holdingBlock.ts +116 -79
  132. package/src/three/holdingBlockFactory.ts +1 -4
  133. package/src/three/holdingBlockItemIdentity.test.ts +25 -17
  134. package/src/three/holdingBlockItemIdentity.ts +9 -6
  135. package/src/three/holdingBlockLegacy.ts +113 -132
  136. package/src/three/itemMesh.ts +20 -29
  137. package/src/three/legacyMultiDraw.ts +93 -0
  138. package/src/three/legacySectionCull.ts +8 -14
  139. package/src/three/menuBackground/activeView.ts +1 -4
  140. package/src/three/menuBackground/assetUrl.ts +1 -1
  141. package/src/three/menuBackground/classic.ts +4 -12
  142. package/src/three/menuBackground/gpuPreference.ts +1 -3
  143. package/src/three/menuBackground/index.ts +2 -11
  144. package/src/three/menuBackground/renderer.ts +1 -5
  145. package/src/three/menuBackground/types.ts +1 -4
  146. package/src/three/menuBackground/v2.ts +196 -96
  147. package/src/three/menuBackground/v2Meta.ts +3 -3
  148. package/src/three/menuBackground/worldBlocks.ts +37 -35
  149. package/src/three/modules/blockBreakParticles.ts +59 -28
  150. package/src/three/modules/cameraBobbing.ts +3 -6
  151. package/src/three/modules/index.ts +1 -1
  152. package/src/three/modules/rain.ts +10 -23
  153. package/src/three/modules/sciFiWorldReveal.ts +11 -25
  154. package/src/three/modules/starfield.ts +7 -13
  155. package/src/three/renderSlot.ts +28 -16
  156. package/src/three/rendererModuleSystem.ts +1 -3
  157. package/src/three/sceneOrigin.ts +96 -33
  158. package/src/three/sectionRaycastAabb.ts +30 -18
  159. package/src/three/shaderCubeMesh.ts +6 -17
  160. package/src/three/shaders/cubeBlockShader.ts +85 -96
  161. package/src/three/shaders/legacyBlockShader.ts +21 -43
  162. package/src/three/shaders/textureIndexMapping.ts +89 -95
  163. package/src/three/shaders/tintPalette.ts +156 -170
  164. package/src/three/signTextureCache.ts +9 -12
  165. package/src/three/skyboxRenderer.ts +62 -70
  166. package/src/three/tests/chunkMeshManagerLegacy.test.ts +133 -25
  167. package/src/three/tests/cubeDrawSpans.test.ts +55 -25
  168. package/src/three/tests/globalBlockBuffer.test.ts +217 -0
  169. package/src/three/tests/globalLegacyBuffer.test.ts +460 -58
  170. package/src/three/tests/legacyMultiDraw.test.ts +88 -0
  171. package/src/three/tests/pr3PerFrameCpuCuts.test.ts +370 -0
  172. package/src/three/tests/signTextureCache.test.ts +4 -4
  173. package/src/three/threeJsMedia.ts +55 -72
  174. package/src/three/threeJsParticles.ts +32 -41
  175. package/src/three/threeJsSound.ts +3 -3
  176. package/src/three/threeJsUtils.ts +3 -3
  177. package/src/three/threeWorker.ts +2 -2
  178. package/src/three/waypointSprite.ts +55 -82
  179. package/src/three/waypoints.ts +20 -23
  180. package/src/three/world/cursorBlock.ts +25 -12
  181. package/src/three/world/vr.ts +11 -17
  182. package/src/three/worldGeometryExport.ts +15 -34
  183. package/src/three/worldRendererThree.ts +131 -133
  184. package/src/wasm-mesher/bridge/convertChunk.ts +3 -9
  185. package/src/wasm-mesher/bridge/render-from-wasm.ts +204 -229
  186. package/src/wasm-mesher/bridge/shaderCubeBridge.ts +26 -67
  187. package/src/wasm-mesher/tests/cullingRegression.test.ts +307 -0
  188. package/src/wasm-mesher/tests/heightmapParity.test.ts +8 -18
  189. package/src/wasm-mesher/tests/mesherWasmConversionCache.test.ts +2 -2
  190. package/src/wasm-mesher/tests/sectionRaycastAabb.test.ts +17 -4
  191. package/src/wasm-mesher/tests/shaderCubeInstances.test.ts +103 -141
  192. package/src/wasm-mesher/tests/splitColumnWasmOutput.test.ts +14 -22
  193. package/src/wasm-mesher/worker/mesherWasm.ts +150 -141
  194. package/src/wasm-mesher/worker/mesherWasmConversionCache.ts +2 -8
  195. package/src/wasm-mesher/worker/mesherWasmLightDirty.test.ts +1 -3
  196. package/src/wasm-mesher/worker/mesherWasmLightDirty.ts +1 -5
  197. package/src/wasm-mesher/worker/mesherWasmRequestTracker.ts +42 -42
  198. package/src/worldView/worldView.spiral.test.ts +1 -1
  199. package/src/worldView/worldView.ts +34 -39
  200. 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, y: number, z: number },
21
- cameraRotation: { pitch: number, yaw: 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
- ? Array.from(skyAttr.array as Float32Array)
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, y: number, z: number },
134
- cameraRotation: { pitch: number, yaw: 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
- worldRenderer: WorldRendererThree,
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