@woosh/meep-engine 3.32.0 → 3.33.0
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/build/bundle-worker-terrain.js +1 -1
- package/package.json +1 -1
- package/src/core/collection/table/RowFirstTable.d.ts +8 -0
- package/src/core/collection/table/RowFirstTable.d.ts.map +1 -1
- package/src/core/collection/table/RowFirstTable.js +40 -11
- package/src/engine/graphics/ecs/sprite/Sprite.d.ts +3 -0
- package/src/engine/graphics/ecs/sprite/Sprite.d.ts.map +1 -1
- package/src/engine/graphics/ecs/sprite/Sprite.js +3 -0
- package/src/engine/graphics/ecs/sprite/SpriteSystemPE.d.ts +3 -0
- package/src/engine/graphics/ecs/sprite/SpriteSystemPE.d.ts.map +1 -1
- package/src/engine/graphics/ecs/sprite/SpriteSystemPE.js +3 -0
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/shade/device/mock/SoftwareGPURenderPassEncoder.d.ts +20 -3
- package/src/shade/device/mock/SoftwareGPURenderPassEncoder.d.ts.map +1 -1
- package/src/shade/device/mock/SoftwareGPURenderPassEncoder.js +21 -3
- package/src/shade/renderer/GraphicsContext.d.ts +11 -0
- package/src/shade/renderer/GraphicsContext.d.ts.map +1 -1
- package/src/shade/renderer/GraphicsContext.js +52 -38
- package/src/shade/renderer/buffer/GPUBufferReadbackAllocator.d.ts +6 -5
- package/src/shade/renderer/buffer/GPUBufferReadbackAllocator.d.ts.map +1 -1
- package/src/shade/renderer/buffer/GPUBufferReadbackAllocator.js +241 -240
- package/src/shade/renderer/buffer/GPUBufferStagingAllocator.d.ts +51 -0
- package/src/shade/renderer/buffer/GPUBufferStagingAllocator.d.ts.map +1 -1
- package/src/shade/renderer/buffer/GPUBufferStagingAllocator.js +214 -28
- package/src/shade/renderer/dynamic/DynamicMeshAVBOITChannel.d.ts +2 -1
- package/src/shade/renderer/dynamic/DynamicMeshAVBOITChannel.d.ts.map +1 -1
- package/src/shade/renderer/dynamic/DynamicMeshAVBOITChannel.js +19 -17
- package/src/shade/renderer/dynamic/GPUDynamicMeshDrawList.d.ts +70 -0
- package/src/shade/renderer/dynamic/GPUDynamicMeshDrawList.d.ts.map +1 -0
- package/src/shade/renderer/dynamic/GPUDynamicMeshDrawList.js +257 -0
- package/src/shade/renderer/dynamic/GPUDynamicMeshRenderer.d.ts.map +1 -1
- package/src/shade/renderer/dynamic/GPUDynamicMeshRenderer.js +19 -34
- package/src/shade/renderer/dynamic/GPUDynamicMeshResidency.d.ts +6 -20
- package/src/shade/renderer/dynamic/GPUDynamicMeshResidency.d.ts.map +1 -1
- package/src/shade/renderer/dynamic/GPUDynamicMeshResidency.js +42 -36
- package/src/shade/renderer/dynamic/chunk_dynamic_mesh_avboit_vertex.d.ts +2 -1
- package/src/shade/renderer/dynamic/chunk_dynamic_mesh_avboit_vertex.d.ts.map +1 -1
- package/src/shade/renderer/dynamic/chunk_dynamic_mesh_avboit_vertex.js +4 -3
- package/src/shade/renderer/dynamic/chunk_dynamic_mesh_vertex.d.ts +4 -3
- package/src/shade/renderer/dynamic/chunk_dynamic_mesh_vertex.d.ts.map +1 -1
- package/src/shade/renderer/dynamic/chunk_dynamic_mesh_vertex.js +7 -4
- package/src/shade/renderer/dynamic/graph_dynamic_mesh_avboit.d.ts +14 -15
- package/src/shade/renderer/dynamic/graph_dynamic_mesh_avboit.d.ts.map +1 -1
- package/src/shade/renderer/dynamic/graph_dynamic_mesh_avboit.js +49 -83
- package/src/shade/renderer/dynamic/shader_dynamic_mesh.d.ts +19 -3
- package/src/shade/renderer/dynamic/shader_dynamic_mesh.d.ts.map +1 -1
- package/src/shade/renderer/dynamic/shader_dynamic_mesh.js +26 -6
- package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_draw.d.ts +2 -1
- package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_draw.d.ts.map +1 -1
- package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_draw.js +12 -6
- package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_splat.d.ts +3 -2
- package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_splat.d.ts.map +1 -1
- package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_splat.js +21 -13
- package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
- package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
- package/src/shade/renderer/rasterize/native/avboit/AVBOIT_LEDGER.md +20 -0
- package/src/shade/renderer/shader/type/serde/write_gpu_typed_buffer.d.ts.map +1 -1
- package/src/shade/renderer/shader/type/serde/write_gpu_typed_buffer.js +8 -1
|
@@ -887,3 +887,23 @@ reach — the dynamic-mesh directory, the orchestrator run with a real channel,
|
|
|
887
887
|
93 tests — passes, and the type check is at budget. On the Metal adapter, `@builtin(sample_mask)` and
|
|
888
888
|
`@interpolate(perspective, centroid)` compile and the multisampled pipeline builds; no uncaptured device
|
|
889
889
|
errors, including 240 frames of a live trail on a moving path, fading in and out.
|
|
890
|
+
|
|
891
|
+
## 25. A trail's draw constants go up once a frame — 2026-09-27
|
|
892
|
+
|
|
893
|
+
Entry 23 left each live mesh's constants built twice — a transient uniform and a bind group of its own
|
|
894
|
+
for the splat, and again for the draw — noted, not shaved. They are shaved here, as part of moving
|
|
895
|
+
every dynamic mesh's per-draw constants into a table (CHANGELOG, Unreleased, Rendering): the
|
|
896
|
+
occupancy, after its upload, writes the frame's `GPUDynamicMeshDrawList` — one transient storage
|
|
897
|
+
buffer and one write per 1,024 draws — and the splat and the draw both bind it and name their rows by
|
|
898
|
+
`first_instance`. The splat's layout is four groups now (constants, geometry, warp, volume), which is
|
|
899
|
+
WebGPU's default `maxBindGroups`.
|
|
900
|
+
|
|
901
|
+
**Measured** with 1,500 live meshes through the channel at 1280×720 on the RTX 4090, asserts
|
|
902
|
+
stripped, paired: 9.8–11.4 ms of CPU a frame to 2.0–2.5; 3,032 copies a frame to 34 and 7,624
|
|
903
|
+
`setBindGroup` to 3,131. The pictures after equal frame counts are bit-identical to before.
|
|
904
|
+
|
|
905
|
+
**Verified.** `DynamicMeshAVBOITChannel.draws.spec.js` checks the splat and the draw read each mesh's own
|
|
906
|
+
constants from one table, and fails with a draw pass that uploads its own copy (two tables).
|
|
907
|
+
`chunk_dynamic_mesh_vertex.spec.js` runs the shared AVBOIT vertex stage on the emulator and checks a
|
|
908
|
+
vertex is carried by the row its draw names. The other half of the item — the emptiness query and the
|
|
909
|
+
gather both walking the first live mesh's triangles — is left as it was.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write_gpu_typed_buffer.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shader/type/serde/write_gpu_typed_buffer.js"],"names":[],"mappings":"AA0GA;;;;;;GAMG;AACH,0DAJW,YAAY,qBAEV,IAAI,CA+DhB;AAMD;;;;;;GAMG;AACH,2EAHW,WAAW,eACX,MAAM,
|
|
1
|
+
{"version":3,"file":"write_gpu_typed_buffer.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shader/type/serde/write_gpu_typed_buffer.js"],"names":[],"mappings":"AA0GA;;;;;;GAMG;AACH,0DAJW,YAAY,qBAEV,IAAI,CA+DhB;AAMD;;;;;;GAMG;AACH,2EAHW,WAAW,eACX,MAAM,QAkChB;6BA1N4B,4CAA4C"}
|
|
@@ -203,7 +203,14 @@ export function write_gpu_typed_buffer(
|
|
|
203
203
|
assert.isNonNegativeInteger(byteOffset, 'byteOffset');
|
|
204
204
|
assert.greaterThanOrEqual(data.byteLength - byteOffset, type.size, "Data buffer is too small");
|
|
205
205
|
|
|
206
|
-
scratch_buffer.
|
|
206
|
+
if (scratch_buffer.data !== data || scratch_buffer.capacity !== data.byteLength) {
|
|
207
|
+
// Bound afresh only for a buffer it is not bound to already: binding makes a DataView and a
|
|
208
|
+
// Uint8Array, and a command context's uniforms arrive one after another into the same
|
|
209
|
+
// upload block. The length is compared as well, so a buffer the scratch grew away from, or
|
|
210
|
+
// one detached since, is bound anew rather than written through stale views.
|
|
211
|
+
scratch_buffer.fromArrayBuffer(data);
|
|
212
|
+
}
|
|
213
|
+
|
|
207
214
|
scratch_buffer.position = byteOffset;
|
|
208
215
|
|
|
209
216
|
assert.equal(scratch_buffer.data, data, 'scratch_buffer.buffer !== data'); // sanity check
|