@carbonenginejs/runtime-resource 0.12.1 → 0.13.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/LICENSE +21 -21
- package/NOTICE +32 -32
- package/README.md +129 -108
- package/dist/CjsMotherLode.js +1271 -1271
- package/dist/CjsResMan.js +3858 -3494
- package/dist/CjsResMan.js.map +1 -1
- package/dist/CjsResManFetchProvider.js +94 -94
- package/dist/CjsResManWorkQueue.js +301 -301
- package/dist/_virtual/_rollupPluginBabelHelpers.js +150 -150
- package/dist/format/CjsBlueReader.js +358 -358
- package/dist/format/CjsByteReader.js +310 -310
- package/dist/format/CjsByteWriter.js +242 -242
- package/dist/format/CjsFormat.js +223 -223
- package/dist/format/CjsFormatError.js +41 -41
- package/dist/format/CjsReader.js +22 -22
- package/dist/format/CjsResourceProbe.js +279 -279
- package/dist/format/CjsStringTable.js +268 -268
- package/dist/format/carbonEffect/CjsCarbonEffectReader.js +408 -361
- package/dist/format/carbonEffect/CjsCarbonEffectReader.js.map +1 -1
- package/dist/format/carbonEffect/CjsCarbonEffectWriter.js +373 -373
- package/dist/format/carbonEffect/buildCarbonEffectContainer.js +182 -0
- package/dist/format/carbonEffect/buildCarbonEffectContainer.js.map +1 -0
- package/dist/format/carbonEffect/carbonEffectBackendBlock.js +321 -427
- package/dist/format/carbonEffect/carbonEffectBackendBlock.js.map +1 -1
- package/dist/format/carbonEffect/carbonEffectRecords.js +1147 -955
- package/dist/format/carbonEffect/carbonEffectRecords.js.map +1 -1
- package/dist/format/carbonEffect/carbonEffectResourceTransform.js +197 -0
- package/dist/format/carbonEffect/carbonEffectResourceTransform.js.map +1 -0
- package/dist/format/compareUtf8.js +36 -36
- package/dist/format/effect/effectBodyInventory.js +146 -0
- package/dist/format/effect/effectBodyInventory.js.map +1 -0
- package/dist/format/effect/effectPermutationGraph.js +257 -257
- package/dist/format/effect/effectPermutationGraph.js.map +1 -1
- package/dist/format/effect/sha256.js +114 -114
- package/dist/format/index.js +11 -11
- package/dist/format/payloadContract.js +193 -193
- package/dist/formats/black/CjsBlackFormat.js +310 -292
- package/dist/formats/black/CjsBlackFormat.js.map +1 -1
- package/dist/formats/black/core/CjsBlackBinaryReader.js +260 -260
- package/dist/formats/black/core/CjsBlackPropertyReaders.js +448 -448
- package/dist/formats/black/core/CjsBlackReader.js +764 -764
- package/dist/formats/black/core/CjsBlackSchemaRegistry.js +540 -540
- package/dist/formats/black/core/black-schema-v1-2026-07-23.json.js +4 -4
- package/dist/formats/black/core/blackConstants.js +7 -7
- package/dist/formats/black/core/blackDefinitions.js +10 -10
- package/dist/formats/black/core/blackEnums.js +6 -6
- package/dist/formats/black/core/blackSchema.js +3 -3
- package/dist/formats/black/core/blackVersion.js +22 -22
- package/dist/formats/black/core/helpers.js +199 -199
- package/dist/formats/black/core/schema.js +4 -4
- package/dist/formats/black/index.js +2 -2
- package/dist/formats/bnk/CjsBnkFormat.js +175 -156
- package/dist/formats/bnk/CjsBnkFormat.js.map +1 -1
- package/dist/formats/bnk/core/busNodes.js +252 -0
- package/dist/formats/bnk/core/busNodes.js.map +1 -0
- package/dist/formats/bnk/core/effectNodes.js +147 -0
- package/dist/formats/bnk/core/effectNodes.js.map +1 -0
- package/dist/formats/bnk/core/eventAction.js +416 -305
- package/dist/formats/bnk/core/eventAction.js.map +1 -1
- package/dist/formats/bnk/core/globalSettings.js +215 -0
- package/dist/formats/bnk/core/globalSettings.js.map +1 -0
- package/dist/formats/bnk/core/graph.js +137 -137
- package/dist/formats/bnk/core/helpers.js +512 -480
- package/dist/formats/bnk/core/helpers.js.map +1 -1
- package/dist/formats/bnk/core/musicNodes.js +533 -509
- package/dist/formats/bnk/core/musicNodes.js.map +1 -1
- package/dist/formats/bnk/core/nodeBase.js +553 -532
- package/dist/formats/bnk/core/nodeBase.js.map +1 -1
- package/dist/formats/bnk/core/sfxNodes.js +632 -632
- package/dist/formats/bnk/core/soundbanksInfo.js +209 -209
- package/dist/formats/bnk/index.js +2 -2
- package/dist/formats/cmf/CjsCmfFormat.js +497 -497
- package/dist/formats/cmf/core/binary.js +194 -194
- package/dist/formats/cmf/core/buffers.js +237 -237
- package/dist/formats/cmf/core/constants.js +47 -47
- package/dist/formats/cmf/core/gr2Anim.js +453 -453
- package/dist/formats/cmf/core/helpers.js +318 -318
- package/dist/formats/cmf/core/pack.js +276 -276
- package/dist/formats/cmf/core/schema.js +374 -374
- package/dist/formats/cmf/core/shared.js +277 -277
- package/dist/formats/cmf/core/writer.js +571 -571
- package/dist/formats/cmf/index.js +2 -2
- package/dist/formats/dds/CjsDdsFormat.js +200 -200
- package/dist/formats/dds/core/bc6h.js +298 -298
- package/dist/formats/dds/core/bc7.js +272 -272
- package/dist/formats/dds/core/helpers.js +862 -862
- package/dist/formats/dds/index.js +2 -2
- package/dist/formats/dxbc/CjsDxbcFormat.js +142 -142
- package/dist/formats/dxbc/core/DxbcReader.js +266 -266
- package/dist/formats/dxbc/core/container.js +169 -169
- package/dist/formats/dxbc/core/decoder.js +789 -789
- package/dist/formats/dxbc/core/errors.js +19 -19
- package/dist/formats/dxbc/core/helpers.js +220 -220
- package/dist/formats/dxbc/core/opcodes.js +45 -45
- package/dist/formats/dxbc/core/program.js +91 -91
- package/dist/formats/dxbc/core/signature.js +172 -172
- package/dist/formats/dxbc/index.js +2 -2
- package/dist/formats/fbx/CjsFbxFormat.js +266 -266
- package/dist/formats/fbx/core/helpers.js +3932 -3932
- package/dist/formats/fbx/index.js +2 -2
- package/dist/formats/flac/CjsFlacFormat.js +142 -142
- package/dist/formats/flac/core/helpers.js +315 -315
- package/dist/formats/flac/index.js +2 -2
- package/dist/formats/gif/CjsGifFormat.js +141 -141
- package/dist/formats/gif/core/helpers.js +380 -380
- package/dist/formats/gif/index.js +2 -2
- package/dist/formats/gltf/CjsGltfFormat.js +290 -290
- package/dist/formats/gltf/core/helpers.js +307 -307
- package/dist/formats/gltf/core/json.js +79 -79
- package/dist/formats/gltf/core/parser.js +679 -679
- package/dist/formats/gltf/core/targets.js +173 -173
- package/dist/formats/gltf/index.js +2 -2
- package/dist/formats/gr2/CjsGr2Format.js +289 -289
- package/dist/formats/gr2/core/bitknit2.js +282 -282
- package/dist/formats/gr2/core/curves.js +1047 -1047
- package/dist/formats/gr2/core/gsf.js +72 -72
- package/dist/formats/gr2/core/helpers.js +352 -352
- package/dist/formats/gr2/core/json.js +622 -622
- package/dist/formats/gr2/core/oodle1.js +388 -388
- package/dist/formats/gr2/core/tangents.js +48 -48
- package/dist/formats/gr2/core/targets.js +361 -361
- package/dist/formats/gr2/index.js +2 -2
- package/dist/formats/hlsl/CjsHlslFormat.js +254 -254
- package/dist/formats/hlsl/core/HlslBinaryUtils.js +15 -15
- package/dist/formats/hlsl/core/HlslEffectReadError.js +19 -19
- package/dist/formats/hlsl/core/HlslEffectStateManager.js +130 -130
- package/dist/formats/hlsl/core/HlslRenderStateSetup.js +37 -37
- package/dist/formats/hlsl/core/HlslResourceSetDescription.js +94 -94
- package/dist/formats/hlsl/core/HlslShaderBytecode.js +44 -44
- package/dist/formats/hlsl/core/analysis.js +51 -51
- package/dist/formats/hlsl/core/carbonDescriptionToRuntime.js +850 -781
- package/dist/formats/hlsl/core/carbonDescriptionToRuntime.js.map +1 -1
- package/dist/formats/hlsl/core/detailMapFamily.js +128 -0
- package/dist/formats/hlsl/core/detailMapFamily.js.map +1 -0
- package/dist/formats/hlsl/core/helpers.js +270 -270
- package/dist/formats/hlsl/core/json.js +284 -284
- package/dist/formats/hlsl/core/localLightFamily.js +133 -0
- package/dist/formats/hlsl/core/localLightFamily.js.map +1 -0
- package/dist/formats/hlsl/core/metadata.js +327 -327
- package/dist/formats/hlsl/core/render-states.js +280 -280
- package/dist/formats/hlsl/core/tr2/HlslRenderContextEnum.js +43 -43
- package/dist/formats/hlsl/core/tr2/resources/HlslEffectRes.js +320 -314
- package/dist/formats/hlsl/core/tr2/resources/HlslEffectRes.js.map +1 -1
- package/dist/formats/hlsl/core/tr2/resources/HlslShaderPermutation.js +33 -33
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectBindingManifest.js +416 -416
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectConstant.js +40 -40
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectDescription.js +62 -742
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectDescription.js.map +1 -1
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectLibrary.js +52 -52
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectParameterAnnotation.js +38 -38
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectResource.js +50 -50
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js +86 -86
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectTechnique.js +31 -31
- package/dist/formats/hlsl/core/tr2/shader/HlslPass.js +42 -42
- package/dist/formats/hlsl/core/tr2/shader/HlslSamplerDescription.js +55 -55
- package/dist/formats/hlsl/core/tr2/shader/HlslSamplerSetup.js +29 -29
- package/dist/formats/hlsl/core/tr2/shader/HlslShader.js +220 -220
- package/dist/formats/hlsl/core/tr2/shader/HlslShaderOption.js +30 -30
- package/dist/formats/hlsl/index.js +3 -3
- package/dist/formats/index.js +33 -31
- package/dist/formats/index.js.map +1 -1
- package/dist/formats/jpeg/CjsJpegFormat.js +212 -212
- package/dist/formats/jpeg/core/helpers.js +402 -402
- package/dist/formats/jpeg/core/jpeg.js +480 -480
- package/dist/formats/jpeg/index.js +2 -2
- package/dist/formats/mp3/CjsMp3Format.js +197 -197
- package/dist/formats/mp3/core/helpers.js +375 -375
- package/dist/formats/mp3/index.js +2 -2
- package/dist/formats/mp4/CjsMp4Format.js +197 -197
- package/dist/formats/mp4/core/helpers.js +484 -484
- package/dist/formats/mp4/index.js +2 -2
- package/dist/formats/obj/CjsObjFormat.js +253 -253
- package/dist/formats/obj/core/helpers.js +573 -573
- package/dist/formats/obj/core/json.js +64 -64
- package/dist/formats/obj/core/parser.js +321 -321
- package/dist/formats/obj/index.js +2 -2
- package/dist/formats/ogg/CjsOggFormat.js +143 -143
- package/dist/formats/ogg/core/helpers.js +410 -410
- package/dist/formats/ogg/core/imdct.js +178 -178
- package/dist/formats/ogg/core/vorbis.js +1017 -1017
- package/dist/formats/ogg/index.js +2 -2
- package/dist/formats/pickle/CjsPickleFormat.js +214 -0
- package/dist/formats/pickle/CjsPickleFormat.js.map +1 -0
- package/dist/formats/pickle/core/CjsPickleProtocol0Reader.js +551 -0
- package/dist/formats/pickle/core/CjsPickleProtocol0Reader.js.map +1 -0
- package/dist/formats/pickle/index.js +2 -0
- package/dist/formats/pickle/index.js.map +1 -0
- package/dist/formats/png/CjsPngFormat.js +201 -201
- package/dist/formats/png/core/helpers.js +635 -635
- package/dist/formats/png/index.js +2 -2
- package/dist/formats/red/CjsRedFormat.js +263 -263
- package/dist/formats/red/core/CjsRedReader.js +246 -246
- package/dist/formats/red/core/blackDefinitions.js +3 -3
- package/dist/formats/red/core/helpers.js +158 -158
- package/dist/formats/red/core/redGraph.js +71 -68
- package/dist/formats/red/core/redGraph.js.map +1 -1
- package/dist/formats/red/core/schema.js +4 -4
- package/dist/formats/red/index.js +2 -2
- package/dist/formats/stl/CjsStlFormat.js +365 -365
- package/dist/formats/stl/core/helpers.js +261 -261
- package/dist/formats/stl/core/json.js +51 -51
- package/dist/formats/stl/core/stl.js +642 -642
- package/dist/formats/stl/core/targets.js +173 -173
- package/dist/formats/stl/index.js +2 -2
- package/dist/formats/tga/CjsTgaFormat.js +197 -197
- package/dist/formats/tga/core/helpers.js +493 -493
- package/dist/formats/tga/index.js +2 -2
- package/dist/formats/wav/CjsWavFormat.js +198 -198
- package/dist/formats/wav/core/helpers.js +365 -365
- package/dist/formats/wav/index.js +2 -2
- package/dist/formats/webgl/CjsWebglFormat.js +199 -221
- package/dist/formats/webgl/CjsWebglFormat.js.map +1 -1
- package/dist/formats/webgl/core/buildGlslEffectContainer.js +70 -0
- package/dist/formats/webgl/core/buildGlslEffectContainer.js.map +1 -0
- package/dist/formats/webgl/core/effectPackage.js +900 -792
- package/dist/formats/webgl/core/effectPackage.js.map +1 -1
- package/dist/formats/webgl/core/errors.js +27 -27
- package/dist/formats/webgl/core/errors.js.map +1 -1
- package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js +2820 -2678
- package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
- package/dist/formats/webgl/core/glsl/DxbcGlslHelpers.js +89 -89
- package/dist/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js +486 -428
- package/dist/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js.map +1 -1
- package/dist/formats/webgl/core/glsl/packedLightFixups.js +98 -0
- package/dist/formats/webgl/core/glsl/packedLightFixups.js.map +1 -0
- package/dist/formats/webgl/core/glslBackendBlock.js +552 -0
- package/dist/formats/webgl/core/glslBackendBlock.js.map +1 -0
- package/dist/formats/webgl/core/glslBackendBodySet.js +243 -0
- package/dist/formats/webgl/core/glslBackendBodySet.js.map +1 -0
- package/dist/formats/webgl/core/{cewgCompleteness.js → glslEffectCompleteness.js} +85 -81
- package/dist/formats/webgl/core/glslEffectCompleteness.js.map +1 -0
- package/dist/formats/webgl/core/helpers.js +167 -306
- package/dist/formats/webgl/core/helpers.js.map +1 -1
- package/dist/formats/webgl/core/inspectGlslEffectContainer.js +122 -0
- package/dist/formats/webgl/core/inspectGlslEffectContainer.js.map +1 -0
- package/dist/formats/webgl/core/readGlslEffectContainer.js +303 -0
- package/dist/formats/webgl/core/readGlslEffectContainer.js.map +1 -0
- package/dist/formats/webgl/index.js +2 -2
- package/dist/formats/webgpu/CjsWebgpuFormat.js +357 -357
- package/dist/formats/webgpu/CjsWebgpuFormat.js.map +1 -1
- package/dist/formats/webgpu/core/buildCarbonEffectContainer.js +89 -197
- package/dist/formats/webgpu/core/buildCarbonEffectContainer.js.map +1 -1
- package/dist/formats/webgpu/core/{cewgpu/CewgpuContainer.js → carbonWebgpu/CarbonWebgpuContainer.js} +354 -368
- package/dist/formats/webgpu/core/carbonWebgpu/CarbonWebgpuContainer.js.map +1 -0
- package/dist/formats/webgpu/core/{cewgpu → carbonWebgpu}/containerViews.js +355 -355
- package/dist/formats/webgpu/core/carbonWebgpu/containerViews.js.map +1 -0
- package/dist/formats/webgpu/core/{cewgpu → carbonWebgpu}/validateContainer.js +90 -90
- package/dist/formats/webgpu/core/carbonWebgpu/validateContainer.js.map +1 -0
- package/dist/formats/webgpu/core/effectAnalysis.js +82 -82
- package/dist/formats/webgpu/core/effectBackendBodySet.js +289 -289
- package/dist/formats/webgpu/core/effectBackendBodySet.js.map +1 -1
- package/dist/formats/webgpu/core/errors.js +20 -20
- package/dist/formats/webgpu/core/errors.js.map +1 -1
- package/dist/formats/webgpu/core/helpers.js +443 -443
- package/dist/formats/webgpu/core/helpers.js.map +1 -1
- package/dist/formats/webgpu/core/ir/analyzeRegisterValues.js +212 -212
- package/dist/formats/webgpu/core/ir/buildControlFlow.js +220 -220
- package/dist/formats/webgpu/core/ir/indexableTemps.js +137 -137
- package/dist/formats/webgpu/core/ir/inferValueTypes.js +449 -449
- package/dist/formats/webgpu/core/ir/lowerDxbcToIr.js +494 -494
- package/dist/formats/webgpu/core/ir/resolveRegisterFlow.js +177 -177
- package/dist/formats/webgpu/core/ir/sourceLanes.js +61 -61
- package/dist/formats/webgpu/core/packageEffect.js +381 -385
- package/dist/formats/webgpu/core/packageEffect.js.map +1 -1
- package/dist/formats/webgpu/core/packageEffectSelection.js +164 -164
- package/dist/formats/webgpu/core/packageEffectSelection.js.map +1 -1
- package/dist/formats/webgpu/core/packageMetadata.js +17 -17
- package/dist/formats/webgpu/core/schema.js +4 -4
- package/dist/formats/webgpu/core/wgsl/buildResourceTransformPlan.js +263 -263
- package/dist/formats/webgpu/core/wgsl/buildResourceTransformPlan.js.map +1 -1
- package/dist/formats/webgpu/core/wgsl/buildWgslBindingPlan.js +172 -172
- package/dist/formats/webgpu/core/wgsl/buildWgslSet.js +320 -320
- package/dist/formats/webgpu/core/wgsl/buildWgslSet.js.map +1 -1
- package/dist/formats/webgpu/core/wgsl/emitWgsl.js +356 -356
- package/dist/formats/webgpu/core/wgsl/hoistEscapingValues.js +77 -77
- package/dist/formats/webgpu/core/wgsl/lowerBindingLayout.js +451 -451
- package/dist/formats/webgpu/core/wgsl/lowerComputeProgram.js +735 -735
- package/dist/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js +457 -457
- package/dist/formats/webgpu/core/wgsl/lowerFragmentProgram.js +1572 -1572
- package/dist/formats/webgpu/core/wgsl/lowerMergeHistogramsComputeProgram.js +659 -659
- package/dist/formats/webgpu/core/wgsl/lowerParticleClearComputePrograms.js +734 -734
- package/dist/formats/webgpu/core/wgsl/lowerParticleEmitComputeProgram.js +583 -583
- package/dist/formats/webgpu/core/wgsl/lowerSkinVerticesComputeProgram.js +621 -621
- package/dist/formats/webgpu/core/wgsl/lowerSortComputeProgram.js +824 -824
- package/dist/formats/webgpu/core/wgsl/lowerSortInnerComputeProgram.js +697 -697
- package/dist/formats/webgpu/core/wgsl/lowerSortStepComputeProgram.js +559 -559
- package/dist/formats/webgpu/core/wgsl/lowerVertexProgram.js +1328 -1328
- package/dist/formats/webgpu/core/wgsl/particleEmitSemanticDigest.js +110 -110
- package/dist/formats/webgpu/core/wgsl/precisionControls.js +55 -55
- package/dist/formats/webgpu/core/wgsl/selectionPlans.js +717 -717
- package/dist/formats/webgpu/core/wgsl/uniformity.js +78 -78
- package/dist/formats/webgpu/core/wgsl/validateExactComputeIr.js +196 -196
- package/dist/formats/webgpu/core/wgsl/validateHandleOperand.js +37 -37
- package/dist/formats/webgpu/index.js +2 -2
- package/dist/formats/webm/CjsWebmFormat.js +197 -197
- package/dist/formats/webm/core/helpers.js +572 -572
- package/dist/formats/webm/index.js +2 -2
- package/dist/formats/webp/CjsWebpFormat.js +140 -140
- package/dist/formats/webp/core/helpers.js +237 -237
- package/dist/formats/webp/index.js +2 -2
- package/dist/formats/wem/CjsWemFormat.js +250 -250
- package/dist/formats/wem/core/bitStream.js +261 -261
- package/dist/formats/wem/core/codebookLibrary.js +164 -164
- package/dist/formats/wem/core/helpers.js +437 -437
- package/dist/formats/wem/core/packedCodebooksAotuv603.js +30 -30
- package/dist/formats/wem/core/ptadpcm.js +77 -77
- package/dist/formats/wem/core/resolve.js +121 -121
- package/dist/formats/wem/core/wemToOgg.js +485 -485
- package/dist/formats/wem/index.js +2 -2
- package/dist/formats/yaml/CjsYamlFormat.js +134 -134
- package/dist/formats/yaml/CjsYamlFormat.js.map +1 -1
- package/dist/formats/yaml/core/CjsYamlReader.js +400 -402
- package/dist/formats/yaml/core/CjsYamlReader.js.map +1 -1
- package/dist/formats/yaml/core/helpers.js +196 -170
- package/dist/formats/yaml/core/helpers.js.map +1 -1
- package/dist/formats/yaml/index.js +2 -2
- package/dist/index.js +64 -62
- package/dist/index.js.map +1 -1
- package/dist/resource/CjsLoadingObject.js +19 -0
- package/dist/resource/CjsLoadingObject.js.map +1 -0
- package/dist/resource/CjsResource.js +801 -797
- package/dist/resource/CjsResource.js.map +1 -1
- package/dist/resource/ResourceHandlerMode.js +14 -0
- package/dist/resource/ResourceHandlerMode.js.map +1 -0
- package/dist/resource/Tr2LightProfileRes.js +32 -32
- package/dist/resource/audio/AudioGeometryResData.js +47 -47
- package/dist/resource/audio/CjsAudioBufferRes.js +86 -86
- package/dist/resource/audio/CjsAudioRes.js +213 -213
- package/dist/resource/audio/index.js +4 -4
- package/dist/resource/geometry/MeshDecalData.js +37 -37
- package/dist/resource/geometry/MeshDecalLodData.js +34 -34
- package/dist/resource/geometry/TriGeometryRes.js +675 -675
- package/dist/resource/geometry/TriGeometryResAreaData.js +59 -59
- package/dist/resource/geometry/TriGeometryResJointData.js +38 -38
- package/dist/resource/geometry/TriGeometryResLodData.js +88 -88
- package/dist/resource/geometry/TriGeometryResMeshData.js +63 -63
- package/dist/resource/geometry/TriGeometryResSkeletonData.js +34 -34
- package/dist/resource/geometry/TriJointBinding.js +38 -38
- package/dist/resource/geometry/TriMorphTargetGeometryConstants.js +46 -46
- package/dist/resource/geometry/TriRtGeometryConstants.js +88 -88
- package/dist/resource/geometry/granny/GStateBindingCallbackData.js +31 -31
- package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js +60 -60
- package/dist/resource/geometry/granny/Tr2GrannyStateRes.js +36 -36
- package/dist/resource/geometry/granny/TriGrannyRes.js +35 -35
- package/dist/resource/geometry/granny/enums.js +10 -10
- package/dist/resource/geometry/granny/index.js +6 -6
- package/dist/resource/geometry/index.js +17 -17
- package/dist/resource/index.js +54 -52
- package/dist/resource/index.js.map +1 -1
- package/dist/resource/resourceBoundary.js +64 -64
- package/dist/resource/shader/Tr2EffectRes.js +336 -431
- package/dist/resource/shader/Tr2EffectRes.js.map +1 -1
- package/dist/resource/shader/Tr2MaterialArea.js +31 -31
- package/dist/resource/shader/Tr2MaterialMesh.js +27 -27
- package/dist/resource/shader/Tr2MaterialRes.js +31 -31
- package/dist/resource/shader/Tr2Shader.js +283 -261
- package/dist/resource/shader/Tr2Shader.js.map +1 -1
- package/dist/resource/shader/Tr2ShaderPermutation.js +43 -43
- package/dist/resource/shader/index.js +17 -17
- package/dist/resource/shader/reflection/Tr2EffectConstant.js +143 -135
- package/dist/resource/shader/reflection/Tr2EffectConstant.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectDefine.js +30 -30
- package/dist/resource/shader/reflection/Tr2EffectDescription.js +114 -109
- package/dist/resource/shader/reflection/Tr2EffectDescription.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js +168 -147
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +125 -105
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectResource.js +120 -86
- package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js +372 -241
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js +78 -68
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2Pass.js +168 -111
- package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
- package/dist/resource/shader/reflection/carbonRecordFields.js +159 -0
- package/dist/resource/shader/reflection/carbonRecordFields.js.map +1 -0
- package/dist/resource/shader/reflection/shaderStage.js +22 -0
- package/dist/resource/shader/reflection/shaderStage.js.map +1 -0
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js +135 -77
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js.map +1 -1
- package/dist/resource/texture/CjsTextureArrayRes.js +472 -472
- package/dist/resource/texture/CjsTextureArrayResParameterProxy.js +179 -179
- package/dist/resource/texture/Tr2ImageRes.js +120 -120
- package/dist/resource/texture/Tr2TextureLodManager.js +82 -82
- package/dist/resource/texture/Tr2TextureLodUpdateRequest.js +37 -37
- package/dist/resource/texture/Tr2TexturePackChannel.js +37 -37
- package/dist/resource/texture/Tr2TexturePipeline.js +54 -54
- package/dist/resource/texture/Tr2TexturePipelineParams.js +34 -34
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js +40 -40
- package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js +22 -22
- package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js +34 -34
- package/dist/resource/texture/Tr2TexturePipelineStepLoad.js +31 -31
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js +43 -43
- package/dist/resource/texture/TriTextureRes.js +359 -359
- package/dist/resource/texture/index.js +15 -15
- package/dist/resource/texture/texturePipelineBehavior.js +308 -308
- package/dist/worker/CjsResManMainThreadLoader.js +89 -87
- package/dist/worker/CjsResManMainThreadLoader.js.map +1 -1
- package/dist/worker/CjsResManWorker.js +218 -217
- package/dist/worker/CjsResManWorker.js.map +1 -1
- package/dist/worker/CjsResManWorkerLoader.js +437 -434
- package/dist/worker/CjsResManWorkerLoader.js.map +1 -1
- package/dist/worker/protocol.js +12 -12
- package/docs/README.md +98 -98
- package/docs/architecture.md +118 -109
- package/docs/concepts/resource-lifecycle.md +226 -225
- package/docs/concepts/shader-resource-model.md +111 -114
- package/docs/concepts/writing-an-engine-adapter.md +115 -115
- package/docs/formats/README.md +138 -136
- package/docs/formats/carbon-effect-container.md +553 -452
- package/docs/formats/dxbc/README.md +68 -68
- package/docs/formats/dxbc/architecture.md +80 -80
- package/docs/formats/dxbc/reference/api.md +77 -77
- package/docs/formats/dxbc/reference/classes/README.md +9 -9
- package/docs/formats/dxbc/reference/decoded-output.md +122 -122
- package/docs/formats/gr2.md +160 -160
- package/docs/formats/hlsl/README.md +54 -54
- package/docs/formats/hlsl/architecture.md +65 -67
- package/docs/formats/hlsl/guides/hydrating-json-output.md +60 -62
- package/docs/formats/hlsl/guides/reading-effects.md +64 -64
- package/docs/formats/hlsl/reference/advanced-analysis.md +61 -66
- package/docs/formats/hlsl/reference/api.md +92 -98
- package/docs/formats/hlsl/reference/classes/README.md +11 -11
- package/docs/formats/hlsl/reference/json-graph.md +97 -100
- package/docs/formats/pickle.md +82 -0
- package/docs/formats/provenance.md +196 -196
- package/docs/formats/stl.md +37 -37
- package/docs/formats/webgl/README.md +115 -57
- package/docs/formats/webgl/architecture.md +69 -70
- package/docs/formats/webgl/carbon-constant-layouts.md +326 -326
- package/docs/formats/webgl/decl-io.md +1234 -1234
- package/docs/formats/webgl/memory-structured.md +890 -871
- package/docs/formats/webgl/reference/classes/README.md +9 -9
- package/docs/formats/webgl/texture-sample.md +964 -964
- package/docs/formats/webgpu/README.md +84 -84
- package/docs/formats/webgpu/architecture.md +95 -96
- package/docs/formats/webgpu/formats/{cewgpu.md → carbon-webgpu.md} +215 -216
- package/docs/formats/webgpu/guides/effect-packaging.md +189 -191
- package/docs/formats/webgpu/reference/api.md +196 -197
- package/docs/formats/webgpu/reference/classes/README.md +9 -9
- package/docs/formats/webgpu/reference/wgsl-compatibility.md +1546 -1543
- package/docs/formats/wwise.md +146 -85
- package/docs/reference/classes/README.md +35 -35
- package/docs/reference/classes/audio.md +30 -30
- package/docs/reference/classes/core.md +216 -206
- package/docs/reference/classes/dropped.md +46 -46
- package/docs/reference/classes/formats.md +944 -952
- package/docs/reference/classes/resources.md +456 -456
- package/docs/reference/classes/texture.md +26 -26
- package/docs/reference/events.md +117 -117
- package/docs/reference/motherlode-cache.md +275 -275
- package/docs/reference/queues.md +194 -110
- package/docs/reference/reload.md +107 -107
- package/docs/reference/texture-arrays.md +113 -113
- package/docs/reference/texture-pipeline.md +53 -53
- package/docs/reference/workers.md +142 -135
- package/docs/roadmap.md +150 -150
- package/format-notices/black/LICENSE +21 -21
- package/format-notices/black/NOTICE +47 -47
- package/format-notices/bnk/LICENSE +21 -21
- package/format-notices/bnk/NOTICE +21 -21
- package/format-notices/cmf/LICENSE +21 -21
- package/format-notices/cmf/NOTICE +36 -36
- package/format-notices/dds/LICENSE +21 -21
- package/format-notices/dds/NOTICE +14 -14
- package/format-notices/dxbc/LICENSE +21 -21
- package/format-notices/dxbc/NOTICE +20 -20
- package/format-notices/fbx/LICENSE +21 -21
- package/format-notices/fbx/NOTICE +14 -14
- package/format-notices/flac/LICENSE +21 -21
- package/format-notices/flac/NOTICE +14 -14
- package/format-notices/gif/LICENSE +21 -21
- package/format-notices/gif/NOTICE +14 -14
- package/format-notices/gltf/LICENSE +21 -21
- package/format-notices/gltf/NOTICE +27 -27
- package/format-notices/gr2/LICENSE +21 -21
- package/format-notices/gr2/NOTICE +60 -60
- package/format-notices/gr2/THIRD-PARTY-NOTICES.md +93 -93
- package/format-notices/hlsl/LICENSE +21 -21
- package/format-notices/hlsl/NOTICE +25 -25
- package/format-notices/jpeg/LICENSE +21 -21
- package/format-notices/jpeg/NOTICE +14 -14
- package/format-notices/mp3/LICENSE +21 -21
- package/format-notices/mp3/NOTICE +14 -14
- package/format-notices/mp4/LICENSE +21 -21
- package/format-notices/mp4/NOTICE +14 -14
- package/format-notices/obj/LICENSE +21 -21
- package/format-notices/obj/NOTICE +26 -26
- package/format-notices/ogg/LICENSE +21 -21
- package/format-notices/ogg/NOTICE +28 -28
- package/format-notices/png/LICENSE +21 -21
- package/format-notices/png/NOTICE +14 -14
- package/format-notices/red/LICENSE +21 -21
- package/format-notices/red/NOTICE +31 -31
- package/format-notices/stl/LICENSE +21 -21
- package/format-notices/stl/NOTICE +21 -21
- package/format-notices/tga/LICENSE +21 -21
- package/format-notices/tga/NOTICE +14 -14
- package/format-notices/wav/LICENSE +21 -21
- package/format-notices/wav/NOTICE +14 -14
- package/format-notices/webgl/LICENSE +21 -21
- package/format-notices/webgl/NOTICE +35 -35
- package/format-notices/webgpu/LICENSE +21 -21
- package/format-notices/webgpu/NOTICE +31 -31
- package/format-notices/webm/LICENSE +21 -21
- package/format-notices/webm/NOTICE +14 -14
- package/format-notices/webp/LICENSE +21 -21
- package/format-notices/webp/NOTICE +14 -14
- package/format-notices/wem/LICENSE +57 -57
- package/format-notices/wem/NOTICE +33 -33
- package/format-notices/yaml/LICENSE +21 -21
- package/format-notices/yaml/NOTICE +44 -44
- package/package.json +63 -63
- package/dist/format/carbonEffect/carbonDescriptionFromPortable.js +0 -372
- package/dist/format/carbonEffect/carbonDescriptionFromPortable.js.map +0 -1
- package/dist/format/effect/effectReflectionPackage.js +0 -636
- package/dist/format/effect/effectReflectionPackage.js.map +0 -1
- package/dist/formats/hlsl/core/HlslReader.js +0 -16
- package/dist/formats/hlsl/core/HlslReader.js.map +0 -1
- package/dist/formats/hlsl/core/portableReflection.js +0 -848
- package/dist/formats/hlsl/core/portableReflection.js.map +0 -1
- package/dist/formats/hlsl/portable.js +0 -2
- package/dist/formats/hlsl/portable.js.map +0 -1
- package/dist/formats/webgl/core/cewg/CewgPackage.js +0 -340
- package/dist/formats/webgl/core/cewg/CewgPackage.js.map +0 -1
- package/dist/formats/webgl/core/cewg/CewgPackageBuilder.js +0 -104
- package/dist/formats/webgl/core/cewg/CewgPackageBuilder.js.map +0 -1
- package/dist/formats/webgl/core/cewg/binary.js +0 -19
- package/dist/formats/webgl/core/cewg/binary.js.map +0 -1
- package/dist/formats/webgl/core/cewgCompleteness.js.map +0 -1
- package/dist/formats/webgl/core/effectPackageValidation.js +0 -331
- package/dist/formats/webgl/core/effectPackageValidation.js.map +0 -1
- package/dist/formats/webgpu/core/cewgpu/CewgpuContainer.js.map +0 -1
- package/dist/formats/webgpu/core/cewgpu/containerViews.js.map +0 -1
- package/dist/formats/webgpu/core/cewgpu/validateContainer.js.map +0 -1
- package/dist/resource/shader/portable.js +0 -33
- package/dist/resource/shader/portable.js.map +0 -1
- package/docs/formats/hlsl/reference/portable-reflection.md +0 -141
- package/docs/formats/webgl/effect-reflection.md +0 -127
|
@@ -1,196 +1,196 @@
|
|
|
1
|
-
# Format ownership and fork provenance
|
|
2
|
-
|
|
3
|
-
Status: Stable
|
|
4
|
-
Scope: `@carbonenginejs/runtime-resource/formats`
|
|
5
|
-
Audience: Users, integrators, and maintainers
|
|
6
|
-
Summary: Records where each format implementation came from, retained snapshots and digests, and what was deliberately not copied.
|
|
7
|
-
|
|
8
|
-
On 2026-07-13, the non-shader runtime format implementations below were copied
|
|
9
|
-
once into `runtime-resource`. The table records the donor revisions or
|
|
10
|
-
working-tree states used for that migration; it does not assert that a
|
|
11
|
-
standalone repository still exists. Any surviving standalone repository is
|
|
12
|
-
historical provenance, not an upstream for the runtime copy.
|
|
13
|
-
|
|
14
|
-
Copied paths were `src/` and the behavioral `test/` corpus. Package publishing
|
|
15
|
-
scripts and CLIs were not copied. Exact donor license and notice files are kept
|
|
16
|
-
under `format-notices/<format>/`.
|
|
17
|
-
|
|
18
|
-
| Legacy package | Source revision/state | Runtime class | Runtime import |
|
|
19
|
-
|---|---|---|---|
|
|
20
|
-
| `format-black` | `9fcaaff9e5f28c90b628d8a10b7c79aff7913a90` | `CjsBlackFormat` | `@carbonenginejs/runtime-resource/formats/black` |
|
|
21
|
-
| `format-cmf` | unborn working-tree snapshot | `CjsCmfFormat` | `@carbonenginejs/runtime-resource/formats/cmf` |
|
|
22
|
-
| `format-dds` | `66fa149cd826e1114ad0be84479f89dee753ed76` | `CjsDdsFormat` | `@carbonenginejs/runtime-resource/formats/dds` |
|
|
23
|
-
| `format-dxbc` | `3790bda40d7d0d3b774eeb4d82a13827dbe332df` | `CjsDxbcFormat` | `@carbonenginejs/runtime-resource/formats/dxbc` |
|
|
24
|
-
| `format-hlsl` | `e494203f3a1e10866fbe148b460297045cd959ed` | `CjsHlslFormat` | `@carbonenginejs/runtime-resource/formats/hlsl` |
|
|
25
|
-
| `format-webgl` | `428bc141d090b7416745ea43bf3fc320b9e99b43` | `CjsWebglFormat` | `@carbonenginejs/runtime-resource/formats/webgl` |
|
|
26
|
-
| `format-webgpu` | `ffabae8c6a6c658f30807582300aa97522964ee7` | `CjsWebgpuFormat` | `@carbonenginejs/runtime-resource/formats/webgpu` |
|
|
27
|
-
| `format-fbx` | `8d0fcc2fe44c8096b35e360a903bff30b49eb592` | `CjsFbxFormat` | `@carbonenginejs/runtime-resource/formats/fbx` |
|
|
28
|
-
| `format-flac` | unborn working-tree snapshot | `CjsFlacFormat` | `@carbonenginejs/runtime-resource/formats/flac` |
|
|
29
|
-
| `format-gif` | `5d831c5c0533a9579682f776274574289a520899` | `CjsGifFormat` | `@carbonenginejs/runtime-resource/formats/gif` |
|
|
30
|
-
| `format-gltf` | `d0dadf920828bceec987c2a5fa1f161f81db28aa` | `CjsGltfFormat` | `@carbonenginejs/runtime-resource/formats/gltf` |
|
|
31
|
-
| `format-jpeg` | `bed2253ea979bba27812420fa897987d82a91793` | `CjsJpegFormat` | `@carbonenginejs/runtime-resource/formats/jpeg` |
|
|
32
|
-
| `format-mp3` | unborn working-tree snapshot | `CjsMp3Format` | `@carbonenginejs/runtime-resource/formats/mp3` |
|
|
33
|
-
| `format-mp4` | `cffc5a57b115a99ed9e0947a6b9d3390ffc3581c` | `CjsMp4Format` | `@carbonenginejs/runtime-resource/formats/mp4` |
|
|
34
|
-
| `format-obj` | `e5d3f9a1520c7855bd5b6edc1e2304a7b4e18176` | `CjsObjFormat` | `@carbonenginejs/runtime-resource/formats/obj` |
|
|
35
|
-
| `format-ogg` | unborn working-tree snapshot | `CjsOggFormat` | `@carbonenginejs/runtime-resource/formats/ogg` |
|
|
36
|
-
| `format-png` | `04dbb7c0f289043c3c32d9141ec3ef74aeeb1c43` | `CjsPngFormat` | `@carbonenginejs/runtime-resource/formats/png` |
|
|
37
|
-
| `format-red` | `98beab6988111418d6e09827b92d27e08da4c05b` | `CjsRedFormat` | `@carbonenginejs/runtime-resource/formats/red` |
|
|
38
|
-
| `format-stl` | `4858f9a37bf140a3c544fa30a13a6fcce015247b` | `CjsStlFormat` | `@carbonenginejs/runtime-resource/formats/stl` |
|
|
39
|
-
| `format-tga` | `b0f9df263727057537b2279322e8cd088f366179` | `CjsTgaFormat` | `@carbonenginejs/runtime-resource/formats/tga` |
|
|
40
|
-
| `format-wav` | unborn working-tree snapshot | `CjsWavFormat` | `@carbonenginejs/runtime-resource/formats/wav` |
|
|
41
|
-
| `format-webm` | `459203ac293d0d53fff0e43494b7e47d8d4c92bd` | `CjsWebmFormat` | `@carbonenginejs/runtime-resource/formats/webm` |
|
|
42
|
-
| `format-webp` | `19155e9cc7ae05845c23a3c259d3a586569eba40` | `CjsWebpFormat` | `@carbonenginejs/runtime-resource/formats/webp` |
|
|
43
|
-
| `format-yaml` | `3d7e1d1cf9b7a936283d6050efe43a0a9fadb6a4` | `CjsYamlFormat` | `@carbonenginejs/runtime-resource/formats/yaml` |
|
|
44
|
-
|
|
45
|
-
The unborn donors had no commit-addressable `HEAD`; this document deliberately
|
|
46
|
-
records them as working-tree snapshots rather than inventing a revision. Their
|
|
47
|
-
copied runtime files are the deterministic retained snapshot.
|
|
48
|
-
|
|
49
|
-
On 2026-07-24, following `format-gr2`'s MIT relicense (its EUPL-derived
|
|
50
|
-
BitKnit decoder was replaced by a clean-room implementation written from the
|
|
51
|
-
published specification in that package's `docs/formats/bitknit2.md`), the
|
|
52
|
-
GR2/GSF reader joined the runtime copies:
|
|
53
|
-
|
|
54
|
-
| Legacy package | Source revision/state | Runtime class | Runtime import |
|
|
55
|
-
|---|---|---|---|
|
|
56
|
-
| `format-gr2` | `fa64607de7a3a96ed3b1aec5288bf71057642043` (v0.2.0, MIT) | `CjsGr2Format` | `@carbonenginejs/runtime-resource/formats/gr2` |
|
|
57
|
-
|
|
58
|
-
The donor engine was folded into the single public `CjsGr2Format` class, so
|
|
59
|
-
the copied `CjsFormatGr2` name is gone and `formats/gr2/core/` holds only
|
|
60
|
-
role-named helper modules, matching every other format. Donor license and
|
|
61
|
-
notice files are kept under `format-notices/gr2/`.
|
|
62
|
-
|
|
63
|
-
## Black definition snapshot
|
|
64
|
-
|
|
65
|
-
The Black reader uses the package-owned generated definition snapshot at
|
|
66
|
-
`src/formats/black/core/black-schema-v1-2026-07-23.json`. The Red format exposes
|
|
67
|
-
the same catalog for discovery, but its YAML reader currently accepts named
|
|
68
|
-
fields without registry enforcement. The refreshed consumer snapshot landed
|
|
69
|
-
in runtime-resource revision `6beda70` with SHA-256
|
|
70
|
-
`9234DD86DBB5EB3676EF060E383ADBCE8F073941E76A32865D3528DD5DA7B737`.
|
|
71
|
-
Its exact tools-core generator revision was not recorded and remains unknown;
|
|
72
|
-
this page does not infer one from the consumer commit.
|
|
73
|
-
|
|
74
|
-
This retained generated artifact keeps the published readers deterministic and
|
|
75
|
-
browser-safe without a runtime dependency on a sibling checkout or an
|
|
76
|
-
unpublished generator export. Future schema generation is owned by
|
|
77
|
-
`tools-core/schema`. A consumer of generated output is responsible for
|
|
78
|
-
reviewing and copying the result into its own worktree; an updated snapshot
|
|
79
|
-
must record the generator revision and new digest here.
|
|
80
|
-
|
|
81
|
-
This generator boundary is transitional. As runtime classes gain embedded
|
|
82
|
-
schema, the shared snapshot and its copy-in step can be reduced and eventually
|
|
83
|
-
removed once every required class is self-describing.
|
|
84
|
-
|
|
85
|
-
## Native additions
|
|
86
|
-
|
|
87
|
-
Formats below were authored directly in `runtime-resource` and have no legacy
|
|
88
|
-
donor package. Their `format-notices/<format>/` entries record third-party
|
|
89
|
-
format attribution rather than fork provenance.
|
|
90
|
-
|
|
91
|
-
| Format | Runtime class | Runtime import | Notes |
|
|
92
|
-
|---|---|---|---|
|
|
93
|
-
| Wwise soundbank (`.bnk`) | `CjsBnkFormat` | `@carbonenginejs/runtime-resource/formats/bnk` | Original code; chunk layout from public community documentation (ww2ogg, vgmstream, wwiser), no code copied. Also carries the SoundbanksInfo JSON helpers (`parseSoundbanksInfo`, `buildSoundbanksCatalog`, `joinSoundbanksInfo`) and `wwiseIdFromName` (FNV-1 32 of the lowercased name, verified against EVE bank/language ids). HIRC entries additionally decode version-stable typed fields (event action lists, action type/target, sound and music-track source ids), pinned by hexdump against bank generator version 150, and the `wwise` static namespace groups the domain toolkit (SoundbanksInfo helpers, id hash, `wwise.eventMediaFromBanks` event → media resolution over inspected banks — graph interpretation for consumers; never used by the resource lifecycle). |
|
|
94
|
-
| Wwise media (`.wem`) | `CjsWemFormat` | `@carbonenginejs/runtime-resource/formats/wem` | Original code; container/codec-tag behavior from public community documentation (ww2ogg, vgmstream, wwiser), no code copied. Includes a Wwise-Vorbis→Ogg repacker (`emit: "ogg"`), an original reimplementation of the ww2ogg algorithm with inline granule computation (no revorb pass needed), and a PTADPCM/16-bit-PCM decoder (`emit: "pcm"` / `toPcm()`, AudioBuffer-ready float32; PTADPCM algorithm from community documentation, verified against EVE media). |
|
|
95
|
-
|
|
96
|
-
The BNK toolkit also exposes `wwise.sfxNodesFromBanks`: typed, exact-end
|
|
97
|
-
version-150 Random/Sequence, Switch/State, and Layer tails plus event/action
|
|
98
|
-
records and explicit parser diagnostics. It preserves resource facts for
|
|
99
|
-
consumer-owned lowering and is never invoked by the resource lifecycle.
|
|
100
|
-
|
|
101
|
-
## Post-fork additions inside copied formats
|
|
102
|
-
|
|
103
|
-
- `formats/dds` gained original, dependency-free **BC6H and BC7 CPU decoders**
|
|
104
|
-
in `runtime-resource` 0.8.0 (2026-07-21). BC6H covers all fourteen modes,
|
|
105
|
-
signed and unsigned HDR, transformed endpoints, partition/anchor fixups,
|
|
106
|
-
interpolation, reserved opaque-black modes, and float RGBA output. BC7 covers
|
|
107
|
-
all eight modes,
|
|
108
|
-
two- and three-subset partitions, anchor fixups, P-bits, dual index streams,
|
|
109
|
-
channel rotation, edge blocks, and the reserved transparent mode. Fixed bit
|
|
110
|
-
layouts and tables follow the Khronos Data Format Specification and Microsoft
|
|
111
|
-
BC6H/BC7 documentation. Tests cover every mode and signed/unsigned fixtures;
|
|
112
|
-
BC7 was also checked against randomized valid-mode blocks and both decoders
|
|
113
|
-
were exercised on real EVE textures acquired through `tools-core`.
|
|
114
|
-
- `formats/stl` received a writer hardening pass (2026-07-18) without changing
|
|
115
|
-
its donor origin: binary provenance headers now round-trip the caller's solid
|
|
116
|
-
name, shared triangle indices are validated as in-range safe integers, scaled
|
|
117
|
-
coordinates must remain finite, and binary coordinates must fit float32
|
|
118
|
-
instead of silently becoming infinities. Writer JSDoc and ASCII/binary
|
|
119
|
-
round-trip/error coverage were expanded in the runtime-owned copy.
|
|
120
|
-
- `formats/cmf` gained a **binary CMF v1 writer** (2026-07-15,
|
|
121
|
-
`src/formats/cmf/core/writer.js`, `CjsCmfFormat.write`/`writeAsync` and
|
|
122
|
-
`Write`/`WriteAsync`): original code implementing CarbonEngine's
|
|
123
|
-
`cmf::BuildFile` behavior — tagged self-relative span flattening with leaf
|
|
124
|
-
chunk dedup, BufferView→section remapping in first-encounter order,
|
|
125
|
-
meshoptimizer vertex/index compression (index compression canonicalizes
|
|
126
|
-
triangle rotation, matching the engine's own writer test expectations), and
|
|
127
|
-
the post-crc32 file checksum. Verified by write→read roundtrips against the
|
|
128
|
-
runtime reader; CarbonEngine's `mesh` CMF sources were the behavioral
|
|
129
|
-
reference, no code copied. `writeShared`/`writeSharedAsync` plus
|
|
130
|
-
`core/pack.js` (channel interleaving, index packing, unique buffer-index
|
|
131
|
-
assignment) serialize shared geometry directly, enabling GR2/OBJ/glTF→CMF —
|
|
132
|
-
verified against real EVE `.gr2` models fetched via
|
|
133
|
-
`@carbonenginejs/tool-index` (positions exact, triangles equivalent).
|
|
134
|
-
- `formats/cmf` also gained the **GR2 skeleton/animation converter**
|
|
135
|
-
(2026-07-15, `src/formats/cmf/core/gr2Anim.js`, applied automatically by
|
|
136
|
-
`writeShared`): GR2-shaped skeletons (root list or `models[].skeleton`)
|
|
137
|
-
convert to CMF bones/parents/rest transforms with inverse binds rebuilt
|
|
138
|
-
from the rest hierarchy; decoded Granny curves convert to CMF Step/Linear
|
|
139
|
-
channels — degree ≤ 1 exactly, degree 2 via adaptive de Boor resampling
|
|
140
|
-
with discontinuities snapped to one float32 ULP. Consumes only decoded
|
|
141
|
-
`{knots, controls}` data so the MIT runtime stays independent of the GR2
|
|
142
|
-
package. Validated on EVE ships (cde3_t3, gde3_t3, cfaux1_t1, mfaux1_t1:
|
|
143
|
-
3,377 channels ≤ 8.3e-4 positional / ≤ 0.14° rotational vs the GR2 runtime
|
|
144
|
-
sampler; 9 Granny curve formats) and characters (basicfemale: 132-bone
|
|
145
|
-
skeleton, exact skin weights).
|
|
146
|
-
- `formats/ogg` gained a pure-JS **Ogg Vorbis PCM decoder** (2026-07-15,
|
|
147
|
-
`src/formats/ogg/core/{vorbis.js,imdct.js}`, `emit: "pcm"`/`"audio"`):
|
|
148
|
-
original code implementing the Vorbis I specification (floor 1, residues
|
|
149
|
-
0/1/2, square-polar coupling, FFT-based IMDCT, windowed overlap-add).
|
|
150
|
-
stb_vorbis (public domain) was consulted as a behavioral reference and is
|
|
151
|
-
the source of the spec's floor1 `inverse_db_table` constants; no licensed
|
|
152
|
-
code was copied. Validated bit-comparable to ffmpeg (max diff ~3e-8) and
|
|
153
|
-
vgmstream (±1 int16 LSB) across the EVE Vorbis corpus.
|
|
154
|
-
|
|
155
|
-
## Wem packed-codebook snapshot
|
|
156
|
-
|
|
157
|
-
The wem Ogg repacker ships a package-owned copy of the aoTuV 6.03 packed
|
|
158
|
-
Vorbis codebook library at
|
|
159
|
-
`src/formats/wem/core/packedCodebooksAotuv603.js` (base64 module). It was
|
|
160
|
-
copied byte-identically from `packed_codebooks_aoTuV_603.bin` in the ww2ogg
|
|
161
|
-
distribution (`github.com/hcs64/ww2ogg`), 74,387 bytes, SHA-256
|
|
162
|
-
`00a93eab267d281401b1efd54e888a2e183299b9e6c446c48d09f701a89d9d27`, retrieved
|
|
163
|
-
2026-07-15. The data is BSD-licensed (Xiph.org Foundation, Adam Gashlin);
|
|
164
|
-
attribution and the full license terms are recorded in
|
|
165
|
-
`format-notices/wem/NOTICE` and `format-notices/wem/LICENSE`. An updated
|
|
166
|
-
snapshot must record its new source and digest here.
|
|
167
|
-
|
|
168
|
-
## Deliberately not copied
|
|
169
|
-
|
|
170
|
-
- `format-gr2` migrated into `formats/gr2` on 2026-07-24 (see the dated
|
|
171
|
-
table above) after its EUPL constraint was resolved; its standalone
|
|
172
|
-
repository is now a frozen legacy distribution like the other donors.
|
|
173
|
-
- `format-carbon` is historical provenance for the current copied snapshot,
|
|
174
|
-
not the authority for future regeneration. `tools-core/schema` owns schema
|
|
175
|
-
generation, while each consuming package reviews and copies generated output
|
|
176
|
-
into its own worktree. Black consumes the retained snapshot; Red exposes the
|
|
177
|
-
copied catalog but does not yet enforce it while reading YAML fields.
|
|
178
|
-
- The shader formats were excluded from the original migration while their
|
|
179
|
-
implementations were still being finished. That sequencing guard was lifted
|
|
180
|
-
on 2026-07-29 and they moved in as ordinary formats. All four landed:
|
|
181
|
-
`formats/dxbc`, `formats/hlsl`, `formats/webgl`, and `formats/webgpu`. Their
|
|
182
|
-
standalone repositories remain in place, unmodified by the move. Their
|
|
183
|
-
local-only test fixtures are game-derived and were deliberately not copied;
|
|
184
|
-
the suites that need them skip with an explicit reason.
|
|
185
|
-
|
|
186
|
-
## Typed-array ownership adjustments
|
|
187
|
-
|
|
188
|
-
The runtime copies preserve caller byte objects by reference. During the fork,
|
|
189
|
-
three avoidable source-buffer copies were changed to views:
|
|
190
|
-
|
|
191
|
-
- CMF compressed sections use `Uint8Array.subarray`.
|
|
192
|
-
- glTF GLB chunks use `Uint8Array.subarray`.
|
|
193
|
-
- FBX raw binary property payloads use `Uint8Array.subarray`.
|
|
194
|
-
|
|
195
|
-
Decoder output buffers and GIF per-frame snapshots still allocate because those
|
|
196
|
-
values have independent semantic identity.
|
|
1
|
+
# Format ownership and fork provenance
|
|
2
|
+
|
|
3
|
+
Status: Stable
|
|
4
|
+
Scope: `@carbonenginejs/runtime-resource/formats`
|
|
5
|
+
Audience: Users, integrators, and maintainers
|
|
6
|
+
Summary: Records where each format implementation came from, retained snapshots and digests, and what was deliberately not copied.
|
|
7
|
+
|
|
8
|
+
On 2026-07-13, the non-shader runtime format implementations below were copied
|
|
9
|
+
once into `runtime-resource`. The table records the donor revisions or
|
|
10
|
+
working-tree states used for that migration; it does not assert that a
|
|
11
|
+
standalone repository still exists. Any surviving standalone repository is
|
|
12
|
+
historical provenance, not an upstream for the runtime copy.
|
|
13
|
+
|
|
14
|
+
Copied paths were `src/` and the behavioral `test/` corpus. Package publishing
|
|
15
|
+
scripts and CLIs were not copied. Exact donor license and notice files are kept
|
|
16
|
+
under `format-notices/<format>/`.
|
|
17
|
+
|
|
18
|
+
| Legacy package | Source revision/state | Runtime class | Runtime import |
|
|
19
|
+
|---|---|---|---|
|
|
20
|
+
| `format-black` | `9fcaaff9e5f28c90b628d8a10b7c79aff7913a90` | `CjsBlackFormat` | `@carbonenginejs/runtime-resource/formats/black` |
|
|
21
|
+
| `format-cmf` | unborn working-tree snapshot | `CjsCmfFormat` | `@carbonenginejs/runtime-resource/formats/cmf` |
|
|
22
|
+
| `format-dds` | `66fa149cd826e1114ad0be84479f89dee753ed76` | `CjsDdsFormat` | `@carbonenginejs/runtime-resource/formats/dds` |
|
|
23
|
+
| `format-dxbc` | `3790bda40d7d0d3b774eeb4d82a13827dbe332df` | `CjsDxbcFormat` | `@carbonenginejs/runtime-resource/formats/dxbc` |
|
|
24
|
+
| `format-hlsl` | `e494203f3a1e10866fbe148b460297045cd959ed` | `CjsHlslFormat` | `@carbonenginejs/runtime-resource/formats/hlsl` |
|
|
25
|
+
| `format-webgl` | `428bc141d090b7416745ea43bf3fc320b9e99b43` | `CjsWebglFormat` | `@carbonenginejs/runtime-resource/formats/webgl` |
|
|
26
|
+
| `format-webgpu` | `ffabae8c6a6c658f30807582300aa97522964ee7` | `CjsWebgpuFormat` | `@carbonenginejs/runtime-resource/formats/webgpu` |
|
|
27
|
+
| `format-fbx` | `8d0fcc2fe44c8096b35e360a903bff30b49eb592` | `CjsFbxFormat` | `@carbonenginejs/runtime-resource/formats/fbx` |
|
|
28
|
+
| `format-flac` | unborn working-tree snapshot | `CjsFlacFormat` | `@carbonenginejs/runtime-resource/formats/flac` |
|
|
29
|
+
| `format-gif` | `5d831c5c0533a9579682f776274574289a520899` | `CjsGifFormat` | `@carbonenginejs/runtime-resource/formats/gif` |
|
|
30
|
+
| `format-gltf` | `d0dadf920828bceec987c2a5fa1f161f81db28aa` | `CjsGltfFormat` | `@carbonenginejs/runtime-resource/formats/gltf` |
|
|
31
|
+
| `format-jpeg` | `bed2253ea979bba27812420fa897987d82a91793` | `CjsJpegFormat` | `@carbonenginejs/runtime-resource/formats/jpeg` |
|
|
32
|
+
| `format-mp3` | unborn working-tree snapshot | `CjsMp3Format` | `@carbonenginejs/runtime-resource/formats/mp3` |
|
|
33
|
+
| `format-mp4` | `cffc5a57b115a99ed9e0947a6b9d3390ffc3581c` | `CjsMp4Format` | `@carbonenginejs/runtime-resource/formats/mp4` |
|
|
34
|
+
| `format-obj` | `e5d3f9a1520c7855bd5b6edc1e2304a7b4e18176` | `CjsObjFormat` | `@carbonenginejs/runtime-resource/formats/obj` |
|
|
35
|
+
| `format-ogg` | unborn working-tree snapshot | `CjsOggFormat` | `@carbonenginejs/runtime-resource/formats/ogg` |
|
|
36
|
+
| `format-png` | `04dbb7c0f289043c3c32d9141ec3ef74aeeb1c43` | `CjsPngFormat` | `@carbonenginejs/runtime-resource/formats/png` |
|
|
37
|
+
| `format-red` | `98beab6988111418d6e09827b92d27e08da4c05b` | `CjsRedFormat` | `@carbonenginejs/runtime-resource/formats/red` |
|
|
38
|
+
| `format-stl` | `4858f9a37bf140a3c544fa30a13a6fcce015247b` | `CjsStlFormat` | `@carbonenginejs/runtime-resource/formats/stl` |
|
|
39
|
+
| `format-tga` | `b0f9df263727057537b2279322e8cd088f366179` | `CjsTgaFormat` | `@carbonenginejs/runtime-resource/formats/tga` |
|
|
40
|
+
| `format-wav` | unborn working-tree snapshot | `CjsWavFormat` | `@carbonenginejs/runtime-resource/formats/wav` |
|
|
41
|
+
| `format-webm` | `459203ac293d0d53fff0e43494b7e47d8d4c92bd` | `CjsWebmFormat` | `@carbonenginejs/runtime-resource/formats/webm` |
|
|
42
|
+
| `format-webp` | `19155e9cc7ae05845c23a3c259d3a586569eba40` | `CjsWebpFormat` | `@carbonenginejs/runtime-resource/formats/webp` |
|
|
43
|
+
| `format-yaml` | `3d7e1d1cf9b7a936283d6050efe43a0a9fadb6a4` | `CjsYamlFormat` | `@carbonenginejs/runtime-resource/formats/yaml` |
|
|
44
|
+
|
|
45
|
+
The unborn donors had no commit-addressable `HEAD`; this document deliberately
|
|
46
|
+
records them as working-tree snapshots rather than inventing a revision. Their
|
|
47
|
+
copied runtime files are the deterministic retained snapshot.
|
|
48
|
+
|
|
49
|
+
On 2026-07-24, following `format-gr2`'s MIT relicense (its EUPL-derived
|
|
50
|
+
BitKnit decoder was replaced by a clean-room implementation written from the
|
|
51
|
+
published specification in that package's `docs/formats/bitknit2.md`), the
|
|
52
|
+
GR2/GSF reader joined the runtime copies:
|
|
53
|
+
|
|
54
|
+
| Legacy package | Source revision/state | Runtime class | Runtime import |
|
|
55
|
+
|---|---|---|---|
|
|
56
|
+
| `format-gr2` | `fa64607de7a3a96ed3b1aec5288bf71057642043` (v0.2.0, MIT) | `CjsGr2Format` | `@carbonenginejs/runtime-resource/formats/gr2` |
|
|
57
|
+
|
|
58
|
+
The donor engine was folded into the single public `CjsGr2Format` class, so
|
|
59
|
+
the copied `CjsFormatGr2` name is gone and `formats/gr2/core/` holds only
|
|
60
|
+
role-named helper modules, matching every other format. Donor license and
|
|
61
|
+
notice files are kept under `format-notices/gr2/`.
|
|
62
|
+
|
|
63
|
+
## Black definition snapshot
|
|
64
|
+
|
|
65
|
+
The Black reader uses the package-owned generated definition snapshot at
|
|
66
|
+
`src/formats/black/core/black-schema-v1-2026-07-23.json`. The Red format exposes
|
|
67
|
+
the same catalog for discovery, but its YAML reader currently accepts named
|
|
68
|
+
fields without registry enforcement. The refreshed consumer snapshot landed
|
|
69
|
+
in runtime-resource revision `6beda70` with SHA-256
|
|
70
|
+
`9234DD86DBB5EB3676EF060E383ADBCE8F073941E76A32865D3528DD5DA7B737`.
|
|
71
|
+
Its exact tools-core generator revision was not recorded and remains unknown;
|
|
72
|
+
this page does not infer one from the consumer commit.
|
|
73
|
+
|
|
74
|
+
This retained generated artifact keeps the published readers deterministic and
|
|
75
|
+
browser-safe without a runtime dependency on a sibling checkout or an
|
|
76
|
+
unpublished generator export. Future schema generation is owned by
|
|
77
|
+
`tools-core/schema`. A consumer of generated output is responsible for
|
|
78
|
+
reviewing and copying the result into its own worktree; an updated snapshot
|
|
79
|
+
must record the generator revision and new digest here.
|
|
80
|
+
|
|
81
|
+
This generator boundary is transitional. As runtime classes gain embedded
|
|
82
|
+
schema, the shared snapshot and its copy-in step can be reduced and eventually
|
|
83
|
+
removed once every required class is self-describing.
|
|
84
|
+
|
|
85
|
+
## Native additions
|
|
86
|
+
|
|
87
|
+
Formats below were authored directly in `runtime-resource` and have no legacy
|
|
88
|
+
donor package. Their `format-notices/<format>/` entries record third-party
|
|
89
|
+
format attribution rather than fork provenance.
|
|
90
|
+
|
|
91
|
+
| Format | Runtime class | Runtime import | Notes |
|
|
92
|
+
|---|---|---|---|
|
|
93
|
+
| Wwise soundbank (`.bnk`) | `CjsBnkFormat` | `@carbonenginejs/runtime-resource/formats/bnk` | Original code; chunk layout from public community documentation (ww2ogg, vgmstream, wwiser), no code copied. Also carries the SoundbanksInfo JSON helpers (`parseSoundbanksInfo`, `buildSoundbanksCatalog`, `joinSoundbanksInfo`) and `wwiseIdFromName` (FNV-1 32 of the lowercased name, verified against EVE bank/language ids). HIRC entries additionally decode version-stable typed fields (event action lists, action type/target, sound and music-track source ids), pinned by hexdump against bank generator version 150, and the `wwise` static namespace groups the domain toolkit (SoundbanksInfo helpers, id hash, `wwise.eventMediaFromBanks` event → media resolution over inspected banks — graph interpretation for consumers; never used by the resource lifecycle). |
|
|
94
|
+
| Wwise media (`.wem`) | `CjsWemFormat` | `@carbonenginejs/runtime-resource/formats/wem` | Original code; container/codec-tag behavior from public community documentation (ww2ogg, vgmstream, wwiser), no code copied. Includes a Wwise-Vorbis→Ogg repacker (`emit: "ogg"`), an original reimplementation of the ww2ogg algorithm with inline granule computation (no revorb pass needed), and a PTADPCM/16-bit-PCM decoder (`emit: "pcm"` / `toPcm()`, AudioBuffer-ready float32; PTADPCM algorithm from community documentation, verified against EVE media). |
|
|
95
|
+
|
|
96
|
+
The BNK toolkit also exposes `wwise.sfxNodesFromBanks`: typed, exact-end
|
|
97
|
+
version-150 Random/Sequence, Switch/State, and Layer tails plus event/action
|
|
98
|
+
records and explicit parser diagnostics. It preserves resource facts for
|
|
99
|
+
consumer-owned lowering and is never invoked by the resource lifecycle.
|
|
100
|
+
|
|
101
|
+
## Post-fork additions inside copied formats
|
|
102
|
+
|
|
103
|
+
- `formats/dds` gained original, dependency-free **BC6H and BC7 CPU decoders**
|
|
104
|
+
in `runtime-resource` 0.8.0 (2026-07-21). BC6H covers all fourteen modes,
|
|
105
|
+
signed and unsigned HDR, transformed endpoints, partition/anchor fixups,
|
|
106
|
+
interpolation, reserved opaque-black modes, and float RGBA output. BC7 covers
|
|
107
|
+
all eight modes,
|
|
108
|
+
two- and three-subset partitions, anchor fixups, P-bits, dual index streams,
|
|
109
|
+
channel rotation, edge blocks, and the reserved transparent mode. Fixed bit
|
|
110
|
+
layouts and tables follow the Khronos Data Format Specification and Microsoft
|
|
111
|
+
BC6H/BC7 documentation. Tests cover every mode and signed/unsigned fixtures;
|
|
112
|
+
BC7 was also checked against randomized valid-mode blocks and both decoders
|
|
113
|
+
were exercised on real EVE textures acquired through `tools-core`.
|
|
114
|
+
- `formats/stl` received a writer hardening pass (2026-07-18) without changing
|
|
115
|
+
its donor origin: binary provenance headers now round-trip the caller's solid
|
|
116
|
+
name, shared triangle indices are validated as in-range safe integers, scaled
|
|
117
|
+
coordinates must remain finite, and binary coordinates must fit float32
|
|
118
|
+
instead of silently becoming infinities. Writer JSDoc and ASCII/binary
|
|
119
|
+
round-trip/error coverage were expanded in the runtime-owned copy.
|
|
120
|
+
- `formats/cmf` gained a **binary CMF v1 writer** (2026-07-15,
|
|
121
|
+
`src/formats/cmf/core/writer.js`, `CjsCmfFormat.write`/`writeAsync` and
|
|
122
|
+
`Write`/`WriteAsync`): original code implementing CarbonEngine's
|
|
123
|
+
`cmf::BuildFile` behavior — tagged self-relative span flattening with leaf
|
|
124
|
+
chunk dedup, BufferView→section remapping in first-encounter order,
|
|
125
|
+
meshoptimizer vertex/index compression (index compression canonicalizes
|
|
126
|
+
triangle rotation, matching the engine's own writer test expectations), and
|
|
127
|
+
the post-crc32 file checksum. Verified by write→read roundtrips against the
|
|
128
|
+
runtime reader; CarbonEngine's `mesh` CMF sources were the behavioral
|
|
129
|
+
reference, no code copied. `writeShared`/`writeSharedAsync` plus
|
|
130
|
+
`core/pack.js` (channel interleaving, index packing, unique buffer-index
|
|
131
|
+
assignment) serialize shared geometry directly, enabling GR2/OBJ/glTF→CMF —
|
|
132
|
+
verified against real EVE `.gr2` models fetched via
|
|
133
|
+
`@carbonenginejs/tool-index` (positions exact, triangles equivalent).
|
|
134
|
+
- `formats/cmf` also gained the **GR2 skeleton/animation converter**
|
|
135
|
+
(2026-07-15, `src/formats/cmf/core/gr2Anim.js`, applied automatically by
|
|
136
|
+
`writeShared`): GR2-shaped skeletons (root list or `models[].skeleton`)
|
|
137
|
+
convert to CMF bones/parents/rest transforms with inverse binds rebuilt
|
|
138
|
+
from the rest hierarchy; decoded Granny curves convert to CMF Step/Linear
|
|
139
|
+
channels — degree ≤ 1 exactly, degree 2 via adaptive de Boor resampling
|
|
140
|
+
with discontinuities snapped to one float32 ULP. Consumes only decoded
|
|
141
|
+
`{knots, controls}` data so the MIT runtime stays independent of the GR2
|
|
142
|
+
package. Validated on EVE ships (cde3_t3, gde3_t3, cfaux1_t1, mfaux1_t1:
|
|
143
|
+
3,377 channels ≤ 8.3e-4 positional / ≤ 0.14° rotational vs the GR2 runtime
|
|
144
|
+
sampler; 9 Granny curve formats) and characters (basicfemale: 132-bone
|
|
145
|
+
skeleton, exact skin weights).
|
|
146
|
+
- `formats/ogg` gained a pure-JS **Ogg Vorbis PCM decoder** (2026-07-15,
|
|
147
|
+
`src/formats/ogg/core/{vorbis.js,imdct.js}`, `emit: "pcm"`/`"audio"`):
|
|
148
|
+
original code implementing the Vorbis I specification (floor 1, residues
|
|
149
|
+
0/1/2, square-polar coupling, FFT-based IMDCT, windowed overlap-add).
|
|
150
|
+
stb_vorbis (public domain) was consulted as a behavioral reference and is
|
|
151
|
+
the source of the spec's floor1 `inverse_db_table` constants; no licensed
|
|
152
|
+
code was copied. Validated bit-comparable to ffmpeg (max diff ~3e-8) and
|
|
153
|
+
vgmstream (±1 int16 LSB) across the EVE Vorbis corpus.
|
|
154
|
+
|
|
155
|
+
## Wem packed-codebook snapshot
|
|
156
|
+
|
|
157
|
+
The wem Ogg repacker ships a package-owned copy of the aoTuV 6.03 packed
|
|
158
|
+
Vorbis codebook library at
|
|
159
|
+
`src/formats/wem/core/packedCodebooksAotuv603.js` (base64 module). It was
|
|
160
|
+
copied byte-identically from `packed_codebooks_aoTuV_603.bin` in the ww2ogg
|
|
161
|
+
distribution (`github.com/hcs64/ww2ogg`), 74,387 bytes, SHA-256
|
|
162
|
+
`00a93eab267d281401b1efd54e888a2e183299b9e6c446c48d09f701a89d9d27`, retrieved
|
|
163
|
+
2026-07-15. The data is BSD-licensed (Xiph.org Foundation, Adam Gashlin);
|
|
164
|
+
attribution and the full license terms are recorded in
|
|
165
|
+
`format-notices/wem/NOTICE` and `format-notices/wem/LICENSE`. An updated
|
|
166
|
+
snapshot must record its new source and digest here.
|
|
167
|
+
|
|
168
|
+
## Deliberately not copied
|
|
169
|
+
|
|
170
|
+
- `format-gr2` migrated into `formats/gr2` on 2026-07-24 (see the dated
|
|
171
|
+
table above) after its EUPL constraint was resolved; its standalone
|
|
172
|
+
repository is now a frozen legacy distribution like the other donors.
|
|
173
|
+
- `format-carbon` is historical provenance for the current copied snapshot,
|
|
174
|
+
not the authority for future regeneration. `tools-core/schema` owns schema
|
|
175
|
+
generation, while each consuming package reviews and copies generated output
|
|
176
|
+
into its own worktree. Black consumes the retained snapshot; Red exposes the
|
|
177
|
+
copied catalog but does not yet enforce it while reading YAML fields.
|
|
178
|
+
- The shader formats were excluded from the original migration while their
|
|
179
|
+
implementations were still being finished. That sequencing guard was lifted
|
|
180
|
+
on 2026-07-29 and they moved in as ordinary formats. All four landed:
|
|
181
|
+
`formats/dxbc`, `formats/hlsl`, `formats/webgl`, and `formats/webgpu`. Their
|
|
182
|
+
standalone repositories remain in place, unmodified by the move. Their
|
|
183
|
+
local-only test fixtures are game-derived and were deliberately not copied;
|
|
184
|
+
the suites that need them skip with an explicit reason.
|
|
185
|
+
|
|
186
|
+
## Typed-array ownership adjustments
|
|
187
|
+
|
|
188
|
+
The runtime copies preserve caller byte objects by reference. During the fork,
|
|
189
|
+
three avoidable source-buffer copies were changed to views:
|
|
190
|
+
|
|
191
|
+
- CMF compressed sections use `Uint8Array.subarray`.
|
|
192
|
+
- glTF GLB chunks use `Uint8Array.subarray`.
|
|
193
|
+
- FBX raw binary property payloads use `Uint8Array.subarray`.
|
|
194
|
+
|
|
195
|
+
Decoder output buffers and GIF per-frame snapshots still allocate because those
|
|
196
|
+
values have independent semantic identity.
|
package/docs/formats/stl.md
CHANGED
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
# STL export
|
|
2
|
-
|
|
3
|
-
Status: Evolving
|
|
4
|
-
Scope: `@carbonenginejs/runtime-resource/formats/stl`
|
|
5
|
-
Audience: Users and integrators
|
|
6
|
-
Summary: Defines the STL writer contract for shared geometry, including validation and watertight checking.
|
|
7
|
-
|
|
8
|
-
## Contract
|
|
9
|
-
|
|
10
|
-
`CjsStlFormat` writes shared geometry directly to binary or ASCII STL. The
|
|
11
|
-
writer consumes `mesh.vertex.position` and triangular `mesh.indices[].faces`;
|
|
12
|
-
multiple meshes and index groups are flattened in encounter order because STL
|
|
13
|
-
does not carry portable scene, material, skin, or animation structure.
|
|
14
|
-
|
|
15
|
-
```js
|
|
16
|
-
import { CjsStlFormat } from "@carbonenginejs/runtime-resource/formats/stl";
|
|
17
|
-
|
|
18
|
-
const bytes = CjsStlFormat.write(sharedGeometry, {
|
|
19
|
-
binary: true,
|
|
20
|
-
solidName: "ship_hull",
|
|
21
|
-
scale: 1000,
|
|
22
|
-
requireWatertight: true
|
|
23
|
-
});
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
Writes do not mutate the shared input. Facet normals are recalculated from
|
|
27
|
-
winding by default; set `recalculateNormals: false` to average valid vertex
|
|
28
|
-
normals. Degenerate triangles are skipped by default. Index values must be
|
|
29
|
-
safe integers within the position channel, and binary output rejects
|
|
30
|
-
coordinates outside float32 range instead of silently emitting infinities.
|
|
31
|
-
The `requireWatertight` option rejects open, non-manifold, inconsistently
|
|
32
|
-
wound, or degenerate output.
|
|
33
|
-
|
|
34
|
-
## Related documentation
|
|
35
|
-
|
|
36
|
-
- [Format subpaths](README.md)
|
|
37
|
-
- [Format ownership and fork provenance](provenance.md)
|
|
1
|
+
# STL export
|
|
2
|
+
|
|
3
|
+
Status: Evolving
|
|
4
|
+
Scope: `@carbonenginejs/runtime-resource/formats/stl`
|
|
5
|
+
Audience: Users and integrators
|
|
6
|
+
Summary: Defines the STL writer contract for shared geometry, including validation and watertight checking.
|
|
7
|
+
|
|
8
|
+
## Contract
|
|
9
|
+
|
|
10
|
+
`CjsStlFormat` writes shared geometry directly to binary or ASCII STL. The
|
|
11
|
+
writer consumes `mesh.vertex.position` and triangular `mesh.indices[].faces`;
|
|
12
|
+
multiple meshes and index groups are flattened in encounter order because STL
|
|
13
|
+
does not carry portable scene, material, skin, or animation structure.
|
|
14
|
+
|
|
15
|
+
```js
|
|
16
|
+
import { CjsStlFormat } from "@carbonenginejs/runtime-resource/formats/stl";
|
|
17
|
+
|
|
18
|
+
const bytes = CjsStlFormat.write(sharedGeometry, {
|
|
19
|
+
binary: true,
|
|
20
|
+
solidName: "ship_hull",
|
|
21
|
+
scale: 1000,
|
|
22
|
+
requireWatertight: true
|
|
23
|
+
});
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Writes do not mutate the shared input. Facet normals are recalculated from
|
|
27
|
+
winding by default; set `recalculateNormals: false` to average valid vertex
|
|
28
|
+
normals. Degenerate triangles are skipped by default. Index values must be
|
|
29
|
+
safe integers within the position channel, and binary output rejects
|
|
30
|
+
coordinates outside float32 range instead of silently emitting infinities.
|
|
31
|
+
The `requireWatertight` option rejects open, non-manifold, inconsistently
|
|
32
|
+
wound, or degenerate output.
|
|
33
|
+
|
|
34
|
+
## Related documentation
|
|
35
|
+
|
|
36
|
+
- [Format subpaths](README.md)
|
|
37
|
+
- [Format ownership and fork provenance](provenance.md)
|