minecraft-renderer 0.1.72 → 0.1.73
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 +1 -1
- package/dist/mesher.js +81 -81
- package/dist/mesher.js.map +3 -3
- package/dist/mesherWasm.js +1183 -943
- package/dist/minecraft-renderer.js +249 -78
- package/dist/minecraft-renderer.js.meta.json +1 -1
- package/dist/threeWorker.js +1732 -1001
- package/package.json +3 -3
- package/src/graphicsBackend/rendererDefaultOptions.ts +2 -7
- package/src/graphicsBackend/rendererOptionsSync.ts +1 -1
- package/src/lib/bakeLegacyLight.ts +17 -0
- package/src/lib/blockEntityLightRegistry.test.ts +18 -0
- package/src/lib/blockEntityLightRegistry.ts +75 -0
- package/src/lib/blockEntityLighting.test.ts +30 -0
- package/src/lib/blockEntityLighting.ts +53 -0
- package/src/lib/worldrendererCommon.ts +14 -6
- package/src/mesher-shared/blockEntityMetadata.test.ts +33 -0
- package/src/mesher-shared/blockEntityMetadata.ts +19 -3
- package/src/mesher-shared/exportedGeometryTypes.ts +11 -0
- package/src/mesher-shared/models.ts +161 -92
- package/src/mesher-shared/shared.ts +15 -4
- package/src/mesher-shared/tests/liquidQuadInvariant.test.ts +40 -0
- package/src/mesher-shared/world.ts +12 -0
- package/src/mesher-shared/worldLighting.test.ts +54 -0
- package/src/playground/baseScene.ts +1 -1
- package/src/three/bannerRenderer.ts +10 -3
- package/src/three/chunkMeshManager.ts +663 -69
- package/src/three/cubeDrawSpans.ts +74 -0
- package/src/three/cubeMultiDraw.ts +119 -0
- package/src/three/documentRenderer.ts +0 -2
- package/src/three/entities.ts +5 -6
- package/src/three/entity/EntityMesh.ts +7 -5
- package/src/three/entity/gltfAnimationUtils.ts +5 -3
- package/src/three/globalBlockBuffer.ts +208 -12
- package/src/three/globalLegacyBuffer.ts +701 -0
- package/src/three/itemMesh.ts +5 -2
- package/src/three/legacySectionCull.ts +85 -0
- package/src/three/modules/sciFiWorldReveal.ts +347 -703
- package/src/three/modules/starfield.ts +3 -2
- package/src/three/sectionRaycastAabb.ts +25 -0
- package/src/three/shaders/cubeBlockShader.ts +80 -17
- package/src/three/shaders/legacyBlockShader.ts +292 -0
- package/src/three/skyboxRenderer.ts +1 -1
- package/src/three/tests/chunkMeshManagerLegacy.test.ts +286 -0
- package/src/three/tests/cubeDrawSpans.test.ts +73 -0
- package/src/three/tests/globalLegacyBuffer.test.ts +360 -0
- package/src/three/tests/legacySectionCull.test.ts +80 -0
- package/src/three/tests/signTextureCache.test.ts +83 -0
- package/src/three/threeJsMedia.ts +2 -2
- package/src/three/waypointSprite.ts +2 -2
- package/src/three/world/cursorBlock.ts +1 -0
- package/src/three/world/vr.ts +2 -2
- package/src/three/worldGeometryExport.ts +83 -26
- package/src/three/worldRendererThree.ts +94 -25
- package/src/wasm-mesher/bridge/render-from-wasm.ts +214 -72
- package/src/wasm-mesher/bridge/shaderCubeBridge.ts +18 -6
- package/src/wasm-mesher/runtime-build/wasm_mesher_bg.wasm +0 -0
- package/src/wasm-mesher/tests/sectionRaycastAabb.test.ts +20 -0
- package/src/wasm-mesher/tests/shaderCubeInstances.test.ts +67 -5
- package/src/wasm-mesher/worker/mesherWasm.ts +70 -14
- package/src/wasm-mesher/worker/mesherWasmLightDirty.test.ts +11 -0
- package/src/wasm-mesher/worker/mesherWasmLightDirty.ts +15 -0
package/src/three/itemMesh.ts
CHANGED
|
@@ -257,7 +257,7 @@ export interface ItemMeshResult {
|
|
|
257
257
|
* Extracts item texture region to a canvas
|
|
258
258
|
*/
|
|
259
259
|
export function extractItemTextureToCanvas (
|
|
260
|
-
sourceTexture: THREE.Texture
|
|
260
|
+
sourceTexture: THREE.Texture<HTMLImageElement | ImageBitmap>,
|
|
261
261
|
textureInfo: ItemTextureInfo
|
|
262
262
|
): ItemTextureCanvas {
|
|
263
263
|
const { u, v, sizeX, sizeY } = textureInfo
|
|
@@ -333,7 +333,10 @@ export function createItemMesh (
|
|
|
333
333
|
if (use3D) {
|
|
334
334
|
// Try to create 3D mesh
|
|
335
335
|
try {
|
|
336
|
-
const canvas = extractItemTextureToCanvas(
|
|
336
|
+
const canvas = extractItemTextureToCanvas(
|
|
337
|
+
sourceTexture as THREE.Texture<HTMLImageElement | ImageBitmap>,
|
|
338
|
+
textureInfo
|
|
339
|
+
)
|
|
337
340
|
const { geometry } = create3DItemMesh(canvas, { depth })
|
|
338
341
|
|
|
339
342
|
// Create texture from canvas for the 3D mesh
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
//@ts-nocheck
|
|
2
|
+
import * as THREE from 'three'
|
|
3
|
+
import type { RenderOrigin } from './shaders/legacyBlockShader'
|
|
4
|
+
|
|
5
|
+
/** Half-extent of a section mesh AABB in section-local space. */
|
|
6
|
+
export const LEGACY_SECTION_HALF_EXTENT = 8
|
|
7
|
+
|
|
8
|
+
/** Small pad on camera-relative section AABBs for frustum tests. */
|
|
9
|
+
const CULL_BOX_EPSILON = 0.01
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Set a legacy section mesh world translation once at build time.
|
|
13
|
+
* Position proxy is not used — camera-relative math lives in the shader.
|
|
14
|
+
*/
|
|
15
|
+
export function setupLegacySectionMatrix (
|
|
16
|
+
mesh: THREE.Mesh,
|
|
17
|
+
sx: number,
|
|
18
|
+
sy: number,
|
|
19
|
+
sz: number,
|
|
20
|
+
renderOrigin: RenderOrigin,
|
|
21
|
+
): void {
|
|
22
|
+
mesh.matrix.makeTranslation(sx - renderOrigin.x, sy - renderOrigin.y, sz - renderOrigin.z)
|
|
23
|
+
mesh.matrixWorldNeedsUpdate = true
|
|
24
|
+
mesh.frustumCulled = false
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export function sectionIntersectsFrustum (
|
|
28
|
+
sectionWorldX: number,
|
|
29
|
+
sectionWorldY: number,
|
|
30
|
+
sectionWorldZ: number,
|
|
31
|
+
cameraWorldX: number,
|
|
32
|
+
cameraWorldY: number,
|
|
33
|
+
cameraWorldZ: number,
|
|
34
|
+
frustum: THREE.Frustum,
|
|
35
|
+
box: THREE.Box3,
|
|
36
|
+
boxMin: THREE.Vector3,
|
|
37
|
+
boxMax: THREE.Vector3,
|
|
38
|
+
): { visible: boolean, distSq: number } {
|
|
39
|
+
const dx = sectionWorldX - cameraWorldX
|
|
40
|
+
const dy = sectionWorldY - cameraWorldY
|
|
41
|
+
const dz = sectionWorldZ - cameraWorldZ
|
|
42
|
+
|
|
43
|
+
const half = LEGACY_SECTION_HALF_EXTENT + CULL_BOX_EPSILON
|
|
44
|
+
boxMin.set(dx - half, dy - half, dz - half)
|
|
45
|
+
boxMax.set(dx + half, dy + half, dz + half)
|
|
46
|
+
box.set(boxMin, boxMax)
|
|
47
|
+
|
|
48
|
+
return {
|
|
49
|
+
visible: frustum.intersectsBox(box),
|
|
50
|
+
distSq: dx * dx + dy * dy + dz * dz,
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Per-frame frustum cull + back-to-front renderOrder for one legacy section.
|
|
56
|
+
* Used for pooled per-section meshes (reveal defer + invariant fallback).
|
|
57
|
+
*/
|
|
58
|
+
export function updateLegacySectionCullState (
|
|
59
|
+
mesh: THREE.Mesh,
|
|
60
|
+
sectionWorldX: number,
|
|
61
|
+
sectionWorldY: number,
|
|
62
|
+
sectionWorldZ: number,
|
|
63
|
+
cameraWorldX: number,
|
|
64
|
+
cameraWorldY: number,
|
|
65
|
+
cameraWorldZ: number,
|
|
66
|
+
frustum: THREE.Frustum,
|
|
67
|
+
box: THREE.Box3,
|
|
68
|
+
boxMin: THREE.Vector3,
|
|
69
|
+
boxMax: THREE.Vector3,
|
|
70
|
+
): void {
|
|
71
|
+
const { visible, distSq } = sectionIntersectsFrustum(
|
|
72
|
+
sectionWorldX,
|
|
73
|
+
sectionWorldY,
|
|
74
|
+
sectionWorldZ,
|
|
75
|
+
cameraWorldX,
|
|
76
|
+
cameraWorldY,
|
|
77
|
+
cameraWorldZ,
|
|
78
|
+
frustum,
|
|
79
|
+
box,
|
|
80
|
+
boxMin,
|
|
81
|
+
boxMax,
|
|
82
|
+
)
|
|
83
|
+
mesh.visible = visible
|
|
84
|
+
mesh.renderOrder = -distSq
|
|
85
|
+
}
|