@forgeax/engine-render 0.1.3 → 0.1.4

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.
@@ -85,8 +85,8 @@ export declare function skyboxModeFromF32(value: number): SkyboxMode;
85
85
  * handle as the Skylight entity -- two independent components sharing the
86
86
  * same GPU resource (the internally-projected cubemap).
87
87
  *
88
- * `equirect` is a `Handle<EquirectAsset>` resolved from a vite pack-index
89
- * GUID via `engine.assets.loadByGuid<EquirectAsset>(guid)`. The cubemap
88
+ * `equirect` is resolved from a Vite pack-index GUID through the App-owned
89
+ * AssetRegistry (`AssetRegistry.load(guid, 'equirect')`). The cubemap
90
90
  * projection is internal and driven by the render-system record arm; there
91
91
  * is no user upload call.
92
92
  *
@@ -98,12 +98,11 @@ export declare function skyboxModeFromF32(value: number): SkyboxMode;
98
98
  * source equirectangular asset.
99
99
  *
100
100
  * @example Minimum spawn (defaults mode=0):
101
- * // equirectHandle resolved from loadByGuid<EquirectAsset> (same handle as
102
- * // the Skylight).
101
+ * // Resolve the equirect payload through the App AssetRegistry.
103
102
  * world.spawn({ component: SkyboxBackground, data: { equirect: equirectHandle } });
104
103
  *
105
104
  * @example Single handle shared between Skylight (IBL) and SkyboxBackground:
106
- * const hdrRes = await engine.assets.loadByGuid<EquirectAsset>(guid);
105
+ * const hdrRes = await assets.load(guid, 'equirect');
107
106
  * if (!hdrRes.ok) throw hdrRes.error;
108
107
  * world.spawn({ component: Skylight, data: { equirect: hdrRes.value } });
109
108
  * world.spawn({ component: SkyboxBackground, data: { equirect: hdrRes.value } });
