@carbonenginejs/runtime-resource 0.13.0 → 0.14.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 -129
- package/dist/CjsMotherLode.js +1271 -1271
- package/dist/CjsResMan.js +3858 -3858
- 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 +265 -265
- package/dist/format/carbonEffect/CjsCarbonEffectWriter.js +373 -373
- package/dist/format/carbonEffect/buildCarbonEffectContainer.js +182 -182
- package/dist/format/carbonEffect/carbonEffectBackendBlock.js +321 -321
- package/dist/format/carbonEffect/carbonEffectRecords.js +1147 -1147
- package/dist/format/carbonEffect/carbonEffectResourceTransform.js +197 -197
- package/dist/format/compareUtf8.js +36 -36
- package/dist/format/effect/effectBodyInventory.js +146 -146
- package/dist/format/effect/effectPermutationGraph.js +257 -257
- 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 -310
- 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 -175
- package/dist/formats/bnk/core/busNodes.js +252 -252
- package/dist/formats/bnk/core/effectNodes.js +147 -147
- package/dist/formats/bnk/core/eventAction.js +416 -416
- package/dist/formats/bnk/core/globalSettings.js +215 -215
- package/dist/formats/bnk/core/graph.js +137 -137
- package/dist/formats/bnk/core/helpers.js +512 -512
- package/dist/formats/bnk/core/musicNodes.js +540 -540
- package/dist/formats/bnk/core/nodeBase.js +553 -553
- 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 +901 -862
- package/dist/formats/dds/core/helpers.js.map +1 -1
- package/dist/formats/dds/index.js +2 -2
- package/dist/formats/dxbc/CjsDxbcFormat.js +187 -142
- package/dist/formats/dxbc/CjsDxbcFormat.js.map +1 -1
- 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/disassemble.js +240 -0
- package/dist/formats/dxbc/core/disassemble.js.map +1 -0
- 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 +252 -290
- package/dist/formats/gltf/CjsGltfFormat.js.map +1 -1
- package/dist/formats/gltf/core/helpers.js +287 -307
- package/dist/formats/gltf/core/helpers.js.map +1 -1
- 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 +233 -254
- package/dist/formats/hlsl/CjsHlslFormat.js.map +1 -1
- 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 -850
- package/dist/formats/hlsl/core/detailMapFamily.js +128 -128
- 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 -133
- 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 -320
- package/dist/formats/hlsl/core/tr2/resources/HlslShaderPermutation.js +33 -33
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectBindingManifest.js +423 -416
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectBindingManifest.js.map +1 -1
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectConstant.js +40 -40
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectDescription.js +62 -62
- 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 -33
- 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 +232 -253
- package/dist/formats/obj/CjsObjFormat.js.map +1 -1
- package/dist/formats/obj/core/helpers.js +553 -573
- package/dist/formats/obj/core/helpers.js.map +1 -1
- 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 -214
- package/dist/formats/pickle/core/CjsPickleProtocol0Reader.js +551 -551
- package/dist/formats/pickle/index.js +2 -2
- 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 -71
- package/dist/formats/red/core/schema.js +4 -4
- package/dist/formats/red/index.js +2 -2
- package/dist/formats/stl/CjsStlFormat.js +320 -365
- package/dist/formats/stl/CjsStlFormat.js.map +1 -1
- package/dist/formats/stl/core/helpers.js +241 -261
- package/dist/formats/stl/core/helpers.js.map +1 -1
- 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 -199
- package/dist/formats/webgl/core/buildGlslEffectContainer.js +70 -70
- package/dist/formats/webgl/core/effectPackage.js +900 -900
- package/dist/formats/webgl/core/errors.js +27 -27
- package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js +2820 -2820
- package/dist/formats/webgl/core/glsl/DxbcGlslHelpers.js +89 -89
- package/dist/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js +486 -486
- package/dist/formats/webgl/core/glsl/packedLightFixups.js +98 -98
- package/dist/formats/webgl/core/glslBackendBlock.js +552 -552
- package/dist/formats/webgl/core/glslBackendBodySet.js +243 -243
- package/dist/formats/webgl/core/glslEffectCompleteness.js +85 -85
- package/dist/formats/webgl/core/glslEffectCompleteness.js.map +1 -1
- package/dist/formats/webgl/core/helpers.js +167 -167
- package/dist/formats/webgl/core/inspectGlslEffectContainer.js +122 -122
- package/dist/formats/webgl/core/readGlslEffectContainer.js +202 -256
- package/dist/formats/webgl/core/readGlslEffectContainer.js.map +1 -1
- package/dist/formats/webgl/index.js +2 -2
- package/dist/formats/webgpu/CjsWebgpuFormat.js +357 -357
- package/dist/formats/webgpu/core/buildCarbonEffectContainer.js +89 -89
- package/dist/formats/webgpu/core/carbonWebgpu/CarbonWebgpuContainer.js +354 -354
- package/dist/formats/webgpu/core/carbonWebgpu/containerViews.js +355 -355
- package/dist/formats/webgpu/core/carbonWebgpu/validateContainer.js +90 -90
- package/dist/formats/webgpu/core/effectAnalysis.js +82 -82
- package/dist/formats/webgpu/core/effectBackendBodySet.js +306 -306
- package/dist/formats/webgpu/core/errors.js +20 -20
- package/dist/formats/webgpu/core/helpers.js +443 -443
- 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 -381
- package/dist/formats/webgpu/core/packageEffectSelection.js +164 -164
- 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/buildWgslBindingPlan.js +172 -172
- package/dist/formats/webgpu/core/wgsl/buildWgslSet.js +325 -325
- 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/core/CjsYamlReader.js +400 -400
- package/dist/formats/yaml/core/helpers.js +196 -196
- package/dist/formats/yaml/index.js +2 -2
- package/dist/index.js +64 -64
- package/dist/resource/CjsLoadingObject.js +19 -19
- package/dist/resource/CjsResource.js +801 -801
- package/dist/resource/ResourceHandlerMode.js +14 -14
- 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 -54
- package/dist/resource/resourceBoundary.js +64 -64
- package/dist/resource/shader/Tr2EffectRes.js +336 -336
- 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 -283
- package/dist/resource/shader/Tr2ShaderPermutation.js +43 -43
- package/dist/resource/shader/index.js +17 -17
- package/dist/resource/shader/reflection/Tr2EffectConstant.js +143 -143
- package/dist/resource/shader/reflection/Tr2EffectDefine.js +30 -30
- package/dist/resource/shader/reflection/Tr2EffectDescription.js +114 -114
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js +168 -168
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +125 -125
- package/dist/resource/shader/reflection/Tr2EffectResource.js +120 -120
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js +372 -372
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js +78 -78
- package/dist/resource/shader/reflection/Tr2Pass.js +168 -168
- package/dist/resource/shader/reflection/carbonRecordFields.js +159 -159
- package/dist/resource/shader/reflection/shaderStage.js +22 -22
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js +135 -135
- 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 -89
- package/dist/worker/CjsResManWorker.js +218 -218
- package/dist/worker/CjsResManWorkerLoader.js +437 -437
- package/dist/worker/protocol.js +12 -12
- package/docs/README.md +98 -98
- package/docs/architecture.md +118 -118
- package/docs/concepts/resource-lifecycle.md +226 -226
- package/docs/concepts/shader-resource-model.md +111 -111
- package/docs/concepts/writing-an-engine-adapter.md +115 -115
- package/docs/formats/README.md +138 -138
- package/docs/formats/carbon-effect-container.md +553 -553
- package/docs/formats/dxbc/README.md +68 -68
- package/docs/formats/dxbc/architecture.md +80 -80
- package/docs/formats/dxbc/reference/api.md +105 -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 +66 -65
- package/docs/formats/hlsl/guides/hydrating-json-output.md +60 -60
- package/docs/formats/hlsl/guides/reading-effects.md +68 -64
- package/docs/formats/hlsl/reference/advanced-analysis.md +61 -61
- package/docs/formats/hlsl/reference/api.md +91 -92
- package/docs/formats/hlsl/reference/classes/README.md +11 -11
- package/docs/formats/hlsl/reference/json-graph.md +97 -97
- package/docs/formats/pickle.md +82 -82
- package/docs/formats/provenance.md +196 -196
- package/docs/formats/stl.md +37 -37
- package/docs/formats/webgl/README.md +115 -115
- package/docs/formats/webgl/architecture.md +69 -69
- 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 -890
- 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 -95
- package/docs/formats/webgpu/formats/carbon-webgpu.md +215 -215
- package/docs/formats/webgpu/guides/effect-packaging.md +189 -189
- package/docs/formats/webgpu/reference/api.md +196 -196
- package/docs/formats/webgpu/reference/classes/README.md +9 -9
- package/docs/formats/webgpu/reference/wgsl-compatibility.md +1546 -1546
- package/docs/formats/wwise.md +146 -146
- package/docs/reference/classes/README.md +35 -35
- package/docs/reference/classes/audio.md +30 -30
- package/docs/reference/classes/core.md +216 -216
- package/docs/reference/classes/dropped.md +46 -46
- package/docs/reference/classes/formats.md +944 -944
- 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 -194
- 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 -142
- 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/docs/roadmap.md
CHANGED
|
@@ -1,150 +1,150 @@
|
|
|
1
|
-
# Roadmap
|
|
2
|
-
|
|
3
|
-
Status: Evolving
|
|
4
|
-
Scope: `@carbonenginejs/runtime-resource`
|
|
5
|
-
Audience: Integrators and maintainers
|
|
6
|
-
Summary: Records approved future direction, open design questions, and the current shader-format boundary needed to interpret that direction.
|
|
7
|
-
|
|
8
|
-
Unless a section is explicitly marked **Current**, everything below is future
|
|
9
|
-
work. Current behavior is documented in the
|
|
10
|
-
[reference pages](reference/motherlode-cache.md); where this page and a
|
|
11
|
-
reference page disagree, the reference page describes the shipped package.
|
|
12
|
-
|
|
13
|
-
## Runtime manager follow-up
|
|
14
|
-
|
|
15
|
-
The ResMan/MotherLode contract is complete for its current consumers. Future
|
|
16
|
-
work should be driven by measured application needs rather than another
|
|
17
|
-
resource preparation abstraction:
|
|
18
|
-
|
|
19
|
-
- main-queue priority and starvation policy;
|
|
20
|
-
- cancellation/abort propagation for work that has already started;
|
|
21
|
-
- `WaitUrgent()` after real priority and bounded fairness;
|
|
22
|
-
- queue-time and reader/format-time telemetry;
|
|
23
|
-
- application-level default retention policy selection;
|
|
24
|
-
- automatic resource/payload byte estimation and separate CPU/adapter
|
|
25
|
-
budgets;
|
|
26
|
-
- additional browser-source response types and configurable worker-pool
|
|
27
|
-
concurrency.
|
|
28
|
-
|
|
29
|
-
## Browser shader formats
|
|
30
|
-
|
|
31
|
-
**Current:** HLSL, DXBC, WebGL, and WebGPU are consolidated into
|
|
32
|
-
runtime-resource and exposed as independently importable
|
|
33
|
-
`@carbonenginejs/runtime-resource/formats/<name>` entry points. HLSL and DXBC
|
|
34
|
-
remain directly usable; WebGL and WebGPU compose them to read DX11/DX12 effect
|
|
35
|
-
inputs and translate them.
|
|
36
|
-
|
|
37
|
-
**Planned:** Browser delivery and fallback policy still needs a stable
|
|
38
|
-
application-facing contract.
|
|
39
|
-
|
|
40
|
-
Browser-targeted production modules must not import or require Node-only
|
|
41
|
-
shader libraries. A format package may use local Node libraries as development
|
|
42
|
-
or test dependencies for fixtures, comparison, and conformance checks, but
|
|
43
|
-
those libraries must not ship and must not be runtime dependencies.
|
|
44
|
-
|
|
45
|
-
ccpwgl currently preserves an authored `.fx` path while `Tw2Device` maps it to
|
|
46
|
-
a backend-specific remote namespace such as `effect.gles2` or `effect.webgl2`
|
|
47
|
-
and appends the selected shader-model extension. The resource/format
|
|
48
|
-
contract must retain both use cases:
|
|
49
|
-
|
|
50
|
-
- resolve and load a pretranslated backend artifact from a remote resource
|
|
51
|
-
provider or tools-core cache; and
|
|
52
|
-
- fall back to the authored effect input and translate it in the browser.
|
|
53
|
-
|
|
54
|
-
The authored effect path should remain the stable identity. Backend profile,
|
|
55
|
-
shader model, translated cache path, and translation capabilities are
|
|
56
|
-
resolution facts rather than changes a caller must make to its source path.
|
|
57
|
-
|
|
58
|
-
## Format buffer ownership and destination reuse
|
|
59
|
-
|
|
60
|
-
**Current:** The CMF, DDS, FBX, GIF, glTF, JPEG, MP3, MP4, Ogg, PNG, STL,
|
|
61
|
-
TGA, WAV, WebM, and WebP byte normalizers preserve an existing `Uint8Array`.
|
|
62
|
-
`ArrayBuffer` and other byte-addressable views are exposed through a
|
|
63
|
-
`Uint8Array` view over the same backing storage rather than copied merely for
|
|
64
|
-
input normalization. Decode operations that produce new pixel, sample,
|
|
65
|
-
geometry, or decompression payloads currently allocate those result arrays
|
|
66
|
-
internally. Resource payload references are shared read-only by default;
|
|
67
|
-
[MotherLode retention](reference/motherlode-cache.md) defines the cases where
|
|
68
|
-
a consumer must make an explicit copy.
|
|
69
|
-
|
|
70
|
-
**Planned:** Known-size decode and transform operations should gain
|
|
71
|
-
format-specific optional destination-array seams. Omitting the destination
|
|
72
|
-
must preserve the convenient allocating call. Supplying a valid destination
|
|
73
|
-
must fill and return that exact object. Each seam must:
|
|
74
|
-
|
|
75
|
-
- require the correct typed-array kind and sufficient capacity before writing;
|
|
76
|
-
- support non-zero-offset input and destination views;
|
|
77
|
-
- leave input unchanged unless the operation explicitly documents an
|
|
78
|
-
in-place transform;
|
|
79
|
-
- produce the same bytes and typed-array kind as the allocating form; and
|
|
80
|
-
- behave deterministically when one destination is reused across sequential
|
|
81
|
-
calls.
|
|
82
|
-
|
|
83
|
-
The first candidates are CMF decompression, FBX inflate and packed-array
|
|
84
|
-
helpers, DDS block and uncompressed decoders, PNG row/RGBA decode, JPEG
|
|
85
|
-
component and final RGBA output, TGA RGBA decode, GIF compositing canvas, WAV
|
|
86
|
-
PCM decode, and glTF data-URI decode. Decoder workspaces such as JPEG
|
|
87
|
-
coefficient blocks, cached lookup tables, CRC tables, and small fixed scratch
|
|
88
|
-
arrays remain implementation-owned rather than becoming public output
|
|
89
|
-
arguments.
|
|
90
|
-
|
|
91
|
-
Some copies remain necessary: mutation of otherwise shared data,
|
|
92
|
-
`ArrayBuffer` transfer/detachment, compacting a small retained range out of a
|
|
93
|
-
large backing buffer, immutable frame history, and platform APIs that expose
|
|
94
|
-
no destination seam. Those copies should stay explicit at the owning call
|
|
95
|
-
site. This direction does not introduce a generic deep-copy operation for
|
|
96
|
-
payload objects or typed-array bundles.
|
|
97
|
-
|
|
98
|
-
## Scoped lock token
|
|
99
|
-
|
|
100
|
-
**Planned:** add `AcquireLock()` as an async-safe wrapper around the current
|
|
101
|
-
`Lock()`/`Unlock()` contract. Existing `KeepAlive()` and
|
|
102
|
-
`KeepPayloadAlive()` behavior remains current package API; this roadmap does
|
|
103
|
-
not propose removing it.
|
|
104
|
-
|
|
105
|
-
Raw `Lock()` / `Unlock()` is easy to mis-pair across asynchronous success,
|
|
106
|
-
failure, cancellation, and disposal. Prefer a JS-only acquired-lock API:
|
|
107
|
-
|
|
108
|
-
```js
|
|
109
|
-
const hold = resource.AcquireLock();
|
|
110
|
-
try {
|
|
111
|
-
const payload = await resource.Ready();
|
|
112
|
-
await consume(payload);
|
|
113
|
-
} finally {
|
|
114
|
-
hold.Release();
|
|
115
|
-
}
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
The acquired token should add exactly one lock, capture the canonical key and
|
|
119
|
-
ownership generation that received it, and release that exact lock at most
|
|
120
|
-
once. `Release()` must be idempotent. If the original record has been
|
|
121
|
-
deleted, replaced, purged, or rebound, releasing the stale token must not
|
|
122
|
-
decrement a new owner's lock. Acquisition and release must never fetch,
|
|
123
|
-
reconstruct, prepare, or release payload data themselves.
|
|
124
|
-
|
|
125
|
-
The token is an async-safety replacement for exposing the existing raw lock
|
|
126
|
-
count, not a new retention policy. For example, runtime-audio can hold
|
|
127
|
-
source/PCM payload through decode and release the token once it owns the
|
|
128
|
-
resulting WebAudio `AudioBuffer`; keeping the resource locked for the full
|
|
129
|
-
playback or decoded-cache lifetime would unnecessarily retain both
|
|
130
|
-
representations. Runtime-lifetime and group retention remain caller policy
|
|
131
|
-
built from explicit tokens, not an implicit default on every loaded resource.
|
|
132
|
-
|
|
133
|
-
## Open design questions
|
|
134
|
-
|
|
135
|
-
- Should `Unload()` drop only adapter payloads by default, or CPU payloads
|
|
136
|
-
too?
|
|
137
|
-
- Should there be explicit `UnloadAdapterResources()`, `UnloadPayload()`, and
|
|
138
|
-
`Purge()` phases?
|
|
139
|
-
- Which format/resource-specific estimators should supply separate identity,
|
|
140
|
-
CPU-payload, and adapter byte weights without double-counting shared
|
|
141
|
-
buffers?
|
|
142
|
-
- Should manually attached/dynamic resources default to locked, like ccpwgl's
|
|
143
|
-
manual shader resources use `doNotPurge`?
|
|
144
|
-
- Should a resource-level `Purge()` complement the existing automatic and
|
|
145
|
-
MotherLode-level eviction operations?
|
|
146
|
-
|
|
147
|
-
## Related documentation
|
|
148
|
-
|
|
149
|
-
- [MotherLode identity, cache, and retention](reference/motherlode-cache.md)
|
|
150
|
-
- [Candidate-first atomic reload](reference/reload.md)
|
|
1
|
+
# Roadmap
|
|
2
|
+
|
|
3
|
+
Status: Evolving
|
|
4
|
+
Scope: `@carbonenginejs/runtime-resource`
|
|
5
|
+
Audience: Integrators and maintainers
|
|
6
|
+
Summary: Records approved future direction, open design questions, and the current shader-format boundary needed to interpret that direction.
|
|
7
|
+
|
|
8
|
+
Unless a section is explicitly marked **Current**, everything below is future
|
|
9
|
+
work. Current behavior is documented in the
|
|
10
|
+
[reference pages](reference/motherlode-cache.md); where this page and a
|
|
11
|
+
reference page disagree, the reference page describes the shipped package.
|
|
12
|
+
|
|
13
|
+
## Runtime manager follow-up
|
|
14
|
+
|
|
15
|
+
The ResMan/MotherLode contract is complete for its current consumers. Future
|
|
16
|
+
work should be driven by measured application needs rather than another
|
|
17
|
+
resource preparation abstraction:
|
|
18
|
+
|
|
19
|
+
- main-queue priority and starvation policy;
|
|
20
|
+
- cancellation/abort propagation for work that has already started;
|
|
21
|
+
- `WaitUrgent()` after real priority and bounded fairness;
|
|
22
|
+
- queue-time and reader/format-time telemetry;
|
|
23
|
+
- application-level default retention policy selection;
|
|
24
|
+
- automatic resource/payload byte estimation and separate CPU/adapter
|
|
25
|
+
budgets;
|
|
26
|
+
- additional browser-source response types and configurable worker-pool
|
|
27
|
+
concurrency.
|
|
28
|
+
|
|
29
|
+
## Browser shader formats
|
|
30
|
+
|
|
31
|
+
**Current:** HLSL, DXBC, WebGL, and WebGPU are consolidated into
|
|
32
|
+
runtime-resource and exposed as independently importable
|
|
33
|
+
`@carbonenginejs/runtime-resource/formats/<name>` entry points. HLSL and DXBC
|
|
34
|
+
remain directly usable; WebGL and WebGPU compose them to read DX11/DX12 effect
|
|
35
|
+
inputs and translate them.
|
|
36
|
+
|
|
37
|
+
**Planned:** Browser delivery and fallback policy still needs a stable
|
|
38
|
+
application-facing contract.
|
|
39
|
+
|
|
40
|
+
Browser-targeted production modules must not import or require Node-only
|
|
41
|
+
shader libraries. A format package may use local Node libraries as development
|
|
42
|
+
or test dependencies for fixtures, comparison, and conformance checks, but
|
|
43
|
+
those libraries must not ship and must not be runtime dependencies.
|
|
44
|
+
|
|
45
|
+
ccpwgl currently preserves an authored `.fx` path while `Tw2Device` maps it to
|
|
46
|
+
a backend-specific remote namespace such as `effect.gles2` or `effect.webgl2`
|
|
47
|
+
and appends the selected shader-model extension. The resource/format
|
|
48
|
+
contract must retain both use cases:
|
|
49
|
+
|
|
50
|
+
- resolve and load a pretranslated backend artifact from a remote resource
|
|
51
|
+
provider or tools-core cache; and
|
|
52
|
+
- fall back to the authored effect input and translate it in the browser.
|
|
53
|
+
|
|
54
|
+
The authored effect path should remain the stable identity. Backend profile,
|
|
55
|
+
shader model, translated cache path, and translation capabilities are
|
|
56
|
+
resolution facts rather than changes a caller must make to its source path.
|
|
57
|
+
|
|
58
|
+
## Format buffer ownership and destination reuse
|
|
59
|
+
|
|
60
|
+
**Current:** The CMF, DDS, FBX, GIF, glTF, JPEG, MP3, MP4, Ogg, PNG, STL,
|
|
61
|
+
TGA, WAV, WebM, and WebP byte normalizers preserve an existing `Uint8Array`.
|
|
62
|
+
`ArrayBuffer` and other byte-addressable views are exposed through a
|
|
63
|
+
`Uint8Array` view over the same backing storage rather than copied merely for
|
|
64
|
+
input normalization. Decode operations that produce new pixel, sample,
|
|
65
|
+
geometry, or decompression payloads currently allocate those result arrays
|
|
66
|
+
internally. Resource payload references are shared read-only by default;
|
|
67
|
+
[MotherLode retention](reference/motherlode-cache.md) defines the cases where
|
|
68
|
+
a consumer must make an explicit copy.
|
|
69
|
+
|
|
70
|
+
**Planned:** Known-size decode and transform operations should gain
|
|
71
|
+
format-specific optional destination-array seams. Omitting the destination
|
|
72
|
+
must preserve the convenient allocating call. Supplying a valid destination
|
|
73
|
+
must fill and return that exact object. Each seam must:
|
|
74
|
+
|
|
75
|
+
- require the correct typed-array kind and sufficient capacity before writing;
|
|
76
|
+
- support non-zero-offset input and destination views;
|
|
77
|
+
- leave input unchanged unless the operation explicitly documents an
|
|
78
|
+
in-place transform;
|
|
79
|
+
- produce the same bytes and typed-array kind as the allocating form; and
|
|
80
|
+
- behave deterministically when one destination is reused across sequential
|
|
81
|
+
calls.
|
|
82
|
+
|
|
83
|
+
The first candidates are CMF decompression, FBX inflate and packed-array
|
|
84
|
+
helpers, DDS block and uncompressed decoders, PNG row/RGBA decode, JPEG
|
|
85
|
+
component and final RGBA output, TGA RGBA decode, GIF compositing canvas, WAV
|
|
86
|
+
PCM decode, and glTF data-URI decode. Decoder workspaces such as JPEG
|
|
87
|
+
coefficient blocks, cached lookup tables, CRC tables, and small fixed scratch
|
|
88
|
+
arrays remain implementation-owned rather than becoming public output
|
|
89
|
+
arguments.
|
|
90
|
+
|
|
91
|
+
Some copies remain necessary: mutation of otherwise shared data,
|
|
92
|
+
`ArrayBuffer` transfer/detachment, compacting a small retained range out of a
|
|
93
|
+
large backing buffer, immutable frame history, and platform APIs that expose
|
|
94
|
+
no destination seam. Those copies should stay explicit at the owning call
|
|
95
|
+
site. This direction does not introduce a generic deep-copy operation for
|
|
96
|
+
payload objects or typed-array bundles.
|
|
97
|
+
|
|
98
|
+
## Scoped lock token
|
|
99
|
+
|
|
100
|
+
**Planned:** add `AcquireLock()` as an async-safe wrapper around the current
|
|
101
|
+
`Lock()`/`Unlock()` contract. Existing `KeepAlive()` and
|
|
102
|
+
`KeepPayloadAlive()` behavior remains current package API; this roadmap does
|
|
103
|
+
not propose removing it.
|
|
104
|
+
|
|
105
|
+
Raw `Lock()` / `Unlock()` is easy to mis-pair across asynchronous success,
|
|
106
|
+
failure, cancellation, and disposal. Prefer a JS-only acquired-lock API:
|
|
107
|
+
|
|
108
|
+
```js
|
|
109
|
+
const hold = resource.AcquireLock();
|
|
110
|
+
try {
|
|
111
|
+
const payload = await resource.Ready();
|
|
112
|
+
await consume(payload);
|
|
113
|
+
} finally {
|
|
114
|
+
hold.Release();
|
|
115
|
+
}
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
The acquired token should add exactly one lock, capture the canonical key and
|
|
119
|
+
ownership generation that received it, and release that exact lock at most
|
|
120
|
+
once. `Release()` must be idempotent. If the original record has been
|
|
121
|
+
deleted, replaced, purged, or rebound, releasing the stale token must not
|
|
122
|
+
decrement a new owner's lock. Acquisition and release must never fetch,
|
|
123
|
+
reconstruct, prepare, or release payload data themselves.
|
|
124
|
+
|
|
125
|
+
The token is an async-safety replacement for exposing the existing raw lock
|
|
126
|
+
count, not a new retention policy. For example, runtime-audio can hold
|
|
127
|
+
source/PCM payload through decode and release the token once it owns the
|
|
128
|
+
resulting WebAudio `AudioBuffer`; keeping the resource locked for the full
|
|
129
|
+
playback or decoded-cache lifetime would unnecessarily retain both
|
|
130
|
+
representations. Runtime-lifetime and group retention remain caller policy
|
|
131
|
+
built from explicit tokens, not an implicit default on every loaded resource.
|
|
132
|
+
|
|
133
|
+
## Open design questions
|
|
134
|
+
|
|
135
|
+
- Should `Unload()` drop only adapter payloads by default, or CPU payloads
|
|
136
|
+
too?
|
|
137
|
+
- Should there be explicit `UnloadAdapterResources()`, `UnloadPayload()`, and
|
|
138
|
+
`Purge()` phases?
|
|
139
|
+
- Which format/resource-specific estimators should supply separate identity,
|
|
140
|
+
CPU-payload, and adapter byte weights without double-counting shared
|
|
141
|
+
buffers?
|
|
142
|
+
- Should manually attached/dynamic resources default to locked, like ccpwgl's
|
|
143
|
+
manual shader resources use `doNotPurge`?
|
|
144
|
+
- Should a resource-level `Purge()` complement the existing automatic and
|
|
145
|
+
MotherLode-level eviction operations?
|
|
146
|
+
|
|
147
|
+
## Related documentation
|
|
148
|
+
|
|
149
|
+
- [MotherLode identity, cache, and retention](reference/motherlode-cache.md)
|
|
150
|
+
- [Candidate-first atomic reload](reference/reload.md)
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 CarbonEngineJS contributors
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 CarbonEngineJS contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -1,47 +1,47 @@
|
|
|
1
|
-
format-black
|
|
2
|
-
|
|
3
|
-
Copyright (c) CarbonEngineJS contributors.
|
|
4
|
-
CarbonEngine source material, formats, class names, and schema semantics remain
|
|
5
|
-
copyright their original CarbonEngine authors.
|
|
6
|
-
Fenris Creations (CCP Games) source material, tools, assets, shader behavior,
|
|
7
|
-
and EVE-related data remain copyright their original holders.
|
|
8
|
-
|
|
9
|
-
This package is a CarbonEngineJS-facing reader for `.black` files. It
|
|
10
|
-
contains original project code unless third-party material is explicitly listed
|
|
11
|
-
below.
|
|
12
|
-
CarbonEngine and Fenris Creations (CCP Games) are mentioned for
|
|
13
|
-
interoperability, provenance, and future migration context only. This package is
|
|
14
|
-
not affiliated with or endorsed by CCP Games.
|
|
15
|
-
|
|
16
|
-
Third-party reference material
|
|
17
|
-
------------------------------
|
|
18
|
-
|
|
19
|
-
black-reader-js
|
|
20
|
-
Repository: https://github.com/rawrafox/black-reader-js
|
|
21
|
-
Author: rawrafox
|
|
22
|
-
Package author: aurora
|
|
23
|
-
License: MIT
|
|
24
|
-
Local license notice: Copyright (c) 2023 @rawrafox and @cppctamber
|
|
25
|
-
|
|
26
|
-
CarbonEngineJS uses black-reader-js as reference material for `.black` format
|
|
27
|
-
behavior. The format-black package is implemented against CarbonEngineJS
|
|
28
|
-
runtime-utils/canonical schema definitions and emits CarbonEngineJS public
|
|
29
|
-
Black payload data.
|
|
30
|
-
|
|
31
|
-
Provenance and legal requirements
|
|
32
|
-
---------------------------------
|
|
33
|
-
|
|
34
|
-
This scaffold currently contains CarbonEngineJS original project code plus the
|
|
35
|
-
third-party reference attribution listed above. It does not include copied
|
|
36
|
-
CarbonEngine source code or third-party parser code.
|
|
37
|
-
|
|
38
|
-
If future work copies, ports, translates, or derives from CarbonEngine, ccpwgl,
|
|
39
|
-
Fenris Creations (CCP Games) / EVE assets or tools, or any third-party library,
|
|
40
|
-
update this NOTICE before committing that work with:
|
|
41
|
-
|
|
42
|
-
- upstream copyright holders;
|
|
43
|
-
- upstream project/repository, file path, and revision when known;
|
|
44
|
-
- upstream license name, license text or required notice location, and any
|
|
45
|
-
redistribution obligations;
|
|
46
|
-
- whether the material was copied/ported/adapted, or used only as a behavioral
|
|
47
|
-
reference with no copied expression.
|
|
1
|
+
format-black
|
|
2
|
+
|
|
3
|
+
Copyright (c) CarbonEngineJS contributors.
|
|
4
|
+
CarbonEngine source material, formats, class names, and schema semantics remain
|
|
5
|
+
copyright their original CarbonEngine authors.
|
|
6
|
+
Fenris Creations (CCP Games) source material, tools, assets, shader behavior,
|
|
7
|
+
and EVE-related data remain copyright their original holders.
|
|
8
|
+
|
|
9
|
+
This package is a CarbonEngineJS-facing reader for `.black` files. It
|
|
10
|
+
contains original project code unless third-party material is explicitly listed
|
|
11
|
+
below.
|
|
12
|
+
CarbonEngine and Fenris Creations (CCP Games) are mentioned for
|
|
13
|
+
interoperability, provenance, and future migration context only. This package is
|
|
14
|
+
not affiliated with or endorsed by CCP Games.
|
|
15
|
+
|
|
16
|
+
Third-party reference material
|
|
17
|
+
------------------------------
|
|
18
|
+
|
|
19
|
+
black-reader-js
|
|
20
|
+
Repository: https://github.com/rawrafox/black-reader-js
|
|
21
|
+
Author: rawrafox
|
|
22
|
+
Package author: aurora
|
|
23
|
+
License: MIT
|
|
24
|
+
Local license notice: Copyright (c) 2023 @rawrafox and @cppctamber
|
|
25
|
+
|
|
26
|
+
CarbonEngineJS uses black-reader-js as reference material for `.black` format
|
|
27
|
+
behavior. The format-black package is implemented against CarbonEngineJS
|
|
28
|
+
runtime-utils/canonical schema definitions and emits CarbonEngineJS public
|
|
29
|
+
Black payload data.
|
|
30
|
+
|
|
31
|
+
Provenance and legal requirements
|
|
32
|
+
---------------------------------
|
|
33
|
+
|
|
34
|
+
This scaffold currently contains CarbonEngineJS original project code plus the
|
|
35
|
+
third-party reference attribution listed above. It does not include copied
|
|
36
|
+
CarbonEngine source code or third-party parser code.
|
|
37
|
+
|
|
38
|
+
If future work copies, ports, translates, or derives from CarbonEngine, ccpwgl,
|
|
39
|
+
Fenris Creations (CCP Games) / EVE assets or tools, or any third-party library,
|
|
40
|
+
update this NOTICE before committing that work with:
|
|
41
|
+
|
|
42
|
+
- upstream copyright holders;
|
|
43
|
+
- upstream project/repository, file path, and revision when known;
|
|
44
|
+
- upstream license name, license text or required notice location, and any
|
|
45
|
+
redistribution obligations;
|
|
46
|
+
- whether the material was copied/ported/adapted, or used only as a behavioral
|
|
47
|
+
reference with no copied expression.
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 CarbonEngineJS contributors
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 CarbonEngineJS contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
formats/bnk
|
|
2
|
-
|
|
3
|
-
Copyright (c) CarbonEngineJS contributors.
|
|
4
|
-
CarbonEngine source material, formats, class names, and schema semantics remain
|
|
5
|
-
copyright their original CarbonEngine authors.
|
|
6
|
-
Fenris Creations (CCP Games) source material, tools, assets, shader behavior,
|
|
7
|
-
and EVE-related data remain copyright their original holders.
|
|
8
|
-
Wwise and the Wwise soundbank format are property of Audiokinetic Inc.
|
|
9
|
-
|
|
10
|
-
This reader is original CarbonEngineJS code authored directly in
|
|
11
|
-
runtime-resource; no legacy package was copied. The soundbank chunk layout,
|
|
12
|
-
HIRC object field layouts, the event-graph resolution exposed as
|
|
13
|
-
`eventMediaFromBanks`, and the typed version-150 authored-SFX node tails
|
|
14
|
-
exposed as `sfxNodesFromBanks` were implemented from publicly documented
|
|
15
|
-
community knowledge of the format (ww2ogg, vgmstream, wwiser documentation)
|
|
16
|
-
and independently verified by hexdump against EVE Online soundbanks (bank
|
|
17
|
-
generator version 150); no code was copied from those projects and no
|
|
18
|
-
Audiokinetic SDK material was used.
|
|
19
|
-
Audiokinetic, CarbonEngine, and Fenris Creations (CCP Games) are mentioned for
|
|
20
|
-
interoperability, provenance, and future migration context only. This package
|
|
21
|
-
is not affiliated with or endorsed by Audiokinetic Inc. or CCP Games.
|
|
1
|
+
formats/bnk
|
|
2
|
+
|
|
3
|
+
Copyright (c) CarbonEngineJS contributors.
|
|
4
|
+
CarbonEngine source material, formats, class names, and schema semantics remain
|
|
5
|
+
copyright their original CarbonEngine authors.
|
|
6
|
+
Fenris Creations (CCP Games) source material, tools, assets, shader behavior,
|
|
7
|
+
and EVE-related data remain copyright their original holders.
|
|
8
|
+
Wwise and the Wwise soundbank format are property of Audiokinetic Inc.
|
|
9
|
+
|
|
10
|
+
This reader is original CarbonEngineJS code authored directly in
|
|
11
|
+
runtime-resource; no legacy package was copied. The soundbank chunk layout,
|
|
12
|
+
HIRC object field layouts, the event-graph resolution exposed as
|
|
13
|
+
`eventMediaFromBanks`, and the typed version-150 authored-SFX node tails
|
|
14
|
+
exposed as `sfxNodesFromBanks` were implemented from publicly documented
|
|
15
|
+
community knowledge of the format (ww2ogg, vgmstream, wwiser documentation)
|
|
16
|
+
and independently verified by hexdump against EVE Online soundbanks (bank
|
|
17
|
+
generator version 150); no code was copied from those projects and no
|
|
18
|
+
Audiokinetic SDK material was used.
|
|
19
|
+
Audiokinetic, CarbonEngine, and Fenris Creations (CCP Games) are mentioned for
|
|
20
|
+
interoperability, provenance, and future migration context only. This package
|
|
21
|
+
is not affiliated with or endorsed by Audiokinetic Inc. or CCP Games.
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 CarbonEngineJS contributors
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 CarbonEngineJS contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -1,36 +1,36 @@
|
|
|
1
|
-
carbonenginejs/format-cmf
|
|
2
|
-
=========================
|
|
3
|
-
|
|
4
|
-
A pure-JavaScript reader for Carbon Mesh Format (.cmf) geometry containers.
|
|
5
|
-
|
|
6
|
-
CarbonEngineJS-facing code is copyright CarbonEngineJS contributors.
|
|
7
|
-
CarbonEngine source material, formats, class names, and schema semantics remain
|
|
8
|
-
copyright their original CarbonEngine authors. Fenris Creations (CCP Games)
|
|
9
|
-
source material, tools, assets, shader behavior, and EVE-related data remain
|
|
10
|
-
copyright their original holders.
|
|
11
|
-
|
|
12
|
-
CarbonEngine and Fenris Creations (CCP Games) are mentioned for interoperability
|
|
13
|
-
and provenance context. This package is not affiliated with or endorsed by CCP
|
|
14
|
-
Games.
|
|
15
|
-
|
|
16
|
-
Format reference
|
|
17
|
-
----------------
|
|
18
|
-
|
|
19
|
-
The CMF v1 structure names, enum names, layout, and validation behavior were
|
|
20
|
-
implemented from the local CarbonEngine mesh headers and sources:
|
|
21
|
-
|
|
22
|
-
- mesh/include/cmf/cmf.h
|
|
23
|
-
- mesh/include/cmf/v1.h
|
|
24
|
-
- mesh/include/cmf/span.h
|
|
25
|
-
- mesh/include/cmf/writer.h
|
|
26
|
-
- mesh/src/cmf/writer.cpp
|
|
27
|
-
- mesh/src/cmf/utils.cpp
|
|
28
|
-
|
|
29
|
-
No CarbonEngine implementation code is copied into this package.
|
|
30
|
-
|
|
31
|
-
Third-party dependencies
|
|
32
|
-
------------------------
|
|
33
|
-
|
|
34
|
-
meshoptimizer JavaScript package
|
|
35
|
-
Used for decoding CMF GPU-buffer sections compressed with meshoptimizer
|
|
36
|
-
vertex/index codecs. Copyright Arseny Kapoulkine, MIT License.
|
|
1
|
+
carbonenginejs/format-cmf
|
|
2
|
+
=========================
|
|
3
|
+
|
|
4
|
+
A pure-JavaScript reader for Carbon Mesh Format (.cmf) geometry containers.
|
|
5
|
+
|
|
6
|
+
CarbonEngineJS-facing code is copyright CarbonEngineJS contributors.
|
|
7
|
+
CarbonEngine source material, formats, class names, and schema semantics remain
|
|
8
|
+
copyright their original CarbonEngine authors. Fenris Creations (CCP Games)
|
|
9
|
+
source material, tools, assets, shader behavior, and EVE-related data remain
|
|
10
|
+
copyright their original holders.
|
|
11
|
+
|
|
12
|
+
CarbonEngine and Fenris Creations (CCP Games) are mentioned for interoperability
|
|
13
|
+
and provenance context. This package is not affiliated with or endorsed by CCP
|
|
14
|
+
Games.
|
|
15
|
+
|
|
16
|
+
Format reference
|
|
17
|
+
----------------
|
|
18
|
+
|
|
19
|
+
The CMF v1 structure names, enum names, layout, and validation behavior were
|
|
20
|
+
implemented from the local CarbonEngine mesh headers and sources:
|
|
21
|
+
|
|
22
|
+
- mesh/include/cmf/cmf.h
|
|
23
|
+
- mesh/include/cmf/v1.h
|
|
24
|
+
- mesh/include/cmf/span.h
|
|
25
|
+
- mesh/include/cmf/writer.h
|
|
26
|
+
- mesh/src/cmf/writer.cpp
|
|
27
|
+
- mesh/src/cmf/utils.cpp
|
|
28
|
+
|
|
29
|
+
No CarbonEngine implementation code is copied into this package.
|
|
30
|
+
|
|
31
|
+
Third-party dependencies
|
|
32
|
+
------------------------
|
|
33
|
+
|
|
34
|
+
meshoptimizer JavaScript package
|
|
35
|
+
Used for decoding CMF GPU-buffer sections compressed with meshoptimizer
|
|
36
|
+
vertex/index codecs. Copyright Arseny Kapoulkine, MIT License.
|