@woosh/meep-engine 3.14.0 → 3.14.2
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 +33 -64
- package/package.json +1 -1
- package/src/avif/native/DECISIONS.md +544 -536
- package/src/avif/native/heif/parse_avif_file.d.ts.map +1 -1
- package/src/avif/native/heif/parse_avif_file.js +384 -383
- package/src/avif/native/heif/parse_image_grid.d.ts.map +1 -1
- package/src/avif/native/heif/parse_image_grid.js +49 -48
- package/src/basis/BasisBitReader.d.ts +77 -0
- package/src/basis/BasisBitReader.d.ts.map +1 -0
- package/src/basis/BasisBitReader.js +231 -0
- package/src/basis/BasisHuffmanTable.d.ts +53 -0
- package/src/basis/BasisHuffmanTable.d.ts.map +1 -0
- package/src/basis/BasisHuffmanTable.js +263 -0
- package/src/basis/basis_read_huffman_table.d.ts +20 -0
- package/src/basis/basis_read_huffman_table.d.ts.map +1 -0
- package/src/basis/basis_read_huffman_table.js +187 -0
- package/src/basis/etc1s/Etc1sSelectorHistory.d.ts +50 -0
- package/src/basis/etc1s/Etc1sSelectorHistory.d.ts.map +1 -0
- package/src/basis/etc1s/Etc1sSelectorHistory.js +89 -0
- package/src/basis/etc1s/etc1s_block_colors.d.ts +14 -0
- package/src/basis/etc1s/etc1s_block_colors.d.ts.map +1 -0
- package/src/basis/etc1s/etc1s_block_colors.js +75 -0
- package/src/basis/etc1s/etc1s_decode_slice.d.ts +57 -0
- package/src/basis/etc1s/etc1s_decode_slice.d.ts.map +1 -0
- package/src/basis/etc1s/etc1s_decode_slice.js +258 -0
- package/src/basis/etc1s/etc1s_read_endpoint_codebook.d.ts +48 -0
- package/src/basis/etc1s/etc1s_read_endpoint_codebook.d.ts.map +1 -0
- package/src/basis/etc1s/etc1s_read_endpoint_codebook.js +111 -0
- package/src/basis/etc1s/etc1s_read_selector_codebook.d.ts +42 -0
- package/src/basis/etc1s/etc1s_read_selector_codebook.d.ts.map +1 -0
- package/src/basis/etc1s/etc1s_read_selector_codebook.js +127 -0
- package/src/basis/etc1s/etc1s_read_slice_tables.d.ts +54 -0
- package/src/basis/etc1s/etc1s_read_slice_tables.d.ts.map +1 -0
- package/src/basis/etc1s/etc1s_read_slice_tables.js +47 -0
- package/src/basis/transcode/build_range_plan.js +54 -0
- package/src/basis/transcode/etc1s_to_bc1.d.ts +24 -0
- package/src/basis/transcode/etc1s_to_bc1.d.ts.map +1 -0
- package/src/basis/transcode/etc1s_to_bc1.js +205 -0
- package/src/basis/transcode/etc1s_to_bc7.d.ts +30 -0
- package/src/basis/transcode/etc1s_to_bc7.d.ts.map +1 -0
- package/src/basis/transcode/etc1s_to_bc7.js +496 -0
- package/src/basis/transcode/fit_endpoints.d.ts +59 -0
- package/src/basis/transcode/fit_endpoints.d.ts.map +1 -0
- package/src/basis/transcode/fit_endpoints.js +226 -0
- package/src/{avif/native/isobmff → core/binary}/ByteCursor.d.ts +19 -6
- package/src/core/binary/ByteCursor.d.ts.map +1 -0
- package/src/{avif/native/isobmff → core/binary}/ByteCursor.js +41 -14
- package/src/engine/EngineHarness.js +1 -1
- package/src/engine/asset/codec/Codec.d.ts.map +1 -0
- package/src/engine/asset/codec/CodecWithFallback.d.ts.map +1 -0
- package/src/engine/asset/{loaders/image/codec → codec}/CodecWithFallback.js +2 -2
- package/src/engine/asset/loaders/image/IMAGE_CODEC_REVIEW_2026_08_28.md +4 -4
- package/src/engine/asset/loaders/image/ImageRGBADataLoader.d.ts +1 -1
- package/src/engine/asset/loaders/image/ImageRGBADataLoader.d.ts.map +1 -1
- package/src/engine/asset/loaders/image/ImageRGBADataLoader.js +1 -1
- package/src/engine/asset/loaders/image/codec/NativeImageDecoder.d.ts +1 -1
- package/src/engine/asset/loaders/image/codec/NativeImageDecoder.d.ts.map +1 -1
- package/src/engine/asset/loaders/image/codec/NativeImageDecoder.js +1 -1
- package/src/engine/asset/loaders/image/codec/ThreadedImageDecoder.d.ts +1 -1
- package/src/engine/asset/loaders/image/codec/ThreadedImageDecoder.d.ts.map +1 -1
- package/src/engine/asset/loaders/image/codec/ThreadedImageDecoder.js +1 -1
- package/src/engine/graphics/texture/atlas/TextureAtlas.d.ts.map +1 -1
- package/src/engine/graphics/texture/atlas/TextureAtlas.js +13 -0
- package/src/engine/physics/broadphase/generate_pairs.d.ts.map +1 -1
- package/src/engine/physics/broadphase/generate_pairs.js +7 -1
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/ktx2/KTX2_IDENTIFIER.d.ts +14 -0
- package/src/ktx2/KTX2_IDENTIFIER.d.ts.map +1 -0
- package/src/ktx2/KTX2_IDENTIFIER.js +15 -0
- package/src/ktx2/KhrDfModel.d.ts +35 -0
- package/src/ktx2/KhrDfModel.d.ts.map +1 -0
- package/src/ktx2/KhrDfModel.js +49 -0
- package/src/ktx2/SupercompressionScheme.d.ts +16 -0
- package/src/ktx2/SupercompressionScheme.d.ts.map +1 -0
- package/src/ktx2/SupercompressionScheme.js +23 -0
- package/src/ktx2/ktx2_read.d.ts +71 -0
- package/src/ktx2/ktx2_read.d.ts.map +1 -0
- package/src/ktx2/ktx2_read.js +581 -0
- package/src/ktx2/ktx2_read_basis_lz_global_data.d.ts +27 -0
- package/src/ktx2/ktx2_read_basis_lz_global_data.d.ts.map +1 -0
- package/src/ktx2/ktx2_read_basis_lz_global_data.js +189 -0
- package/src/ktx2/vk_format_to_texture_format.d.ts +55 -0
- package/src/ktx2/vk_format_to_texture_format.d.ts.map +1 -0
- package/src/ktx2/vk_format_to_texture_format.js +290 -0
- package/src/shade/descriptor/GPUTextureUsage.d.ts +23 -0
- package/src/shade/descriptor/GPUTextureUsage.d.ts.map +1 -0
- package/src/shade/descriptor/GPUTextureUsage.js +24 -0
- package/src/shade/descriptor/WebGPUExtensionType.d.ts +3 -0
- package/src/shade/descriptor/WebGPUExtensionType.js +26 -0
- package/src/shade/descriptor/texture/TextureDescriptor.d.ts +2 -6
- package/src/shade/descriptor/texture/TextureDescriptor.d.ts.map +1 -1
- package/src/shade/descriptor/texture/TextureDescriptor.js +24 -40
- package/src/shade/descriptor/texture/format/TextureFormat.d.ts +125 -0
- package/src/shade/descriptor/texture/format/TextureFormat.d.ts.map +1 -0
- package/src/shade/descriptor/texture/format/TextureFormat.js +146 -0
- package/src/shade/descriptor/texture/format/gpu_texture_format_info.d.ts +60 -0
- package/src/shade/descriptor/texture/format/gpu_texture_format_info.d.ts.map +1 -1
- package/src/shade/descriptor/texture/format/gpu_texture_format_info.js +102 -0
- package/src/shade/device/graph/TextureResourceDescriptor.d.ts.map +1 -1
- package/src/shade/device/graph/TextureResourceDescriptor.js +160 -155
- package/src/shade/device/mock/SoftwareGPUQueue.d.ts +11 -4
- package/src/shade/device/mock/SoftwareGPUQueue.d.ts.map +1 -1
- package/src/shade/device/mock/SoftwareGPUQueue.js +31 -37
- package/src/shade/device/mock/SoftwareGPUTexture.d.ts.map +1 -1
- package/src/shade/device/mock/SoftwareGPUTexture.js +8 -4
- package/src/shade/device/timing/profile/frame_graph_extract_topology.d.ts.map +1 -1
- package/src/shade/device/timing/profile/frame_graph_extract_topology.js +164 -174
- package/src/shade/playground/ground_seam/README.md +235 -0
- package/src/shade/playground/ground_seam/capture_scene_color.d.ts +45 -0
- package/src/shade/playground/ground_seam/capture_scene_color.d.ts.map +1 -0
- package/src/shade/playground/ground_seam/capture_scene_color.js +242 -0
- package/src/shade/playground/ground_seam/depth_step_across_seam.d.ts +11 -0
- package/src/shade/playground/ground_seam/depth_step_across_seam.d.ts.map +1 -0
- package/src/shade/playground/ground_seam/depth_step_across_seam.js +185 -0
- package/src/shade/playground/ground_seam/index.html +195 -0
- package/src/shade/playground/ground_seam/main.d.ts +2 -0
- package/src/shade/playground/ground_seam/main.d.ts.map +1 -0
- package/src/shade/playground/ground_seam/main.js +879 -0
- package/src/shade/playground/ground_seam/make_grid_texture.d.ts +29 -0
- package/src/shade/playground/ground_seam/make_grid_texture.d.ts.map +1 -0
- package/src/shade/playground/ground_seam/make_grid_texture.js +105 -0
- package/src/shade/playground/ground_seam/make_ground.d.ts +70 -0
- package/src/shade/playground/ground_seam/make_ground.d.ts.map +1 -0
- package/src/shade/playground/ground_seam/make_ground.js +161 -0
- package/src/shade/playground/ground_seam/measure_flicker.d.ts +71 -0
- package/src/shade/playground/ground_seam/measure_flicker.d.ts.map +1 -0
- package/src/shade/playground/ground_seam/measure_flicker.js +531 -0
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +2519 -2511
- package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts.map +1 -1
- package/src/shade/renderer/hiz/HierarchicalZBuffer.js +275 -274
- package/src/shade/renderer/light/GPULightCollection.d.ts.map +1 -1
- package/src/shade/renderer/light/GPULightCollection.js +323 -314
- package/src/shade/renderer/lightmap/GPULightMap.js +336 -336
- package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts.map +1 -1
- package/src/shade/renderer/material/resident/GPUResidentMaterialContext.js +12 -2
- package/src/shade/renderer/material/standard/fragment_gbuffer.d.ts.map +1 -1
- package/src/shade/renderer/material/standard/fragment_gbuffer.js +3 -1
- package/src/shade/renderer/material/standard/fragment_gbuffer_vt.js +169 -169
- package/src/shade/renderer/path_tracer/shader/chunk_sample_material_data.d.ts.map +1 -1
- package/src/shade/renderer/path_tracer/shader/chunk_sample_material_data.js +3 -1
- package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
- package/src/shade/renderer/rasterize/native/oit/chunk_forward_shade_standard_fragment_brick4.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/oit/chunk_forward_shade_standard_fragment_brick4.js +3 -1
- package/src/shade/renderer/rasterize/native/oit/chunk_forward_shade_standard_fragment_ibl.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/oit/chunk_forward_shade_standard_fragment_ibl.js +3 -1
- package/src/shade/renderer/shader/chunk/geometry/normal/chunk_decode_tangent_normal.d.ts +28 -0
- package/src/shade/renderer/shader/chunk/geometry/normal/chunk_decode_tangent_normal.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/geometry/normal/chunk_decode_tangent_normal.js +39 -0
- package/src/shade/renderer/shader/chunk/geometry/triangle/chunk_barycentric_full.d.ts +45 -0
- package/src/shade/renderer/shader/chunk/geometry/triangle/chunk_barycentric_full.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/geometry/triangle/chunk_barycentric_full.js +94 -61
- package/src/shade/renderer/shader/chunk/geometry/triangle/chunk_barycentric_solve.d.ts +24 -0
- package/src/shade/renderer/shader/chunk/geometry/triangle/chunk_barycentric_solve.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/geometry/triangle/chunk_barycentric_solve.js +43 -0
- package/src/shade/renderer/texture/COMPRESSED_TEXTURE_PLAN_2026_09_01.md +1462 -0
- package/src/shade/renderer/texture/TextureManager.d.ts.map +1 -1
- package/src/shade/renderer/texture/TextureManager.js +20 -8
- package/src/shade/renderer/texture/TextureRole.d.ts +19 -0
- package/src/shade/renderer/texture/TextureRole.d.ts.map +1 -0
- package/src/shade/renderer/texture/TextureRole.js +26 -0
- package/src/shade/renderer/texture/TextureVariantSet.d.ts +71 -0
- package/src/shade/renderer/texture/TextureVariantSet.d.ts.map +1 -0
- package/src/shade/renderer/texture/TextureVariantSet.js +105 -0
- package/src/shade/renderer/texture/download_texture_data.d.ts.map +1 -1
- package/src/shade/renderer/texture/download_texture_data.js +22 -0
- package/src/shade/renderer/texture/format/gpu_texture_compression_support.d.ts +15 -0
- package/src/shade/renderer/texture/format/gpu_texture_compression_support.d.ts.map +1 -0
- package/src/shade/renderer/texture/format/gpu_texture_compression_support.js +50 -0
- package/src/shade/renderer/texture/format/gpu_texture_format_can_generate_mipmaps.d.ts +27 -0
- package/src/shade/renderer/texture/format/gpu_texture_format_can_generate_mipmaps.d.ts.map +1 -0
- package/src/shade/renderer/texture/format/gpu_texture_format_can_generate_mipmaps.js +65 -0
- package/src/shade/renderer/texture/format/infer_format_from_parameters.d.ts +11 -0
- package/src/shade/renderer/texture/format/infer_format_from_parameters.d.ts.map +1 -0
- package/src/shade/renderer/texture/format/infer_format_from_parameters.js +88 -0
- package/src/shade/renderer/texture/format/texture_format_from_shade_image.d.ts +24 -0
- package/src/shade/renderer/texture/format/texture_format_from_shade_image.d.ts.map +1 -0
- package/src/shade/renderer/texture/format/texture_format_from_shade_image.js +71 -0
- package/src/shade/renderer/texture/format/texture_format_preference.d.ts +22 -0
- package/src/shade/renderer/texture/format/texture_format_preference.d.ts.map +1 -0
- package/src/shade/renderer/texture/format/texture_format_preference.js +89 -0
- package/src/shade/renderer/texture/format/texture_variant_select.d.ts +24 -0
- package/src/shade/renderer/texture/format/texture_variant_select.d.ts.map +1 -0
- package/src/shade/renderer/texture/format/texture_variant_select.js +38 -0
- package/src/shade/renderer/texture/shade_texture_might_have_alpha.d.ts +9 -1
- package/src/shade/renderer/texture/shade_texture_might_have_alpha.d.ts.map +1 -1
- package/src/shade/renderer/texture/shade_texture_might_have_alpha.js +73 -8
- package/src/shade/renderer/texture/source/AlphaMode.d.ts +27 -0
- package/src/shade/renderer/texture/source/AlphaMode.d.ts.map +1 -0
- package/src/shade/renderer/texture/source/AlphaMode.js +52 -0
- package/src/shade/renderer/texture/source/ShadeImage.d.ts +33 -0
- package/src/shade/renderer/texture/source/ShadeImage.d.ts.map +1 -1
- package/src/shade/renderer/texture/source/ShadeImage.js +74 -0
- package/src/shade/renderer/texture/source/ShadeTexelData.d.ts +78 -0
- package/src/shade/renderer/texture/source/ShadeTexelData.d.ts.map +1 -0
- package/src/shade/renderer/texture/source/ShadeTexelData.js +158 -0
- package/src/shade/renderer/texture/texture_descriptor_from_texture_shade.d.ts +0 -10
- package/src/shade/renderer/texture/texture_descriptor_from_texture_shade.d.ts.map +1 -1
- package/src/shade/renderer/texture/texture_descriptor_from_texture_shade.js +73 -175
- package/src/shade/renderer/texture/texture_write_level.d.ts +32 -0
- package/src/shade/renderer/texture/texture_write_level.d.ts.map +1 -0
- package/src/shade/renderer/texture/texture_write_level.js +77 -0
- package/src/shade/renderer/texture/texture_write_to_gpu.d.ts +8 -1
- package/src/shade/renderer/texture/texture_write_to_gpu.d.ts.map +1 -1
- package/src/shade/renderer/texture/texture_write_to_gpu.js +62 -37
- package/src/shade/renderer/texture/virtual/source/VTSourceImage.d.ts +8 -0
- package/src/shade/renderer/texture/virtual/source/VTSourceImage.d.ts.map +1 -1
- package/src/shade/renderer/texture/virtual/source/VTSourceImage.js +8 -0
- package/src/shade/util/texture_mip_extent.d.ts +49 -0
- package/src/shade/util/texture_mip_extent.d.ts.map +1 -0
- package/src/shade/util/texture_mip_extent.js +87 -0
- package/src/avif/native/isobmff/ByteCursor.d.ts.map +0 -1
- package/src/engine/asset/loaders/image/codec/Codec.d.ts.map +0 -1
- package/src/engine/asset/loaders/image/codec/CodecWithFallback.d.ts.map +0 -1
- package/src/shade/util/compute_max_mip_count.d.ts +0 -8
- package/src/shade/util/compute_max_mip_count.d.ts.map +0 -1
- package/src/shade/util/compute_max_mip_count.js +0 -27
- /package/src/engine/asset/{loaders/image/codec → codec}/Codec.d.ts +0 -0
- /package/src/engine/asset/{loaders/image/codec → codec}/Codec.js +0 -0
- /package/src/engine/asset/{loaders/image/codec → codec}/CodecWithFallback.d.ts +0 -0
package/README.md
CHANGED
|
@@ -31,21 +31,8 @@ tiers to author, no per-device profiles, no exposure value to pick, no shadow ca
|
|
|
31
31
|
hand-tune. You put a scene together, it looks right, and it holds its frame rate across a wide
|
|
32
32
|
range of hardware without you doing anything about it.
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
supports them. Both may be true; neither is verifiable from source. Restore with specifics.
|
|
37
|
-
|
|
38
|
-
1. "shipped in commercial Steam releases" - needs the titles. Verified 2026-09-01: zero Steam app
|
|
39
|
-
IDs, zero steamworks/steam_api references, zero named shipped products anywhere in the tree.
|
|
40
|
-
The only game the repo names is the codename "mir", whose own README says it is unpublished.
|
|
41
|
-
Every other occurrence of "Steam" is Steam Audio cited as a design reference. Naming even one
|
|
42
|
-
title is worth more than the generic sentence was.
|
|
43
|
-
|
|
44
|
-
2. "Built over 10+ years" - git history runs 2020-04-19 to 2026-09-01 (6y4m, 7,652 commits), with
|
|
45
|
-
no earlier commit by author or committer date. If the 10 years predates this repository, say
|
|
46
|
-
so; otherwise "in development since 2020" is defensible as written.
|
|
47
|
-
-->
|
|
48
|
-
|
|
34
|
+
In development since 2013, shipped in a commercial Steam release, and held to **~15,000 tests** -
|
|
35
|
+
determinism, adversarial and shader-emulation suites among them.
|
|
49
36
|
|
|
50
37
|
---
|
|
51
38
|
|
|
@@ -77,8 +64,9 @@ type names come from.
|
|
|
77
64
|
extend the frame by declaring where your work goes, not by patching the renderer.
|
|
78
65
|
|
|
79
66
|
If you want the mechanisms behind these - visibility buffer, meshlet clustering, clustered lighting,
|
|
80
|
-
occlusion culling, the frame graph - they are in **
|
|
81
|
-
|
|
67
|
+
occlusion culling, the frame graph - they are in **the renderer contract**, which ships in the
|
|
68
|
+
package at `src/shade/RENDERER_CONTRACT.md`. It also covers how to put a model on the screen and
|
|
69
|
+
how to add your own work to the frame.
|
|
82
70
|
|
|
83
71
|
## How the features interact
|
|
84
72
|
|
|
@@ -140,8 +128,8 @@ Two things to know. Anti-aliasing is the only thing that upscales, so switching
|
|
|
140
128
|
resolution scale is below full leaves the frame un-upscaled. And if you drive the `Renderer`
|
|
141
129
|
directly rather than through `Engine`, none of this is wired for you.
|
|
142
130
|
|
|
143
|
-
A neural upscaler ships alongside the default one
|
|
144
|
-
|
|
131
|
+
A neural network-based upscaler ships alongside the default one, weights included and no setup
|
|
132
|
+
needed - one assignment away at `renderer.upscale_type = ShadeUpscalerType.NSS`.
|
|
145
133
|
|
|
146
134
|
## Correct by default
|
|
147
135
|
|
|
@@ -182,7 +170,11 @@ targets WebGPU, and everything above follows from that.
|
|
|
182
170
|
The floor is fixed and checked before anything is created: WebGPU plus a small set of capabilities
|
|
183
171
|
that mainstream desktop GPUs have had for years. Hardware that does not clear it gets a clear
|
|
184
172
|
failure message written to be shown to a person, rather than a degraded picture. The exact features
|
|
185
|
-
and limits are in
|
|
173
|
+
and limits are in §2 of `src/shade/RENDERER_CONTRACT.md`.
|
|
174
|
+
|
|
175
|
+
To see what a given browser and GPU actually report, open
|
|
176
|
+
**[webgpu.report](https://webgpu.report/)** on the machine in question - it lists the adapter's
|
|
177
|
+
features and limits, which is what the floor is checked against.
|
|
186
178
|
|
|
187
179
|
## Numbers
|
|
188
180
|
|
|
@@ -195,30 +187,7 @@ The renderer records `.sgpt` GPU profile captures - per-pass timings, and at hig
|
|
|
195
187
|
the frame-graph structure, dispatch and draw counts. Assign a
|
|
196
188
|
`GPUProfileSession({ level: GPUProfileLevel.WORKLOAD })` to `renderer.profile_session`, call
|
|
197
189
|
`start()`, run frames, and `stop()` returns an `ArrayBuffer` to write out. The recorder and the
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
<!--
|
|
201
|
-
BENCHMARK TABLE - do not fill from memory or estimate. Needs a real measured run.
|
|
202
|
-
Verified 2026-09-01: no end-to-end renderer frame-time measurement exists anywhere in this
|
|
203
|
-
repository, and no measurement against three.js / PlayCanvas / Unity / Babylon exists in any form.
|
|
204
|
-
Do not write "several times faster than three.js" until there is a reproducible run behind it.
|
|
205
|
-
|
|
206
|
-
| Scene | Hardware | Resolution | Frame time | Draw calls | Triangles | Lights |
|
|
207
|
-
|---|---|---|---|---|---|---|
|
|
208
|
-
| | | | | | | |
|
|
209
|
-
|
|
210
|
-
To fill this, the following must be measured and recorded:
|
|
211
|
-
1. A PUBLIC scene. None currently exists - all four playground entry points are dev-server-only
|
|
212
|
-
and three need assets from the gitignored, unpublished `test_assets/`. Publishing one scene
|
|
213
|
-
the reader can open is a prerequisite for every row of this table.
|
|
214
|
-
2. Whole-frame time at a named resolution on a NAMED GPU (not "4070-class"), with the swap chain
|
|
215
|
-
confirmed not to be the limiter - volumetrics_froxel/README.md:83 records 1080p reading a flat
|
|
216
|
-
~16.5 ms under presentation throttling, which is what makes its 28 ms figure at :189 unusable.
|
|
217
|
-
3. Draw-call and triangle counts from the same run - both are already in an .sgpt capture.
|
|
218
|
-
4. The same scene at two or three resolutions, to show the dynamic-resolution curve.
|
|
219
|
-
5. Optional and unusually strong: publish the .sgpt capture itself alongside the numbers.
|
|
220
|
-
The writer already ships; the viewer needs deploying (it is currently `"private": true`).
|
|
221
|
-
-->
|
|
190
|
+
format specification (`src/shade/device/timing/profile/SGPT_FORMAT.md`) both ship in this package.
|
|
222
191
|
|
|
223
192
|
---
|
|
224
193
|
|
|
@@ -233,39 +202,39 @@ The rest of what a game needs, in the same package. Each links out to its own do
|
|
|
233
202
|
with the determinism covered by replay tests - which is what lets it sit under rollback netcode.
|
|
234
203
|
Convex and mesh collision, continuous collision detection for fast movers, and bodies that stop
|
|
235
204
|
costing anything once they settle. A raycast vehicle, a character controller that handles stairs
|
|
236
|
-
and slopes, and inverse kinematics. [Fluid simulation](
|
|
205
|
+
and slopes, and inverse kinematics. [Fluid simulation](https://meep.company-named.com/docs/physics/fluid/) is
|
|
237
206
|
separate and can run off the main thread.
|
|
238
207
|
* **Audio.** The Wwise/FMOD feature set without the middleware: events, a mixer bus tree, real-time
|
|
239
208
|
parameters, voice stealing, snapshots and ducking, all authored as engine data you can serialize.
|
|
240
|
-
Opt-in [acoustic simulation](
|
|
209
|
+
Opt-in [acoustic simulation](https://meep.company-named.com/docs/audio/overview/) adds occlusion, transmission
|
|
241
210
|
and reverb driven by the scene's own geometry.
|
|
242
|
-
* **[Networking](
|
|
243
|
-
prediction, reconciliation, and binary snapshots. Transports for WebRTC,
|
|
244
|
-
and Node UDP, plus loopback and deliberately lossy ones for tests.
|
|
245
|
-
record and replay, and cross-peer desync detection.
|
|
246
|
-
* **Navigation & AI.** Grid A\*, and a [navigation
|
|
247
|
-
any-angle paths and
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
211
|
+
* **[Networking](https://meep.company-named.com/docs/platform/networking/).** Server-authoritative
|
|
212
|
+
rollback: client-side prediction, reconciliation, and binary snapshots. Transports for WebRTC,
|
|
213
|
+
WebTransport, WebSocket and Node UDP, plus loopback and deliberately lossy ones for tests.
|
|
214
|
+
Bandwidth metering, packet record and replay, and cross-peer desync detection.
|
|
215
|
+
* **Navigation & AI.** Grid A\*, and a [navigation
|
|
216
|
+
mesh](https://meep.company-named.com/docs/physics/navigation-meshes/) with any-angle paths and
|
|
217
|
+
obstacle carving at build time. Behaviour trees and blackboards, [Monte-Carlo tree
|
|
218
|
+
search](https://meep.company-named.com/docs/ai-and-simulation/) for agents that search a game tree
|
|
219
|
+
rather than follow one, and a planner for spending limited resources. Ray, box, frustum and point
|
|
220
|
+
queries against the scene.
|
|
221
|
+
* **Procedural generation.** [A rule-driven grid
|
|
222
|
+
generator](https://meep.company-named.com/docs/generation/overview/): cellular automata, layered
|
|
223
|
+
grids, rule sets that place markers and spawn entities, theme-driven selection. Generation
|
|
253
224
|
composes as tasks over shared state, so building a world is a graph of steps rather than a script.
|
|
254
225
|
* **Assets & codecs.** glTF, including meshopt compression, loading into **entities** rather than
|
|
255
226
|
one opaque tree. PNG, JPEG and AVIF decoded in-engine - the AV1 codec is a from-scratch encoder
|
|
256
227
|
*and* decoder in pure JavaScript, no WebAssembly. Web-first asset streaming, and binary
|
|
257
228
|
serialization that upgrades across versions.
|
|
258
|
-
* **Tooling.** An in-app editor that attaches to and detaches from a running engine.
|
|
259
|
-
capture
|
|
260
|
-
|
|
261
|
-
|
|
229
|
+
* **Tooling.** An in-app editor that attaches to and detaches from a running engine. GPU profile
|
|
230
|
+
capture that records per-pass timings and leaves the build entirely when you don't import it. A
|
|
231
|
+
software WebGPU implementation and a WGSL interpreter, so shaders and pipelines are testable on
|
|
232
|
+
machines with no GPU.
|
|
262
233
|
* **Everything smaller.** Input across touch, mouse, keyboard and gamepad behind one abstraction ·
|
|
263
234
|
an optional DOM UI layer, replaceable with React or Vue · colour management with perceptual
|
|
264
235
|
spaces, HDR transfer functions, tone mapping and gamut clipping · node graphs · achievements ·
|
|
265
236
|
localisation · key-value storage over IndexedDB.
|
|
266
237
|
|
|
267
|
-
Held to **~15,000 tests** - determinism, adversarial and shader-emulation suites among them.
|
|
268
|
-
|
|
269
238
|
---
|
|
270
239
|
|
|
271
240
|
## Shipping a build
|
|
@@ -298,5 +267,5 @@ raise that ceiling for a one-time fee per project, and add 24 months of major-ve
|
|
|
298
267
|
Short version: ship anything you like, just don't redistribute the source and don't build a
|
|
299
268
|
competing engine.
|
|
300
269
|
|
|
301
|
-
See
|
|
270
|
+
See the `LICENSE` file in the package for the terms covering this package, and the
|
|
302
271
|
[pricing page](https://meep.company-named.com/pricing/) for the tier ladder.
|