@@ -1 +1 @@
1
- {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../src/components/environment.ts"],"names":[],"mappings":"AAsCA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,eAAO,MAAM,QAAQ;;;;;EAUnB,CAAC;AAEH,eAAO,MAAM,GAAG;;;;;EAKd,CAAC;AA+BH;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC;AAEnC,yEAAyE;AACzE,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAW3D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,eAAO,MAAM,gBAAgB;;;;EAO3B,CAAC"}
1
+ {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../src/components/environment.ts"],"names":[],"mappings":"AAsCA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,eAAO,MAAM,QAAQ;;;;;EAUnB,CAAC;AAEH,eAAO,MAAM,GAAG;;;;;EAKd,CAAC;AA+BH;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC;AAEnC,yEAAyE;AACzE,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAW3D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,eAAO,MAAM,gBAAgB;;;;EAO3B,CAAC"}
@@ -1,6 +1,6 @@
1
- export { createRenderer as constructRenderer } from './chunk-33UF5SAO.mjs';
2
- import './chunk-QRXPSX4X.mjs';
3
- import './chunk-A5QCJSNL.mjs';
4
- import './chunk-YAKEQPWO.mjs';
1
+ export { createRenderer as constructRenderer } from './chunk-F2SIOCRM.mjs';
2
+ import './chunk-KHI6K4C6.mjs';
3
+ import './chunk-UOJGMDGP.mjs';
4
+ import './chunk-DJIMFYX6.mjs';
5
5
  //# sourceMappingURL=construct-renderer.mjs.map
6
6
  //# sourceMappingURL=construct-renderer.mjs.map
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
- export { MORPH_COMPUTE_WGSL, MORPH_MAX_TARGETS, createMorphFeature, createMorphReentryState, deriveMorphBounds, materialContribution, morphCullDecision, ownedRendererPlugin, renderComponentsPlugin, renderFeaturePlugin, renderPipelineContribution, rendererPlugin, samplerContribution, stepMorphReentry } from './chunk-LXNGO6AO.mjs';
2
- export { ACTIVE_CAMERA_KEY, MEMBERSHIP_TIMING_REASON_CODES, MEMBERSHIP_TIMING_REASON_MAPPING, MEMBERSHIP_TIMING_REASON_SCHEMA, MembershipTimingError, MeshUpdateError, PipelineError, PostProcessError, RENDER_FEATURE_VERTEX_LAYOUTS, RENDER_PHASE_CATALOG, RecoverError, RenderFeatureComputeGraphProjection, RenderFeatureGraphBufferRegistry, RenderFeatureRasterGraphProjection, SCENE_TEMPORAL_CLEAR_VALUE, SCENE_TEMPORAL_PACKED_ABI, SCENE_TEMPORAL_TARGET_FORMAT, SCENE_TEMPORAL_TARGET_SAMPLE_COUNT, TEMPORAL_MISSING_REASONS, TEMPORAL_PRODUCER_LANES, TEMPORAL_REACTIVE_REASONS, TONEMAP_POST_PROCESS_ID, URP_PIPELINE_ID, addTypedBloomPasses, addTypedCompositePostEffects, addTypedFrameObservationPass, addTypedFullscreenPass, addTypedScenePass, addTypedSkyboxPass, addTypedSsaoPasses, addTypedTonemapPass, createEnvironmentPipelineTopology, createMembershipTiming, createRenderFeatureContributionStaging, createRenderFeatureGpuWorkResolver, createRenderFeatureTarget, createRenderPipelineTarget, getActiveCamera, importRenderPipelineSurface, inspectEnvironmentGeneration, isRenderFeatureTargetHandle, observeCurrentFrame, projectFogEnvironment, projectRenderFeatureContributions, renderFeatureAttachmentResource, resolvePostColorDomainContract, resolveToneOutputContract, resolveVisibility, selectEnvironmentSource, setActiveCamera } from './chunk-A5QCJSNL.mjs';
3
- export { ANTIALIAS_FXAA, ANTIALIAS_MSAA, ANTIALIAS_NONE, ANTIALIAS_TAA, Atmosphere, AtmosphereCapsInsufficientError, AtmosphereCardinalityInvalidError, AtmosphereParameterInvalidError, AtmosphereProducerFailedError, AtmosphereSunMissingError, BLOOM_DISABLED, BLOOM_ENABLED, CAMERA_PROJECTION_ORTHOGRAPHIC, CAMERA_PROJECTION_PERSPECTIVE, Camera, DirectionalLight, EnvironmentSourceConflictError, Fog, FogOwnerConflictError, FogParametersInvalidError, Instances, Layer, Materials, MeshFilter, MeshRenderer, ObservationUnavailableError, PointLight, PointLightShadow, PostProcessParams, RenderFeatureCapabilityMissingError, RenderFeatureDrawRecordingFailedError, RenderFeaturePassOrderConflictError, RenderFeaturePreparationFailedError, RenderFeaturePreparedStateMismatchError, RenderFeatureRegistrationConflictError, RenderFeatureStageFailedError, ResourceInvalidValueError, SKYBOX_MODE_CUBEMAP, SceneInstance, SkyboxBackground, Skylight, SortKey, SpawnLightInvalidBoundsError, SpotLight, SpriteInstancesCountMismatchError, SpriteInstancesMutuallyExclusiveWithInstancesError, SpriteInstancesRequiresSpriteShaderError, TONEMAP_ACES_FILMIC, TONEMAP_AGX, TONEMAP_CINEON, TONEMAP_LINEAR, TONEMAP_NEUTRAL, TONEMAP_NONE, TONEMAP_REINHARD, TONEMAP_REINHARD_EXTENDED, TaaCapsInsufficientError, TemporalUnsupportedError, Visibility, VisibilityStateValue, antialiasFromF32, cameraProjectionFromF32, materialTextureValue, orthographic, perspective, skyboxModeFromF32, tonemapFromF32, tonemapToU32, visibilityStateFromU32 } from './chunk-YAKEQPWO.mjs';
1
+ export { MORPH_COMPUTE_WGSL, MORPH_MAX_TARGETS, createMorphFeature, createMorphReentryState, deriveMorphBounds, materialContribution, morphCullDecision, ownedRendererPlugin, renderComponentsPlugin, renderFeaturePlugin, renderPipelineContribution, rendererPlugin, samplerContribution, stepMorphReentry } from './chunk-PORZOL2V.mjs';
2
+ export { ACTIVE_CAMERA_KEY, MEMBERSHIP_TIMING_REASON_CODES, MEMBERSHIP_TIMING_REASON_MAPPING, MEMBERSHIP_TIMING_REASON_SCHEMA, MembershipTimingError, MeshUpdateError, PipelineError, PostProcessError, RENDER_FEATURE_VERTEX_LAYOUTS, RENDER_PHASE_CATALOG, RecoverError, RenderFeatureComputeGraphProjection, RenderFeatureGraphBufferRegistry, RenderFeatureRasterGraphProjection, SCENE_TEMPORAL_CLEAR_VALUE, SCENE_TEMPORAL_PACKED_ABI, SCENE_TEMPORAL_TARGET_FORMAT, SCENE_TEMPORAL_TARGET_SAMPLE_COUNT, TEMPORAL_MISSING_REASONS, TEMPORAL_PRODUCER_LANES, TEMPORAL_REACTIVE_REASONS, TONEMAP_POST_PROCESS_ID, URP_PIPELINE_ID, addTypedBloomPasses, addTypedCompositePostEffects, addTypedFrameObservationPass, addTypedFullscreenPass, addTypedScenePass, addTypedSkyboxPass, addTypedSsaoPasses, addTypedTonemapPass, createEnvironmentPipelineTopology, createMembershipTiming, createRenderFeatureContributionStaging, createRenderFeatureGpuWorkResolver, createRenderFeatureTarget, createRenderPipelineTarget, getActiveCamera, importRenderPipelineSurface, inspectEnvironmentGeneration, isRenderFeatureTargetHandle, observeCurrentFrame, projectFogEnvironment, projectRenderFeatureContributions, renderFeatureAttachmentResource, resolvePostColorDomainContract, resolveToneOutputContract, resolveVisibility, selectEnvironmentSource, setActiveCamera } from './chunk-UOJGMDGP.mjs';
3
+ export { ANTIALIAS_FXAA, ANTIALIAS_MSAA, ANTIALIAS_NONE, ANTIALIAS_TAA, Atmosphere, AtmosphereCapsInsufficientError, AtmosphereCardinalityInvalidError, AtmosphereParameterInvalidError, AtmosphereProducerFailedError, AtmosphereSunMissingError, BLOOM_DISABLED, BLOOM_ENABLED, CAMERA_PROJECTION_ORTHOGRAPHIC, CAMERA_PROJECTION_PERSPECTIVE, Camera, DirectionalLight, EnvironmentSourceConflictError, Fog, FogOwnerConflictError, FogParametersInvalidError, Instances, Layer, Materials, MeshFilter, MeshRenderer, ObservationUnavailableError, PointLight, PointLightShadow, PostProcessParams, RenderFeatureCapabilityMissingError, RenderFeatureDrawRecordingFailedError, RenderFeaturePassOrderConflictError, RenderFeaturePreparationFailedError, RenderFeaturePreparedStateMismatchError, RenderFeatureRegistrationConflictError, RenderFeatureStageFailedError, ResourceInvalidValueError, SKYBOX_MODE_CUBEMAP, SceneInstance, SkyboxBackground, Skylight, SortKey, SpawnLightInvalidBoundsError, SpotLight, SpriteInstancesCountMismatchError, SpriteInstancesMutuallyExclusiveWithInstancesError, SpriteInstancesRequiresSpriteShaderError, TONEMAP_ACES_FILMIC, TONEMAP_AGX, TONEMAP_CINEON, TONEMAP_LINEAR, TONEMAP_NEUTRAL, TONEMAP_NONE, TONEMAP_REINHARD, TONEMAP_REINHARD_EXTENDED, TaaCapsInsufficientError, TemporalUnsupportedError, Visibility, VisibilityStateValue, antialiasFromF32, cameraProjectionFromF32, materialTextureValue, orthographic, perspective, skyboxModeFromF32, tonemapFromF32, tonemapToU32, visibilityStateFromU32 } from './chunk-DJIMFYX6.mjs';
4
4
  //# sourceMappingURL=index.mjs.map
5
5
  //# sourceMappingURL=index.mjs.map
package/dist/internal.mjs CHANGED
@@ -1,10 +1,10 @@
1
1
  import './chunk-JMSB7AR4.mjs';
2
- export { EngineEnvironmentError, GpuResourceStore, HealthListenerRegistry, LostListenerRegistry, RhiErrorListenerRegistry, SHADOW_PROBE_WGSL, assembleMaterialProjection, buildPipelineForMaterialShader, createEngineMetrics, createMaterialAssetService, createMeshSsboGrowController, createRenderer, createSkinPaletteAllocator, deriveRecoverable, deriveStorageBufferCeiling, loadRhiPack, resolveMaterialShaderBindingContract, resolveMaterialShaderVariantSet, resolveMaterialShaderVertexInputContract, selectHdrpPbrPrewarmVariants, selectPipelineLayoutForVariant } from './chunk-33UF5SAO.mjs';
3
- export { _peekPerCellStreamingLayerKeys, computeChunkStreamBounds, effectivePivotYForTilemapFlip, encodeTilemapLayerValue, resetTilemapChunkExtractCache, resetTilemapDerivedEntityTracker, resolveTilesetRuntime, tilemapChunkExtractSystem } from './chunk-QRXPSX4X.mjs';
4
- export { MORPH_COMPUTE_WGSL, MORPH_MAX_TARGETS, collectSubtree, createMorphFeature, createMorphReentryState, deriveMorphBounds, materialContribution, morphCullDecision, ownedRendererPlugin, postSpawnResolveJoints, renderComponentsPlugin, renderFeaturePlugin, renderPipelineContribution, rendererPlugin, samplerContribution, stepMorphReentry } from './chunk-LXNGO6AO.mjs';
5
- import { MESH_PER_ENTITY_STRIDE } from './chunk-A5QCJSNL.mjs';
6
- export { ACTIVE_CAMERA_KEY, ATMOSPHERE_BACKGROUND_PARAMS_SLOT, ATMOSPHERE_PARAMS_BYTES, ATMOSPHERE_PARAMS_SLOT_BYTES, ATMOSPHERE_PARAMS_SLOT_COUNT, ATMOSPHERE_PRODUCER_KINDS, ATMOSPHERE_PRODUCER_PASS_COUNT, ATMOSPHERE_SUN_DISC_PARAMS_SLOT, BRDF_LUT_SIZE, BYTES_PER_LIGHT_SLOT, CAPTURE_VIEW_PROJS, CLUSTER_GRID_STRIDE_U32, CUBEMAP_FACE_VERTICES, CascadeVolumeSetBuilder, DEFAULT_CLUSTER_GRID, DEFERRED_COLOR_FORMATS, DEPTH_MIN_PARAMS_BYTE_SIZE, EMPTY_TEMPORAL_COVERAGE, FALLBACK_BYTES_PER_ROW, FOLDED_DRAWS_METRIC_KEY, FOLD_UNIFORM_INSTANCE_CAP, GPU_SCENE_LAYOUTS, GPU_SCENE_PRIMITIVE_FLAGS, GPU_SCENE_SCHEMAS, GPU_SCENE_WGSL, GpuBuffer, GpuScene, GpuTexture, HDRP_PIPELINE_ID, HDRP_UNIFORM_LIGHT_CAPACITY, RhiError as HdrpBufferAllocError, HdrpInstallError, INJECTION_KIND_LENGTHS, INSTANCE_UBO_FULL_ARRAY_BYTES, IRRADIANCE_SIZE, IblCapabilityLossError, KNOWN_PASS_KINDS, LIGHTSLOT_LAYOUT, LIGHT_ARRAY_HEADER_BYTES, LIGHT_ARRAY_MAX_SLOTS, LIGHT_INDEX_LIST_CAPACITY, LightSlotKind, MATERIAL_PER_ENTITY_STRIDE, MAX_LIGHTS, MAX_UNIFORM_INSTANCES, MEMBERSHIP_TIMING_REASON_CODES, MEMBERSHIP_TIMING_REASON_MAPPING, MEMBERSHIP_TIMING_REASON_SCHEMA, MESH_PER_ENTITY_STRIDE, MESH_SSBO_BYTES, MESH_UBO_FULL_ARRAY_BYTES, MembershipTimingError, MeshUpdateError, POINT_LIGHT_SHADOW_LAYER_SENTINEL, POINT_LIGHT_STD430_BYTES, POINT_SHADOW_VIEW_SLOT_COUNT, PREFILTER_MIP_LEVELS, PREFILTER_SIZE, PersistentRenderScene, PipelineError, PipelineSpecError, PostProcessError, RENDER_FEATURE_VERTEX_LAYOUTS, RENDER_PHASE_CATALOG, RecoverError, RenderFeatureComputeGraphProjection, RenderFeatureGraphBufferRegistry, RenderFeatureRasterGraphProjection, RenderSceneProjection, SCENE_TEMPORAL_CLEAR_VALUE, SCENE_TEMPORAL_PACKED_ABI, SCENE_TEMPORAL_TARGET_FORMAT, SCENE_TEMPORAL_TARGET_SAMPLE_COUNT, SHADOW_ATLAS_DEFAULT_FACE_SIZE, SHADOW_ATLAS_DEFAULT_LAYERS, SKIN_MATERIAL_SHADER_ID, SPEC_CONST_TABLE, SPOT_LIGHT_SHADOW_TILE_SENTINEL, SPOT_LIGHT_STD430_BYTES, SPRITE_PASS_PER_INSTANCE_REGION_VARIANT_SET, SSAO_DEFAULT_BIAS, SSAO_DEFAULT_INTENSITY, SSAO_DEFAULT_RADIUS, SSAO_KERNEL_SAMPLE_COUNT, SSAO_UNIFORM_BYTES, SSAO_UNIFORM_INTENSITY_OFFSET, STORAGE_BUFFER_MIN_REQUIRED, ShadowAtlas, TEMPORAL_JITTER_SAMPLE_COUNT, TEMPORAL_MISSING_REASONS, TEMPORAL_PRODUCER_LANES, TEMPORAL_REACTIVE_REASONS, TONEMAP_POST_PROCESS_ID, TaaHistoryStore, TemporalFrameTransaction, URP_PIPELINE_ID, VIEW_UNIFORM_BUFFER_SIZE, VIEW_UNIFORM_BYTES, VIEW_UNIFORM_SLOT_STRIDE, ZERO_CAMERA_CLEAR_FALLBACK, acquireSwapChainTarget, addBloomPasses, addEnvironmentCompositionPass, addEnvironmentProducerPasses, addFullscreenPass, addPointShadowPass, addScenePass, addShadowPass, addSkyboxPass, addSpotShadowPass, addSsaoPasses, addTonemapPass, addTypedBloomPasses, addTypedCompositePostEffects, addTypedFrameObservationPass, addTypedFullscreenPass, addTypedScenePass, addTypedSkyboxPass, addTypedSsaoPasses, addTypedTonemapPass, appendInjection, applyParamSnapshotToUbo, assembleMaterialWithSkylightEntries, assertStorageBufferCap, beginEnvironmentGeneration, bin, buildBeginRenderPassDescriptor, buildBindGroupLayoutDescriptor, buildCascadeLocalCacheTokens, buildFoldDispatchPlan, buildFullscreenPostProcessPass, buildLinearLdrMaterialSpecTable, buildMatchedRenderableIndices, buildPbrMaterialUserRegionEntries, buildPbrPipelineLayouts, buildPbrSkinLayouts, buildPbrViewBglEntries, buildPerSubmeshMaterialBg, buildPipelineDescriptor, buildPointShadowMatrices, buildRenderVisibilityViewDescriptors, buildSpecConstTable, buildUnlitMaterialBgl, buildUnlitMaterialBindGroupEntries, cacheKeyOf, calculateSphereClusterBounds, floatBits as canonicalEnvironmentFloatBits, clampPcfKernelSize, cleanPerEntityCache, clearIblCacheForDevice, clusterSpaceObjectAabb, colorFormatsForPassKind, computeDirectionalCsm, computeInvRangeSquared, computeProjectionMatrix, computeSplitLdrSprite, computeViewMatrix, configureSurface, createClusterBinScratch, createDebugDrawOnReady, createDerivedMaterialSlotPlan, createEnvironmentGenerationState, createEnvironmentPipelineTopology, createEnvironmentProducerGraph, createFullscreenBindGroup, createHdrpBindGroupLayoutDescriptor, createHdrpClusterMembershipBindGroup, createHdrpClusterMembershipBindGroupLayoutDescriptor, createHdrpUnifiedBindGroup, createIblPipelines, createMembershipTiming, createRenderFeatureContributionStaging, createRenderFeatureGpuWorkResolver, createRenderFeatureGraphicsPrepare, createRenderFeatureHost, createRenderFeatureTarget, createRenderPipelineTarget, createRenderSystem, createSkylightFallback, defaultMaterialSnapshot, defaultTransformSnapshot, defaultViewForUserRegionField, degToCos, deriveBglShapeFromShader, deriveCullingRadius, deriveEnvironmentBundleDescriptors, deriveGpuSceneTableLayout, deriveMipUploadLayout, deriveRenderDataCubemap, deriveRenderDataMesh, deriveRenderDataTexture, deriveTextureExtent, derivedParamSchema, detectNineSliceScaleTooSmall, directionalCascadeAtlasSize, directionalCascadeRasterViewport, disposeInstanceBuffers, disposeTransientInstanceBuffers, driveLazyEquirectProjection, encodeDirectionalShadowPass, encodeFullscreenPass, encodeMainPass, encodePointShadowPass, encodeSkyboxPass, encodeSpotShadowPass, ensureMeshSsboCapacity, entityHasTransparentSubmesh, entryHasDepthRead, environmentBundleBytes, environmentClearColor, environmentConsumerSnapshot, environmentGenerationDirty, environmentGenerationEnabled, environmentSignature, evaluateDirectionalShadowCache, evaluateFoldBucketUniformCap, executeEnvironmentProducerTransaction, extractCameraSnapshots, extractEntryResourceHandle, extractFrame, extractFrames, extractRenderableEntity, filterDispatchBySelector, foldDispatchBuckets, generateSsaoKernel, generateSsaoNoise, getActiveCamera, getIblComposedShaders, getIblWgslSource, getOrBuildPipeline, getOrCreateFromChain, getOrCreateHdrpBuffers, getOrCreateIblCache, getOrCreatePerEntity, getOrCreateSsaoBuffers, getOrCreateSsaoFallbackTexture, getRenderFeatureGraphState, getSsaoParameters, gpuSceneFieldOffset, gpuSceneWgsl, graphExecutionPhase, hasIblCache, hdrpPipeline, iblCacheSize, importEnvironmentGraphTargets, importEnvironmentResources, importRenderPipelineSurface, incrementFoldedDrawsMetric, inspectEnvironmentGeneration, interleaveSpriteInstanceBuffer, isEntityFullyTransparent, isGpuMembershipProducerAvailable, isLitMaterialSnapshot, isMaterialBgAssemblyCacheHit, isMeshSsboDevMode, isRenderFeatureTargetHandle, isStandardPbrMaterialShader, makeZeroCameraFallbackSnapshot, matchPass, materialBindingByteLength, materialUboFloatView, mergeSkylightIntoMaterialBgl, ndcPositionToCluster, observeCurrentFrame, packClusterUniform, packLightArrayHeader, packLightSlot, packPointLight, packSpotLight, packTemporalInstanceTransforms, passKindPolicyTable, pointShadowViewOffset, prepareExtractContext, projectFogEnvironment, projectMaterialPipeline, projectRenderFeatureContributions, projectTemporalView, pssmSplit, publishEnvironmentGeneration, rasterItemKey, recordBloomBlurHPass, recordBloomBlurVPass, recordBloomBrightPass, recordBloomCompositePass, recordFrame, recordFxaaPass, recordMainPass, recordPointShadowPass, recordRenderFeatureGraphicsPass, recordResolvedRenderFeatureGraphicsPass, recordShadowPass, recordSkyboxPass, recordSpotShadowPass, recordSsaoBlurPass, recordSsaoCalcPass, refreshExtractedFrameCameras, refreshExtractedFrameLights, refreshExtractedFramePostProcessParams, refreshRenderableMaterialSnapshot, releaseDebugDraw, renderFeatureAttachmentResource, renderStateHash, reportRenderFeatureGraphError, residentTextureView, resolveDepthOnlyView, resolveMaterialSnapshot, resolveMeshMaterialBindings, resolvePostColorDomainContract, resolveShadowMapSize, resolveSpotShadowMapSize, resolveSsaoParameters, resolveSurfaceFormatPair, resolveToneOutputContract, resolveVisibility, routeMaterialPipeline, runIblPrecompute, runRenderFeatureFrame, selectActiveCameraIndex, selectCookedMaterialPipelineForRender, selectEnvironmentSource, selectFog, selectGeometryPipeline, selectLazyEquirectHandle, selectMaterialDrawForRender, selectMaterialPipelineForRender, selectPasses, selectSpritePassVariantSet, selectSwapChainFormat, setActiveCamera, setIblComposedShaders, setIblWgslSource, setMeshSsboDevModeProbeForTests, settlePreparedGraphicsCompletion, snapshotSubmittedTemporalView, sortDispatchByQueue, specsEqual, spriteInstancesCacheHit, summarizeTemporalCoverage, temporalInstanceUploadByteLength, temporalJitterSample, temporalViewId, updateMaterialRuntimeValues, uploadMeshSsboBatch, urpPipeline, userRegionTextureFieldOrder, validateClusterGrid, validateDirection, validateDirectionalLightData, validatePointLightData, validatePointLightShadowData, validateRenderFeatureGraphicsPass, validateSpec, validateSpotLightData, variantSetFromDefines, videoTextureView, viewZToZSlice, warnMultiLightDirectional, warnMultiLightPoint, warnMultiLightSpot, warnMultiSkybox, warnMultiSkylight, worldEntityKey, writeDerivedMaterialPayload, writeMaterialSnapshotPayload, writeViewUbo } from './chunk-A5QCJSNL.mjs';
7
- export { ANTIALIAS_FXAA, ANTIALIAS_MSAA, ANTIALIAS_NONE, ANTIALIAS_TAA, Atmosphere, AtmosphereCapsInsufficientError, AtmosphereCardinalityInvalidError, AtmosphereParameterInvalidError, AtmosphereProducerFailedError, AtmosphereSunMissingError, BLOOM_DISABLED, BLOOM_ENABLED, CAMERA_PROJECTION_ORTHOGRAPHIC, CAMERA_PROJECTION_PERSPECTIVE, Camera, DirectionalLight, EnvironmentSourceConflictError, EquirectProjectionFailedError, Fog, FogOwnerConflictError, FogParametersInvalidError, GbufferAttachmentCountMismatchError, GbufferRtAllocFailedError, GlyphText, HdrpCapsInsufficientError, HdrpDeferredCapsInsufficientError, HdrpIndexListOverflowError, HdrpLightBudgetExceededError, Instances, Layer, MaterialSkinAttrMissingError, Materials, MeshFilter, MeshRenderer, MeshSsboCapacityExceededError, MeshSsboCeilingReachedError, ObservationUnavailableError, PointLight, PointLightShadow, PointShadowAtlasBoundsViolationError, PointShadowAtlasUninitializedError, PostProcessParams, RenderFeatureCapabilityMissingError, RenderFeatureDrawRecordingFailedError, RenderFeaturePassOrderConflictError, RenderFeaturePreparationFailedError, RenderFeaturePreparedStateMismatchError, RenderFeatureRegistrationConflictError, RenderFeatureStageFailedError, ResourceInvalidValueError, SKYBOX_MODE_CUBEMAP, SPRITE_PLAYBACK_MODE_CLAMP, SPRITE_PLAYBACK_MODE_LOOP, SPRITE_PREMULTIPLIED_ALPHA_BLEND, SceneInstance, ShadowInvalidConfigError, SkinMaterialMismatchError, SkinPaletteOverflowError, SkyboxBackground, Skylight, SortKey, SpawnLightInvalidBoundsError, SpotLight, SpriteAnimation, SpriteInstances, SpriteInstancesCountMismatchError, SpriteInstancesMutuallyExclusiveWithInstancesError, SpriteInstancesRequiresSpriteShaderError, SpriteRegionOverride, TONEMAP_ACES_FILMIC, TONEMAP_AGX, TONEMAP_CINEON, TONEMAP_LINEAR, TONEMAP_NEUTRAL, TONEMAP_NONE, TONEMAP_REINHARD, TONEMAP_REINHARD_EXTENDED, TRANSPARENT_SORT_CONFIG_KEY, TRANSPARENT_SORT_MODE_DISTANCE, TRANSPARENT_SORT_MODE_LAYER_Y, TRANSPARENT_SORT_MODE_LAYER_YZ, TRANSPARENT_SORT_MODE_LAYER_Z, TaaCapsInsufficientError, TemporalUnsupportedError, TileLayer, Tilemap, VertexStorageBufferUnavailableError, VideoUploadUnsupportedError, Visibility, VisibilityStateValue, antialiasFromF32, bloomEnabledFromF32, cameraProjectionFromF32, decodeSortScope, encodeSortScope, getTransparentSortConfig, glyphTextLayoutSystem, markTileLayerDirty, materialDrawDiagnostic, materialTextureValue, orthographic, perspective, resetGlyphBakeCache, setTransparentSortConfig, skyboxModeFromF32, spritePlaybackModeFromU32, tonemapFromF32, tonemapToU32, visibilityStateFromU32 } from './chunk-YAKEQPWO.mjs';
2
+ export { EngineEnvironmentError, GpuResourceStore, HealthListenerRegistry, LostListenerRegistry, RhiErrorListenerRegistry, SHADOW_PROBE_WGSL, assembleMaterialProjection, buildPipelineForMaterialShader, createEngineMetrics, createMaterialAssetService, createMeshSsboGrowController, createRenderer, createSkinPaletteAllocator, deriveRecoverable, deriveStorageBufferCeiling, loadRhiPack, resolveMaterialShaderBindingContract, resolveMaterialShaderVariantSet, resolveMaterialShaderVertexInputContract, selectHdrpPbrPrewarmVariants, selectNoColorPbrVariant, selectPipelineLayoutForVariant } from './chunk-F2SIOCRM.mjs';
3
+ export { _peekPerCellStreamingLayerKeys, computeChunkStreamBounds, effectivePivotYForTilemapFlip, encodeTilemapLayerValue, resetTilemapChunkExtractCache, resetTilemapDerivedEntityTracker, resolveTilesetRuntime, tilemapChunkExtractSystem } from './chunk-KHI6K4C6.mjs';
4
+ export { MORPH_COMPUTE_WGSL, MORPH_MAX_TARGETS, collectSubtree, createMorphFeature, createMorphReentryState, deriveMorphBounds, materialContribution, morphCullDecision, ownedRendererPlugin, postSpawnResolveJoints, renderComponentsPlugin, renderFeaturePlugin, renderPipelineContribution, rendererPlugin, samplerContribution, stepMorphReentry } from './chunk-PORZOL2V.mjs';
5
+ import { MESH_PER_ENTITY_STRIDE } from './chunk-UOJGMDGP.mjs';
6
+ export { ACTIVE_CAMERA_KEY, ATMOSPHERE_BACKGROUND_PARAMS_SLOT, ATMOSPHERE_PARAMS_BYTES, ATMOSPHERE_PARAMS_SLOT_BYTES, ATMOSPHERE_PARAMS_SLOT_COUNT, ATMOSPHERE_PRODUCER_KINDS, ATMOSPHERE_PRODUCER_PASS_COUNT, ATMOSPHERE_SUN_DISC_PARAMS_SLOT, BRDF_LUT_SIZE, BYTES_PER_LIGHT_SLOT, CAPTURE_VIEW_PROJS, CLUSTER_GRID_STRIDE_U32, CUBEMAP_FACE_VERTICES, CascadeVolumeSetBuilder, DEFAULT_CLUSTER_GRID, DEFERRED_COLOR_FORMATS, DEPTH_MIN_PARAMS_BYTE_SIZE, EMPTY_TEMPORAL_COVERAGE, FALLBACK_BYTES_PER_ROW, FOLDED_DRAWS_METRIC_KEY, FOLD_UNIFORM_INSTANCE_CAP, GPU_SCENE_LAYOUTS, GPU_SCENE_PRIMITIVE_FLAGS, GPU_SCENE_SCHEMAS, GPU_SCENE_WGSL, GpuBuffer, GpuScene, GpuTexture, HDRP_PIPELINE_ID, HDRP_UNIFORM_LIGHT_CAPACITY, RhiError as HdrpBufferAllocError, HdrpInstallError, INJECTION_KIND_LENGTHS, INSTANCE_UBO_FULL_ARRAY_BYTES, IRRADIANCE_SIZE, IblCapabilityLossError, KNOWN_PASS_KINDS, LIGHTSLOT_LAYOUT, LIGHT_ARRAY_HEADER_BYTES, LIGHT_ARRAY_MAX_SLOTS, LIGHT_INDEX_LIST_CAPACITY, LightSlotKind, MATERIAL_PER_ENTITY_STRIDE, MAX_LIGHTS, MAX_UNIFORM_INSTANCES, MEMBERSHIP_TIMING_REASON_CODES, MEMBERSHIP_TIMING_REASON_MAPPING, MEMBERSHIP_TIMING_REASON_SCHEMA, MESH_PER_ENTITY_STRIDE, MESH_SSBO_BYTES, MESH_UBO_FULL_ARRAY_BYTES, MembershipTimingError, MeshUpdateError, POINT_LIGHT_SHADOW_LAYER_SENTINEL, POINT_LIGHT_STD430_BYTES, POINT_SHADOW_VIEW_SLOT_COUNT, PREFILTER_MIP_LEVELS, PREFILTER_SIZE, PersistentRenderScene, PipelineError, PipelineSpecError, PostProcessError, RENDER_FEATURE_VERTEX_LAYOUTS, RENDER_PHASE_CATALOG, RecoverError, RenderFeatureComputeGraphProjection, RenderFeatureGraphBufferRegistry, RenderFeatureRasterGraphProjection, RenderSceneProjection, SCENE_TEMPORAL_CLEAR_VALUE, SCENE_TEMPORAL_PACKED_ABI, SCENE_TEMPORAL_TARGET_FORMAT, SCENE_TEMPORAL_TARGET_SAMPLE_COUNT, SHADOW_ATLAS_DEFAULT_FACE_SIZE, SHADOW_ATLAS_DEFAULT_LAYERS, SKIN_MATERIAL_SHADER_ID, SPEC_CONST_TABLE, SPOT_LIGHT_SHADOW_TILE_SENTINEL, SPOT_LIGHT_STD430_BYTES, SPRITE_PASS_PER_INSTANCE_REGION_VARIANT_SET, SSAO_DEFAULT_BIAS, SSAO_DEFAULT_INTENSITY, SSAO_DEFAULT_RADIUS, SSAO_KERNEL_SAMPLE_COUNT, SSAO_UNIFORM_BYTES, SSAO_UNIFORM_INTENSITY_OFFSET, STORAGE_BUFFER_MIN_REQUIRED, ShadowAtlas, TEMPORAL_JITTER_SAMPLE_COUNT, TEMPORAL_MISSING_REASONS, TEMPORAL_PRODUCER_LANES, TEMPORAL_REACTIVE_REASONS, TONEMAP_POST_PROCESS_ID, TaaHistoryStore, TemporalFrameTransaction, URP_PIPELINE_ID, VIEW_UNIFORM_BUFFER_SIZE, VIEW_UNIFORM_BYTES, VIEW_UNIFORM_SLOT_STRIDE, ZERO_CAMERA_CLEAR_FALLBACK, acquireSwapChainTarget, addBloomPasses, addEnvironmentCompositionPass, addEnvironmentProducerPasses, addFullscreenPass, addPointShadowPass, addScenePass, addShadowPass, addSkyboxPass, addSpotShadowPass, addSsaoPasses, addTonemapPass, addTypedBloomPasses, addTypedCompositePostEffects, addTypedFrameObservationPass, addTypedFullscreenPass, addTypedScenePass, addTypedSkyboxPass, addTypedSsaoPasses, addTypedTonemapPass, appendInjection, applyParamSnapshotToUbo, assembleMaterialWithSkylightEntries, assertStorageBufferCap, beginEnvironmentGeneration, bin, buildBeginRenderPassDescriptor, buildBindGroupLayoutDescriptor, buildCascadeLocalCacheTokens, buildFoldDispatchPlan, buildFullscreenPostProcessPass, buildLinearLdrMaterialSpecTable, buildMatchedRenderableIndices, buildPbrMaterialUserRegionEntries, buildPbrPipelineLayouts, buildPbrSkinLayouts, buildPbrViewBglEntries, buildPerSubmeshMaterialBg, buildPipelineDescriptor, buildPointShadowMatrices, buildRenderVisibilityViewDescriptors, buildSpecConstTable, buildUnlitMaterialBgl, buildUnlitMaterialBindGroupEntries, cacheKeyOf, calculateSphereClusterBounds, floatBits as canonicalEnvironmentFloatBits, clampPcfKernelSize, cleanPerEntityCache, clearIblCacheForDevice, clusterSpaceObjectAabb, colorFormatsForPassKind, computeDirectionalCsm, computeInvRangeSquared, computeProjectionMatrix, computeSplitLdrSprite, computeViewMatrix, configureSurface, createClusterBinScratch, createDebugDrawOnReady, createDerivedMaterialSlotPlan, createEnvironmentGenerationState, createEnvironmentPipelineTopology, createEnvironmentProducerGraph, createFullscreenBindGroup, createHdrpBindGroupLayoutDescriptor, createHdrpClusterMembershipBindGroup, createHdrpClusterMembershipBindGroupLayoutDescriptor, createHdrpUnifiedBindGroup, createIblPipelines, createMembershipTiming, createRenderFeatureContributionStaging, createRenderFeatureGpuWorkResolver, createRenderFeatureGraphicsPrepare, createRenderFeatureHost, createRenderFeatureTarget, createRenderPipelineTarget, createRenderSystem, createSkylightFallback, defaultMaterialSnapshot, defaultTransformSnapshot, defaultViewForUserRegionField, degToCos, deriveBglShapeFromShader, deriveCullingRadius, deriveEnvironmentBundleDescriptors, deriveGpuSceneTableLayout, deriveMipUploadLayout, deriveRenderDataCubemap, deriveRenderDataMesh, deriveRenderDataTexture, deriveTextureExtent, derivedParamSchema, detectNineSliceScaleTooSmall, directionalCascadeAtlasSize, directionalCascadeRasterViewport, disposeInstanceBuffers, disposeTransientInstanceBuffers, driveLazyEquirectProjection, encodeDirectionalShadowPass, encodeFullscreenPass, encodeMainPass, encodePointShadowPass, encodeSkyboxPass, encodeSpotShadowPass, ensureMeshSsboCapacity, entityHasTransparentSubmesh, entryHasDepthRead, environmentBundleBytes, environmentClearColor, environmentConsumerSnapshot, environmentGenerationDirty, environmentGenerationEnabled, environmentSignature, evaluateDirectionalShadowCache, evaluateFoldBucketUniformCap, executeEnvironmentProducerTransaction, extractCameraSnapshots, extractEntryResourceHandle, extractFrame, extractFrames, extractRenderableEntity, filterDispatchBySelector, foldDispatchBuckets, generateSsaoKernel, generateSsaoNoise, getActiveCamera, getIblComposedShaders, getIblWgslSource, getOrBuildPipeline, getOrCreateFromChain, getOrCreateHdrpBuffers, getOrCreateIblCache, getOrCreatePerEntity, getOrCreateSsaoBuffers, getOrCreateSsaoFallbackTexture, getRenderFeatureGraphState, getSsaoParameters, gpuSceneFieldOffset, gpuSceneWgsl, graphExecutionPhase, hasIblCache, hdrpPipeline, iblCacheSize, importEnvironmentGraphTargets, importEnvironmentResources, importRenderPipelineSurface, incrementFoldedDrawsMetric, inspectEnvironmentGeneration, interleaveSpriteInstanceBuffer, isEntityFullyTransparent, isGpuMembershipProducerAvailable, isLitMaterialSnapshot, isMaterialBgAssemblyCacheHit, isMeshSsboDevMode, isRenderFeatureTargetHandle, isStandardPbrMaterialShader, makeZeroCameraFallbackSnapshot, matchPass, materialBindingByteLength, materialUboFloatView, mergeSkylightIntoMaterialBgl, ndcPositionToCluster, observeCurrentFrame, packClusterUniform, packLightArrayHeader, packLightSlot, packPointLight, packSpotLight, packTemporalInstanceTransforms, passKindPolicyTable, pointShadowViewOffset, prepareExtractContext, projectFogEnvironment, projectMaterialPipeline, projectRenderFeatureContributions, projectTemporalView, pssmSplit, publishEnvironmentGeneration, rasterItemKey, recordBloomBlurHPass, recordBloomBlurVPass, recordBloomBrightPass, recordBloomCompositePass, recordFrame, recordFxaaPass, recordMainPass, recordPointShadowPass, recordRenderFeatureGraphicsPass, recordResolvedRenderFeatureGraphicsPass, recordShadowPass, recordSkyboxPass, recordSpotShadowPass, recordSsaoBlurPass, recordSsaoCalcPass, refreshExtractedFrameCameras, refreshExtractedFrameLights, refreshExtractedFramePostProcessParams, refreshRenderableMaterialSnapshot, releaseDebugDraw, renderFeatureAttachmentResource, renderStateHash, reportRenderFeatureGraphError, residentTextureView, resolveDepthOnlyView, resolveMaterialSnapshot, resolveMeshMaterialBindings, resolvePostColorDomainContract, resolveShadowMapSize, resolveSpotShadowMapSize, resolveSsaoParameters, resolveSurfaceFormatPair, resolveToneOutputContract, resolveVisibility, routeMaterialPipeline, runIblPrecompute, runRenderFeatureFrame, selectActiveCameraIndex, selectCookedMaterialPipelineForRender, selectEnvironmentSource, selectFog, selectGeometryPipeline, selectLazyEquirectHandle, selectMaterialDrawForRender, selectMaterialPipelineForRender, selectPasses, selectSpritePassVariantSet, selectSwapChainFormat, setActiveCamera, setIblComposedShaders, setIblWgslSource, setMeshSsboDevModeProbeForTests, settlePreparedGraphicsCompletion, snapshotSubmittedTemporalView, sortDispatchByQueue, specsEqual, spriteInstancesCacheHit, summarizeTemporalCoverage, temporalInstanceUploadByteLength, temporalJitterSample, temporalViewId, updateMaterialRuntimeValues, uploadMeshSsboBatch, urpPipeline, userRegionTextureFieldOrder, validateClusterGrid, validateDirection, validateDirectionalLightData, validatePointLightData, validatePointLightShadowData, validateRenderFeatureGraphicsPass, validateSpec, validateSpotLightData, variantSetFromDefines, videoTextureView, viewZToZSlice, warnMultiLightDirectional, warnMultiLightPoint, warnMultiLightSpot, warnMultiSkybox, warnMultiSkylight, worldEntityKey, writeDerivedMaterialPayload, writeMaterialSnapshotPayload, writeViewUbo } from './chunk-UOJGMDGP.mjs';
7
+ export { ANTIALIAS_FXAA, ANTIALIAS_MSAA, ANTIALIAS_NONE, ANTIALIAS_TAA, Atmosphere, AtmosphereCapsInsufficientError, AtmosphereCardinalityInvalidError, AtmosphereParameterInvalidError, AtmosphereProducerFailedError, AtmosphereSunMissingError, BLOOM_DISABLED, BLOOM_ENABLED, CAMERA_PROJECTION_ORTHOGRAPHIC, CAMERA_PROJECTION_PERSPECTIVE, Camera, DirectionalLight, EnvironmentSourceConflictError, EquirectProjectionFailedError, Fog, FogOwnerConflictError, FogParametersInvalidError, GbufferAttachmentCountMismatchError, GbufferRtAllocFailedError, GlyphText, HdrpCapsInsufficientError, HdrpDeferredCapsInsufficientError, HdrpIndexListOverflowError, HdrpLightBudgetExceededError, Instances, Layer, MaterialSkinAttrMissingError, Materials, MeshFilter, MeshRenderer, MeshSsboCapacityExceededError, MeshSsboCeilingReachedError, ObservationUnavailableError, PointLight, PointLightShadow, PointShadowAtlasBoundsViolationError, PointShadowAtlasUninitializedError, PostProcessParams, RenderFeatureCapabilityMissingError, RenderFeatureDrawRecordingFailedError, RenderFeaturePassOrderConflictError, RenderFeaturePreparationFailedError, RenderFeaturePreparedStateMismatchError, RenderFeatureRegistrationConflictError, RenderFeatureStageFailedError, ResourceInvalidValueError, SKYBOX_MODE_CUBEMAP, SPRITE_PLAYBACK_MODE_CLAMP, SPRITE_PLAYBACK_MODE_LOOP, SPRITE_PREMULTIPLIED_ALPHA_BLEND, SceneInstance, ShadowInvalidConfigError, SkinMaterialMismatchError, SkinPaletteOverflowError, SkyboxBackground, Skylight, SortKey, SpawnLightInvalidBoundsError, SpotLight, SpriteAnimation, SpriteInstances, SpriteInstancesCountMismatchError, SpriteInstancesMutuallyExclusiveWithInstancesError, SpriteInstancesRequiresSpriteShaderError, SpriteRegionOverride, TONEMAP_ACES_FILMIC, TONEMAP_AGX, TONEMAP_CINEON, TONEMAP_LINEAR, TONEMAP_NEUTRAL, TONEMAP_NONE, TONEMAP_REINHARD, TONEMAP_REINHARD_EXTENDED, TRANSPARENT_SORT_CONFIG_KEY, TRANSPARENT_SORT_MODE_DISTANCE, TRANSPARENT_SORT_MODE_LAYER_Y, TRANSPARENT_SORT_MODE_LAYER_YZ, TRANSPARENT_SORT_MODE_LAYER_Z, TaaCapsInsufficientError, TemporalUnsupportedError, TileLayer, Tilemap, VertexStorageBufferUnavailableError, VideoUploadUnsupportedError, Visibility, VisibilityStateValue, antialiasFromF32, bloomEnabledFromF32, cameraProjectionFromF32, decodeSortScope, encodeSortScope, getTransparentSortConfig, glyphTextLayoutSystem, markTileLayerDirty, materialDrawDiagnostic, materialTextureValue, orthographic, perspective, resetGlyphBakeCache, setTransparentSortConfig, skyboxModeFromF32, spritePlaybackModeFromU32, tonemapFromF32, tonemapToU32, visibilityStateFromU32 } from './chunk-DJIMFYX6.mjs';
8
8
 
9
9
  // src/extract/schema-readers.ts
10
10
  function readRenderSchemas(mesh, light, camera) {
@@ -1,4 +1,4 @@
1
- import type { CookedMaterialRecord } from '@forgeax/engine-pack';
1
+ import type { CookedMaterialRecord } from '@forgeax/engine-pack/material-cook';
2
2
  import type { MaterialValue } from '@forgeax/engine-types';
3
3
  export interface MaterialRenderPassProjection {
4
4
  readonly name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"assembly.d.ts","sourceRoot":"","sources":["../../../src/renderer/material/assembly.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACxD,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACzD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,SAAS,4BAA4B,EAAE,CAAC;IACzD,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC;IACvE,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7C;AAkBD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,oBAAoB,GAAG,wBAAwB,CAajG"}
1
+ {"version":3,"file":"assembly.d.ts","sourceRoot":"","sources":["../../../src/renderer/material/assembly.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACxD,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACzD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,SAAS,4BAA4B,EAAE,CAAC;IACzD,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC;IACvE,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7C;AAkBD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,oBAAoB,GAAG,wBAAwB,CAajG"}
@@ -178,6 +178,12 @@ export type LayoutKind = 'pbr' | 'pbr-skin' | 'hdrp-pbr' | 'sprite-urp' | 'unlit
178
178
  * filtered: colored and no-color meshes use distinct composed WGSL modules.
179
179
  */
180
180
  export declare function selectHdrpPbrPrewarmVariants(manifestEntry: MaterialShaderManifestEntry | undefined, storageBufferCapable: boolean): readonly MaterialShaderManifestVariant[];
181
+ /**
182
+ * Select the PBR variant that matches a fallback mesh with no COLOR_0 input.
183
+ * Unknown/custom material IDs may still use the legacy PBR fallback, so that
184
+ * path must obey the same geometry-owned vertex-color axis as registered PBR.
185
+ */
186
+ export declare function selectNoColorPbrVariant(manifestEntry: MaterialShaderManifestEntry | undefined, storageBufferCapable: boolean, variantSet: string | undefined): MaterialShaderManifestVariant | undefined;
181
187
  export type MaterialShaderBindingContract = 'group-0' | 'group-0-resource' | 'view-only' | 'view-with-resource' | 'render-material';
182
188
  export type MaterialShaderVertexInputContract = 'none' | 'render-material';
183
189
  export declare function resolveMaterialShaderBindingContract(source: string): MaterialShaderBindingContract;
@@ -1 +1 @@
1
- {"version":3,"file":"renderer-factory.d.ts","sourceRoot":"","sources":["../../src/renderer/renderer-factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"renderer-factory.d.ts","sourceRoot":"","sources":["../../src/renderer/renderer-factory.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forgeax/engine-render",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "description": "Canonical ECS render schemas and renderer boundary.",
5
5
  "private": false,
6
6
  "type": "module",
@@ -32,27 +32,27 @@
32
32
  "LICENSE"
33
33
  ],
34
34
  "dependencies": {
35
- "@forgeax/engine-assets-runtime": "0.1.3",
36
- "@forgeax/engine-audio-webaudio": "0.1.3",
37
- "@forgeax/engine-codec": "0.1.3",
38
- "@forgeax/engine-debug-draw": "0.1.3",
39
- "@forgeax/engine-ecs": "0.1.3",
40
- "@forgeax/engine-geometry": "0.1.3",
41
- "@forgeax/engine-graphics-extras": "0.1.3",
42
- "@forgeax/engine-input": "0.1.3",
43
- "@forgeax/engine-math": "0.1.3",
44
- "@forgeax/engine-pack": "0.1.3",
45
- "@forgeax/engine-plugin": "0.1.3",
46
- "@forgeax/engine-profiler": "0.1.3",
47
- "@forgeax/engine-render-graph": "0.1.3",
48
- "@forgeax/engine-rhi": "0.1.3",
49
- "@forgeax/engine-rhi-null": "0.1.3",
50
- "@forgeax/engine-rhi-webgpu": "0.1.3",
51
- "@forgeax/engine-rhi-wgpu": "0.1.3",
52
- "@forgeax/engine-scene": "0.1.3",
53
- "@forgeax/engine-shader": "0.1.3",
54
- "@forgeax/engine-skinning": "0.1.3",
55
- "@forgeax/engine-types": "0.1.3"
35
+ "@forgeax/engine-assets-runtime": "0.1.4",
36
+ "@forgeax/engine-audio-webaudio": "0.1.4",
37
+ "@forgeax/engine-codec": "0.1.4",
38
+ "@forgeax/engine-debug-draw": "0.1.4",
39
+ "@forgeax/engine-ecs": "0.1.4",
40
+ "@forgeax/engine-geometry": "0.1.4",
41
+ "@forgeax/engine-graphics-extras": "0.1.4",
42
+ "@forgeax/engine-input": "0.1.4",
43
+ "@forgeax/engine-math": "0.1.4",
44
+ "@forgeax/engine-pack": "0.1.4",
45
+ "@forgeax/engine-plugin": "0.1.4",
46
+ "@forgeax/engine-profiler": "0.1.4",
47
+ "@forgeax/engine-render-graph": "0.1.4",
48
+ "@forgeax/engine-rhi": "0.1.4",
49
+ "@forgeax/engine-rhi-null": "0.1.4",
50
+ "@forgeax/engine-rhi-webgpu": "0.1.4",
51
+ "@forgeax/engine-rhi-wgpu": "0.1.4",
52
+ "@forgeax/engine-scene": "0.1.4",
53
+ "@forgeax/engine-shader": "0.1.4",
54
+ "@forgeax/engine-skinning": "0.1.4",
55
+ "@forgeax/engine-types": "0.1.4"
56
56
  },
57
57
  "forgeax": {
58
58
  "metrics": {
@@ -4,6 +4,7 @@ import {
4
4
  resolveMaterialShaderBindingContract,
5
5
  resolveMaterialShaderVertexInputContract,
6
6
  selectHdrpPbrPrewarmVariants,
7
+ selectNoColorPbrVariant,
7
8
  } from '../renderer/renderer-factory';
8
9
 
9
10
  describe('material shader binding contract', () => {
@@ -85,8 +86,54 @@ describe('material shader vertex input contract', () => {
85
86
  });
86
87
 
87
88
  describe('PBR variant boot prewarm contract', () => {
89
+ const manifest = {
90
+ identifier: 'forgeax::default-standard-pbr',
91
+ sourcePath: 'standard-pbr.wgsl',
92
+ composedWgsl: 'colored-urp',
93
+ paramSchema: '[]',
94
+ variants: [
95
+ {
96
+ definesKey: '',
97
+ defines: {
98
+ CLUSTER_FORWARD_AVAILABLE: true,
99
+ STORAGE_BUFFER_AVAILABLE: true,
100
+ VERTEX_COLOR_AVAILABLE: true,
101
+ },
102
+ composedWgsl: 'colored-hdrp',
103
+ },
104
+ {
105
+ definesKey:
106
+ 'CLUSTER_FORWARD_AVAILABLE=true+STORAGE_BUFFER_AVAILABLE=true+VERTEX_COLOR_AVAILABLE=false',
107
+ defines: {
108
+ CLUSTER_FORWARD_AVAILABLE: true,
109
+ STORAGE_BUFFER_AVAILABLE: true,
110
+ VERTEX_COLOR_AVAILABLE: false,
111
+ },
112
+ composedWgsl: 'plain-hdrp',
113
+ },
114
+ {
115
+ definesKey:
116
+ 'CLUSTER_FORWARD_AVAILABLE=false+STORAGE_BUFFER_AVAILABLE=true+VERTEX_COLOR_AVAILABLE=false',
117
+ defines: {
118
+ CLUSTER_FORWARD_AVAILABLE: false,
119
+ STORAGE_BUFFER_AVAILABLE: true,
120
+ VERTEX_COLOR_AVAILABLE: false,
121
+ },
122
+ composedWgsl: 'plain-urp',
123
+ },
124
+ ],
125
+ } satisfies MaterialShaderManifestEntry;
126
+
127
+ it('selects the no-color PBR variant for the requested pipeline family', () => {
128
+ expect(selectNoColorPbrVariant(manifest, true, undefined)?.composedWgsl).toBe('plain-urp');
129
+ expect(selectNoColorPbrVariant(manifest, true, '')?.composedWgsl).toBe('plain-hdrp');
130
+ expect(
131
+ selectNoColorPbrVariant(manifest, true, 'CLUSTER_FORWARD_AVAILABLE=true')?.composedWgsl,
132
+ ).toBe('plain-hdrp');
133
+ });
134
+
88
135
  it('prewarms every device HDRP variant, including the no-color variant', () => {
89
- const manifest = {
136
+ const prewarmManifest = {
90
137
  identifier: 'forgeax::default-standard-pbr',
91
138
  sourcePath: 'standard-pbr.wgsl',
92
139
  composedWgsl: 'default',
@@ -116,10 +163,10 @@ describe('PBR variant boot prewarm contract', () => {
116
163
  } satisfies MaterialShaderManifestEntry;
117
164
 
118
165
  expect(
119
- selectHdrpPbrPrewarmVariants(manifest, true).map((variant) => variant.composedWgsl),
166
+ selectHdrpPbrPrewarmVariants(prewarmManifest, true).map((variant) => variant.composedWgsl),
120
167
  ).toEqual(['colored', 'plain']);
121
168
  expect(
122
- selectHdrpPbrPrewarmVariants(manifest, false).map((variant) => variant.composedWgsl),
169
+ selectHdrpPbrPrewarmVariants(prewarmManifest, false).map((variant) => variant.composedWgsl),
123
170
  ).toEqual([]);
124
171
  });
125
172
  });
@@ -173,8 +173,8 @@ export function skyboxModeFromF32(value: number): SkyboxMode {
173
173
  * handle as the Skylight entity -- two independent components sharing the
174
174
  * same GPU resource (the internally-projected cubemap).
175
175
  *
176
- * `equirect` is a `Handle<EquirectAsset>` resolved from a vite pack-index
177
- * GUID via `engine.assets.loadByGuid<EquirectAsset>(guid)`. The cubemap
176
+ * `equirect` is resolved from a Vite pack-index GUID through the App-owned
177
+ * AssetRegistry (`AssetRegistry.load(guid, 'equirect')`). The cubemap
178
178
  * projection is internal and driven by the render-system record arm; there
179
179
  * is no user upload call.
180
180
  *
@@ -186,12 +186,11 @@ export function skyboxModeFromF32(value: number): SkyboxMode {
186
186
  * source equirectangular asset.
187
187
  *
188
188
  * @example Minimum spawn (defaults mode=0):
189
- * // equirectHandle resolved from loadByGuid<EquirectAsset> (same handle as
190
- * // the Skylight).
189
+ * // Resolve the equirect payload through the App AssetRegistry.
191
190
  * world.spawn({ component: SkyboxBackground, data: { equirect: equirectHandle } });
192
191
  *
193
192
  * @example Single handle shared between Skylight (IBL) and SkyboxBackground:
194
- * const hdrRes = await engine.assets.loadByGuid<EquirectAsset>(guid);
193
+ * const hdrRes = await assets.load(guid, 'equirect');
195
194
  * if (!hdrRes.ok) throw hdrRes.error;
196
195
  * world.spawn({ component: Skylight, data: { equirect: hdrRes.value } });
197
196
  * world.spawn({ component: SkyboxBackground, data: { equirect: hdrRes.value } });
@@ -1,4 +1,4 @@
1
- import type { CookedMaterialRecord } from '@forgeax/engine-pack';
1
+ import type { CookedMaterialRecord } from '@forgeax/engine-pack/material-cook';
2
2
  import type { MaterialValue } from '@forgeax/engine-types';
3
3
 
4
4
  export interface MaterialRenderPassProjection {
@@ -647,6 +647,27 @@ export function selectHdrpPbrPrewarmVariants(
647
647
  );
648
648
  }
649
649
 
650
+ /**
651
+ * Select the PBR variant that matches a fallback mesh with no COLOR_0 input.
652
+ * Unknown/custom material IDs may still use the legacy PBR fallback, so that
653
+ * path must obey the same geometry-owned vertex-color axis as registered PBR.
654
+ */
655
+ export function selectNoColorPbrVariant(
656
+ manifestEntry: MaterialShaderManifestEntry | undefined,
657
+ storageBufferCapable: boolean,
658
+ variantSet: string | undefined,
659
+ ): MaterialShaderManifestVariant | undefined {
660
+ const hdrpRequested =
661
+ variantSet === '' || variantSet?.includes('CLUSTER_FORWARD_AVAILABLE=true') === true;
662
+ return manifestEntry?.variants.find(
663
+ (variant) =>
664
+ variant.defines.STORAGE_BUFFER_AVAILABLE === storageBufferCapable &&
665
+ variant.defines.VERTEX_COLOR_AVAILABLE === false &&
666
+ (!('CLUSTER_FORWARD_AVAILABLE' in variant.defines) ||
667
+ variant.defines.CLUSTER_FORWARD_AVAILABLE === hdrpRequested),
668
+ );
669
+ }
670
+
650
671
  export type MaterialShaderBindingContract =
651
672
  | 'group-0'
652
673
  | 'group-0-resource'
@@ -1926,11 +1947,33 @@ async function makeWebGPURenderer(internals: WebGPURendererInternals): Promise<R
1926
1947
  },
1927
1948
  );
1928
1949
  /** Legacy feature-only pipeline source; authored MaterialReady never uses it. */
1929
- const findStandardPbrEntry = (): import('@forgeax/engine-types').ManifestEntry | undefined => {
1950
+ const findStandardPbrEntry = (
1951
+ variantSet?: string,
1952
+ ): import('@forgeax/engine-types').ManifestEntry | undefined => {
1953
+ let standardEntry: import('@forgeax/engine-types').ManifestEntry | undefined;
1930
1954
  for (const entry of getShader().entries()) {
1931
- if (entry.wgsl.includes('f_schlick')) return entry;
1955
+ if (entry.wgsl.includes('f_schlick')) {
1956
+ standardEntry = entry;
1957
+ break;
1958
+ }
1932
1959
  }
1933
- return undefined;
1960
+ if (standardEntry === undefined) return undefined;
1961
+ const pbrManifestEntry = [...getShader().materialShaderManifestEntries()].find(
1962
+ (entry) => entry.identifier === 'forgeax::default-standard-pbr',
1963
+ );
1964
+ const noColorVariant = selectNoColorPbrVariant(
1965
+ pbrManifestEntry,
1966
+ internals.device.caps.storageBuffer,
1967
+ variantSet,
1968
+ );
1969
+ if (noColorVariant !== undefined && noColorVariant.composedWgsl !== standardEntry.wgsl) {
1970
+ return { ...standardEntry, wgsl: noColorVariant.composedWgsl };
1971
+ }
1972
+ const runtimePbr = getShader().findMaterialArtifact('forgeax::default-standard-pbr');
1973
+ if (runtimePbr.ok && runtimePbr.value.source !== standardEntry.wgsl) {
1974
+ return { ...standardEntry, wgsl: runtimePbr.value.source };
1975
+ }
1976
+ return standardEntry;
1934
1977
  };
1935
1978
  // Shared builder context for the per-MaterialShader pipeline cache.
1936
1979
  // Built once for registered material shader IDs. Null when the manifest is
@@ -2459,7 +2502,7 @@ async function makeWebGPURenderer(internals: WebGPURendererInternals): Promise<R
2459
2502
  vertexLayoutProjection,
2460
2503
  );
2461
2504
  }
2462
- const pbrEntry = findStandardPbrEntry();
2505
+ const pbrEntry = findStandardPbrEntry(effectiveVariantSet);
2463
2506
  if (pbrEntry === undefined) return null;
2464
2507
  return buildAndCachePipeline(
2465
2508
  cacheKey,