@woosh/meep-engine 3.52.0 → 3.54.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/package.json +1 -1
- package/src/core/math/noise/worley_noise_2d.d.ts +14 -0
- package/src/core/math/noise/worley_noise_2d.d.ts.map +1 -0
- package/src/core/math/noise/worley_noise_2d.js +74 -0
- package/src/engine/ecs/animation/Animation.d.ts +4 -25
- package/src/engine/ecs/animation/Animation.d.ts.map +1 -1
- package/src/engine/ecs/animation/Animation.js +9 -41
- package/src/engine/ecs/ik/IKGoalSystem.d.ts +4 -5
- package/src/engine/ecs/ik/IKGoalSystem.d.ts.map +1 -1
- package/src/engine/ecs/ik/IKGoalSystem.js +4 -6
- package/src/engine/graphics/ecs/mesh/assetTypeByPath.js +1 -1
- package/src/engine/graphics/texture/atlas/CachingTextureAtlas.d.ts +6 -1
- package/src/engine/graphics/texture/atlas/CachingTextureAtlas.d.ts.map +1 -1
- package/src/engine/graphics/texture/atlas/CachingTextureAtlas.js +363 -325
- package/src/engine/graphics/texture/atlas/ManagedTextureAtlas.d.ts +93 -14
- package/src/engine/graphics/texture/atlas/ManagedTextureAtlas.d.ts.map +1 -1
- package/src/engine/graphics/texture/atlas/ManagedTextureAtlas.js +322 -183
- package/src/engine/graphics/texture/atlas/ReferencedTextureAtlas.d.ts +9 -0
- package/src/engine/graphics/texture/atlas/ReferencedTextureAtlas.d.ts.map +1 -1
- package/src/engine/graphics/texture/atlas/ReferencedTextureAtlas.js +110 -83
- package/src/engine/graphics/texture/atlas/SpriteAtlas.d.ts +42 -0
- package/src/engine/graphics/texture/atlas/SpriteAtlas.d.ts.map +1 -0
- package/src/engine/{graphics3/decal/DecalAtlas.js → graphics/texture/atlas/SpriteAtlas.js} +202 -194
- package/src/engine/graphics/texture/atlas/SpriteAtlasFill.d.ts +12 -0
- package/src/engine/graphics/texture/atlas/SpriteAtlasFill.d.ts.map +1 -0
- package/src/engine/graphics/texture/atlas/SpriteAtlasFill.js +30 -0
- package/src/engine/graphics/texture/atlas/TextureAtlas.d.ts +7 -0
- package/src/engine/graphics/texture/atlas/TextureAtlas.d.ts.map +1 -1
- package/src/engine/graphics/texture/atlas/TextureAtlas.js +11 -1
- package/src/engine/graphics/texture/atlas/sprite_atlas_border.d.ts +52 -0
- package/src/engine/graphics/texture/atlas/sprite_atlas_border.d.ts.map +1 -0
- package/src/engine/{graphics3/decal/decal_atlas_border.js → graphics/texture/atlas/sprite_atlas_border.js} +69 -69
- package/src/engine/graphics3/AnimationGraphSystem.d.ts +9 -22
- package/src/engine/graphics3/AnimationGraphSystem.d.ts.map +1 -1
- package/src/engine/graphics3/AnimationGraphSystem.js +58 -203
- package/src/engine/graphics3/AnimationSystem.d.ts +7 -18
- package/src/engine/graphics3/AnimationSystem.d.ts.map +1 -1
- package/src/engine/graphics3/AnimationSystem.js +62 -243
- package/src/engine/graphics3/DecalSystem.d.ts.map +1 -1
- package/src/engine/graphics3/DecalSystem.js +447 -450
- package/src/engine/graphics3/FoliageWindSystem.d.ts +67 -0
- package/src/engine/graphics3/FoliageWindSystem.d.ts.map +1 -0
- package/src/engine/graphics3/FoliageWindSystem.js +257 -0
- package/src/engine/graphics3/GPUFluidSystem.d.ts +7 -0
- package/src/engine/graphics3/GPUFluidSystem.d.ts.map +1 -1
- package/src/engine/graphics3/GPUFluidSystem.js +39 -1
- package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts +9 -23
- package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts.map +1 -1
- package/src/engine/graphics3/GPUParticleEmitterSystem.js +904 -949
- package/src/engine/graphics3/animation/AnimationClips.d.ts +107 -13
- package/src/engine/graphics3/animation/AnimationClips.d.ts.map +1 -1
- package/src/engine/graphics3/animation/AnimationClips.js +207 -10
- package/src/engine/graphics3/animation/AnimationClipsSink.d.ts +89 -0
- package/src/engine/graphics3/animation/AnimationClipsSink.d.ts.map +1 -0
- package/src/engine/graphics3/animation/AnimationClipsSink.js +205 -0
- package/src/engine/graphics3/animation/FoliageWindRigs.d.ts +43 -0
- package/src/engine/graphics3/animation/FoliageWindRigs.d.ts.map +1 -0
- package/src/engine/graphics3/animation/FoliageWindRigs.js +69 -0
- package/src/engine/graphics3/animation/write_clip_playback.d.ts +17 -11
- package/src/engine/graphics3/animation/write_clip_playback.d.ts.map +1 -1
- package/src/engine/graphics3/animation/write_clip_playback.js +36 -27
- package/src/engine/graphics3/decal/GPUDecalRenderer.d.ts.map +1 -1
- package/src/engine/graphics3/decal/GPUDecalRenderer.js +8 -6
- package/src/engine/graphics3/decal/shader_decal_composite.d.ts.map +1 -1
- package/src/engine/graphics3/decal/shader_decal_composite.js +11 -5
- package/src/engine/graphics3/pose/collect_entity_playbacks.d.ts +7 -7
- package/src/engine/graphics3/pose/collect_entity_playbacks.d.ts.map +1 -1
- package/src/engine/graphics3/pose/collect_entity_playbacks.js +14 -15
- package/src/engine/graphics3/prefab/Prefab.d.ts +6 -0
- package/src/engine/graphics3/prefab/Prefab.d.ts.map +1 -1
- package/src/engine/graphics3/prefab/Prefab.js +169 -162
- package/src/engine/graphics3/prefab/prefab_compile.d.ts.map +1 -1
- package/src/engine/graphics3/prefab/prefab_compile.js +369 -334
- package/src/engine/graphics3/prefab/prefab_instantiate.d.ts.map +1 -1
- package/src/engine/graphics3/prefab/prefab_instantiate.js +43 -2
- package/src/engine/graphics3/terrain/chunk_terrain_material_surface.js +2 -2
- package/src/engine/physics/ecs/ContactProbeSystem.d.ts +2 -3
- package/src/engine/physics/ecs/ContactProbeSystem.d.ts.map +1 -1
- package/src/engine/physics/ecs/ContactProbeSystem.js +2 -4
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/engine/sound/simulation/PROBE_PLACEMENT.md +4 -4
- package/src/engine/sound/simulation/README.md +1 -1
- package/src/engine/sound/simulation/probe/bakeProbeField.d.ts +22 -8
- package/src/engine/sound/simulation/probe/bakeProbeField.d.ts.map +1 -1
- package/src/engine/sound/simulation/probe/bakeProbeField.js +60 -15
- package/src/engine/sound/simulation/probe/bakeProbeReflectors.d.ts.map +1 -1
- package/src/engine/sound/simulation/probe/bakeProbeReflectors.js +19 -23
- package/src/engine/sound/simulation/probe/probe_sdf_grid.d.ts +63 -17
- package/src/engine/sound/simulation/probe/probe_sdf_grid.d.ts.map +1 -1
- package/src/engine/sound/simulation/probe/probe_sdf_grid.js +67 -17
- package/src/generation/foliage/FOLIAGE_DESIGN.md +319 -0
- package/src/generation/foliage/FOLIAGE_PLAN.md +198 -0
- package/src/generation/foliage/animation/build_tree_wind_rig.d.ts +20 -0
- package/src/generation/foliage/animation/build_tree_wind_rig.d.ts.map +1 -0
- package/src/generation/foliage/animation/build_tree_wind_rig.js +108 -0
- package/src/generation/foliage/asset/TreeAsset.d.ts +86 -0
- package/src/generation/foliage/asset/TreeAsset.d.ts.map +1 -0
- package/src/generation/foliage/asset/TreeAsset.js +111 -0
- package/src/generation/foliage/asset/TreeLODAsset.d.ts +115 -0
- package/src/generation/foliage/asset/TreeLODAsset.d.ts.map +1 -0
- package/src/generation/foliage/asset/TreeLODAsset.js +346 -0
- package/src/generation/foliage/asset/generate_tree.d.ts +15 -0
- package/src/generation/foliage/asset/generate_tree.d.ts.map +1 -0
- package/src/generation/foliage/asset/generate_tree.js +93 -0
- package/src/generation/foliage/asset/place_tree.d.ts +82 -0
- package/src/generation/foliage/asset/place_tree.d.ts.map +1 -0
- package/src/generation/foliage/asset/place_tree.js +194 -0
- package/src/generation/foliage/config/BarkMaterialConfig.d.ts +121 -0
- package/src/generation/foliage/config/BarkMaterialConfig.d.ts.map +1 -0
- package/src/generation/foliage/config/BarkMaterialConfig.js +250 -0
- package/src/generation/foliage/config/BranchLevelConfig.d.ts +288 -0
- package/src/generation/foliage/config/BranchLevelConfig.d.ts.map +1 -0
- package/src/generation/foliage/config/BranchLevelConfig.js +536 -0
- package/src/generation/foliage/config/CrownConfig.d.ts +100 -0
- package/src/generation/foliage/config/CrownConfig.d.ts.map +1 -0
- package/src/generation/foliage/config/CrownConfig.js +186 -0
- package/src/generation/foliage/config/CrownEnvelopeType.d.ts +16 -0
- package/src/generation/foliage/config/CrownEnvelopeType.d.ts.map +1 -0
- package/src/generation/foliage/config/CrownEnvelopeType.js +17 -0
- package/src/generation/foliage/config/FoliageBarkType.d.ts +11 -0
- package/src/generation/foliage/config/FoliageBarkType.d.ts.map +1 -0
- package/src/generation/foliage/config/FoliageBarkType.js +16 -0
- package/src/generation/foliage/config/FoliageCardType.d.ts +12 -0
- package/src/generation/foliage/config/FoliageCardType.d.ts.map +1 -0
- package/src/generation/foliage/config/FoliageCardType.js +18 -0
- package/src/generation/foliage/config/FoliageConfig.d.ts +151 -0
- package/src/generation/foliage/config/FoliageConfig.d.ts.map +1 -0
- package/src/generation/foliage/config/FoliageConfig.js +283 -0
- package/src/generation/foliage/config/FoliageMaterialConfig.d.ts +143 -0
- package/src/generation/foliage/config/FoliageMaterialConfig.d.ts.map +1 -0
- package/src/generation/foliage/config/FoliageMaterialConfig.js +279 -0
- package/src/generation/foliage/config/PhyllotaxisMode.d.ts +13 -0
- package/src/generation/foliage/config/PhyllotaxisMode.d.ts.map +1 -0
- package/src/generation/foliage/config/PhyllotaxisMode.js +20 -0
- package/src/generation/foliage/config/TreeLODConfig.d.ts +87 -0
- package/src/generation/foliage/config/TreeLODConfig.d.ts.map +1 -0
- package/src/generation/foliage/config/TreeLODConfig.js +211 -0
- package/src/generation/foliage/config/TreePreset.d.ts +16 -0
- package/src/generation/foliage/config/TreePreset.d.ts.map +1 -0
- package/src/generation/foliage/config/TreePreset.js +17 -0
- package/src/generation/foliage/config/TreeSpeciesConfig.d.ts +109 -0
- package/src/generation/foliage/config/TreeSpeciesConfig.d.ts.map +1 -0
- package/src/generation/foliage/config/TreeSpeciesConfig.js +400 -0
- package/src/generation/foliage/config/TreeWindConfig.d.ts +84 -0
- package/src/generation/foliage/config/TreeWindConfig.d.ts.map +1 -0
- package/src/generation/foliage/config/TreeWindConfig.js +157 -0
- package/src/generation/foliage/index.d.ts +39 -0
- package/src/generation/foliage/index.d.ts.map +1 -0
- package/src/generation/foliage/index.js +44 -0
- package/src/generation/foliage/material/make_bark_material.d.ts +37 -0
- package/src/generation/foliage/material/make_bark_material.d.ts.map +1 -0
- package/src/generation/foliage/material/make_bark_material.js +730 -0
- package/src/generation/foliage/material/make_foliage_material.d.ts +40 -0
- package/src/generation/foliage/material/make_foliage_material.d.ts.map +1 -0
- package/src/generation/foliage/material/make_foliage_material.js +605 -0
- package/src/generation/foliage/mesh/branch_collar_project.d.ts +42 -0
- package/src/generation/foliage/mesh/branch_collar_project.d.ts.map +1 -0
- package/src/generation/foliage/mesh/branch_collar_project.js +205 -0
- package/src/generation/foliage/mesh/branch_ring_triangulate.d.ts +35 -0
- package/src/generation/foliage/mesh/branch_ring_triangulate.d.ts.map +1 -0
- package/src/generation/foliage/mesh/branch_ring_triangulate.js +72 -0
- package/src/generation/foliage/mesh/foliage_collect_attachments.d.ts +95 -0
- package/src/generation/foliage/mesh/foliage_collect_attachments.d.ts.map +1 -0
- package/src/generation/foliage/mesh/foliage_collect_attachments.js +569 -0
- package/src/generation/foliage/mesh/tree_mesh_apply_canopy_ao.d.ts +19 -0
- package/src/generation/foliage/mesh/tree_mesh_apply_canopy_ao.d.ts.map +1 -0
- package/src/generation/foliage/mesh/tree_mesh_apply_canopy_ao.js +150 -0
- package/src/generation/foliage/mesh/tree_mesh_build_bark.d.ts +55 -0
- package/src/generation/foliage/mesh/tree_mesh_build_bark.d.ts.map +1 -0
- package/src/generation/foliage/mesh/tree_mesh_build_bark.js +1049 -0
- package/src/generation/foliage/mesh/tree_mesh_build_foliage.d.ts +22 -0
- package/src/generation/foliage/mesh/tree_mesh_build_foliage.d.ts.map +1 -0
- package/src/generation/foliage/mesh/tree_mesh_build_foliage.js +454 -0
- package/src/generation/foliage/presets/make_tree_species_preset.d.ts +13 -0
- package/src/generation/foliage/presets/make_tree_species_preset.d.ts.map +1 -0
- package/src/generation/foliage/presets/make_tree_species_preset.js +870 -0
- package/src/generation/foliage/skeleton/TreeSkeleton.d.ts +443 -0
- package/src/generation/foliage/skeleton/TreeSkeleton.d.ts.map +1 -0
- package/src/generation/foliage/skeleton/TreeSkeleton.js +1100 -0
- package/src/generation/foliage/skeleton/crown_envelope_evaluate.d.ts +27 -0
- package/src/generation/foliage/skeleton/crown_envelope_evaluate.d.ts.map +1 -0
- package/src/generation/foliage/skeleton/crown_envelope_evaluate.js +121 -0
- package/src/generation/foliage/skeleton/spine_frame_double_reflection.d.ts +32 -0
- package/src/generation/foliage/skeleton/spine_frame_double_reflection.d.ts.map +1 -0
- package/src/generation/foliage/skeleton/spine_frame_double_reflection.js +87 -0
- package/src/generation/foliage/skeleton/tree_skeleton_assign_skin_joints.d.ts +33 -0
- package/src/generation/foliage/skeleton/tree_skeleton_assign_skin_joints.d.ts.map +1 -0
- package/src/generation/foliage/skeleton/tree_skeleton_assign_skin_joints.js +205 -0
- package/src/generation/foliage/skeleton/tree_skeleton_compute_pipe_radii.d.ts +17 -0
- package/src/generation/foliage/skeleton/tree_skeleton_compute_pipe_radii.d.ts.map +1 -0
- package/src/generation/foliage/skeleton/tree_skeleton_compute_pipe_radii.js +206 -0
- package/src/generation/foliage/skeleton/tree_skeleton_grow.d.ts +18 -0
- package/src/generation/foliage/skeleton/tree_skeleton_grow.d.ts.map +1 -0
- package/src/generation/foliage/skeleton/tree_skeleton_grow.js +1871 -0
- package/src/shade/playground/additive_blending/index.html +197 -0
- package/src/shade/playground/additive_blending/main.d.ts +2 -0
- package/src/shade/playground/additive_blending/main.d.ts.map +1 -0
- package/src/shade/playground/additive_blending/main.js +529 -0
- package/src/shade/playground/foliage_wind/README.md +18 -0
- package/src/shade/playground/foliage_wind/foliage_world.d.ts +133 -0
- package/src/shade/playground/foliage_wind/foliage_world.d.ts.map +1 -0
- package/src/shade/playground/foliage_wind/foliage_world.js +602 -0
- package/src/shade/playground/foliage_wind/index.html +260 -0
- package/src/shade/playground/foliage_wind/main.d.ts +2 -0
- package/src/shade/playground/foliage_wind/main.d.ts.map +1 -0
- package/src/shade/playground/foliage_wind/main.js +275 -0
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +45 -16
- package/src/shade/renderer/animation/ADDITIVE_BLENDING_PLAN.md +145 -0
- package/src/shade/renderer/animation/ANIMATION_DATABASE_SPEC.d.ts +9 -1
- package/src/shade/renderer/animation/ANIMATION_DATABASE_SPEC.d.ts.map +1 -1
- package/src/shade/renderer/animation/ANIMATION_DATABASE_SPEC.js +53 -1
- package/src/shade/renderer/animation/ANIMATION_FOLIAGE_JOINT_STRUCT.d.ts +8 -0
- package/src/shade/renderer/animation/ANIMATION_FOLIAGE_JOINT_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/animation/ANIMATION_FOLIAGE_JOINT_STRUCT.js +71 -0
- package/src/shade/renderer/animation/ANIMATION_FOLIAGE_RIG_STRUCT.d.ts +11 -0
- package/src/shade/renderer/animation/ANIMATION_FOLIAGE_RIG_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/animation/ANIMATION_FOLIAGE_RIG_STRUCT.js +32 -0
- package/src/shade/renderer/animation/GPUAnimationManager.d.ts +30 -3
- package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
- package/src/shade/renderer/animation/GPUAnimationManager.js +532 -79
- package/src/shade/renderer/animation/POSE_ACCUMULATOR_LAYOUT.d.ts +19 -12
- package/src/shade/renderer/animation/POSE_ACCUMULATOR_LAYOUT.d.ts.map +1 -1
- package/src/shade/renderer/animation/POSE_ACCUMULATOR_LAYOUT.js +20 -13
- package/src/shade/renderer/animation/ShadeAnimationClip.d.ts +35 -8
- package/src/shade/renderer/animation/ShadeAnimationClip.d.ts.map +1 -1
- package/src/shade/renderer/animation/ShadeAnimationClip.js +433 -2
- package/src/shade/renderer/animation/chunk_pose_accumulator.d.ts.map +1 -1
- package/src/shade/renderer/animation/chunk_pose_accumulator.js +40 -32
- package/src/shade/renderer/animation/foliage/FoliageWindJoint.d.ts +97 -0
- package/src/shade/renderer/animation/foliage/FoliageWindJoint.d.ts.map +1 -0
- package/src/shade/renderer/animation/foliage/FoliageWindJoint.js +161 -0
- package/src/shade/renderer/animation/foliage/FoliageWindRig.d.ts +65 -0
- package/src/shade/renderer/animation/foliage/FoliageWindRig.d.ts.map +1 -0
- package/src/shade/renderer/animation/foliage/FoliageWindRig.js +89 -0
- package/src/shade/renderer/animation/foliage/chunk_foliage_wind_step.d.ts +19 -0
- package/src/shade/renderer/animation/foliage/chunk_foliage_wind_step.d.ts.map +1 -0
- package/src/shade/renderer/animation/foliage/chunk_foliage_wind_step.js +143 -0
- package/src/shade/renderer/animation/foliage/shader_foliage_wind_apply.d.ts +14 -0
- package/src/shade/renderer/animation/foliage/shader_foliage_wind_apply.d.ts.map +1 -0
- package/src/shade/renderer/animation/foliage/shader_foliage_wind_apply.js +116 -0
- package/src/shade/renderer/animation/pose/pose_evaluate_local.d.ts.map +1 -1
- package/src/shade/renderer/animation/pose/pose_evaluate_local.js +39 -29
- package/src/shade/renderer/animation/shader_animation_pose_resolve.js +37 -37
- package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js +2 -2
- package/src/shade/renderer/extension/RenderExtension.d.ts +7 -0
- package/src/shade/renderer/extension/RenderExtension.d.ts.map +1 -1
- package/src/shade/renderer/extension/RenderExtension.js +9 -0
- package/src/shade/renderer/extension/RenderExtensionRegistry.d.ts +6 -0
- package/src/shade/renderer/extension/RenderExtensionRegistry.d.ts.map +1 -1
- package/src/shade/renderer/extension/RenderExtensionRegistry.js +15 -0
- package/src/shade/renderer/fluid/GPUFluidCascade.d.ts +10 -3
- package/src/shade/renderer/fluid/GPUFluidCascade.d.ts.map +1 -1
- package/src/shade/renderer/fluid/GPUFluidCascade.js +15 -0
- package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts +8 -1
- package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts.map +1 -1
- package/src/shade/renderer/fluid/GPUFluidCascadeStack.js +11 -0
- package/src/shade/renderer/fluid/coupling/chunk_fluid_cascade_parent.d.ts.map +1 -1
- package/src/shade/renderer/fluid/coupling/chunk_fluid_cascade_parent.js +51 -48
- package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts +6 -6
- package/src/shade/renderer/fluid/mac/FluidMacPasses.d.ts +6 -0
- package/src/shade/renderer/fluid/mac/FluidMacPasses.d.ts.map +1 -1
- package/src/shade/renderer/fluid/mac/FluidMacPasses.js +16 -0
- package/src/shade/renderer/fluid/mac/chunk_fluid_mac_seams.d.ts.map +1 -1
- package/src/shade/renderer/fluid/mac/chunk_fluid_mac_seams.js +15 -3
- package/src/shade/renderer/fluid/mac/chunk_v3_mac_lattice_corners.d.ts.map +1 -1
- package/src/shade/renderer/fluid/mac/chunk_v3_mac_lattice_corners.js +102 -96
- package/src/shade/renderer/fluid/mac/shader_fluid_mac_advect_correct.js +12 -12
- package/src/shade/renderer/fluid/mac/shader_fluid_mac_advect_predict.js +12 -12
- package/src/shade/renderer/fluid/pressure/GPUFluidPressureSolve.d.ts +8 -1
- package/src/shade/renderer/fluid/pressure/GPUFluidPressureSolve.d.ts.map +1 -1
- package/src/shade/renderer/fluid/pressure/GPUFluidPressureSolve.js +16 -0
- package/src/shade/renderer/fluid/publish/FluidWindPublish.d.ts +7 -0
- package/src/shade/renderer/fluid/publish/FluidWindPublish.d.ts.map +1 -1
- package/src/shade/renderer/fluid/publish/FluidWindPublish.js +10 -0
- package/src/shade/renderer/fluid/query/GPUFluidQueries.d.ts +1 -1
- package/src/shade/renderer/geometry/bvh/GPUBLASRefitBatch.js +2 -2
- package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.js +1 -1
- package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts +3 -3
- package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts.map +1 -1
- package/src/shade/renderer/hiz/HierarchicalZBuffer.js +350 -294
- package/src/shade/renderer/hiz/generate_downsampler_code.d.ts +0 -2
- package/src/shade/renderer/hiz/generate_downsampler_code.d.ts.map +1 -1
- package/src/shade/renderer/hiz/generate_downsampler_code.js +99 -100
- package/src/shade/renderer/hiz/hzb_pick_alignment.d.ts +15 -0
- package/src/shade/renderer/hiz/hzb_pick_alignment.d.ts.map +1 -0
- package/src/shade/renderer/hiz/hzb_pick_alignment.js +148 -0
- package/src/shade/renderer/hiz/hzb_plan_reduction_steps.d.ts +28 -0
- package/src/shade/renderer/hiz/hzb_plan_reduction_steps.d.ts.map +1 -0
- package/src/shade/renderer/hiz/hzb_plan_reduction_steps.js +58 -0
- package/src/shade/renderer/hiz/shader_hzb_reduce_any.d.ts +5 -5
- package/src/shade/renderer/hiz/shader_hzb_reduce_any.d.ts.map +1 -1
- package/src/shade/renderer/hiz/shader_hzb_reduce_any.js +57 -67
- package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.d.ts +3 -3
- package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.d.ts.map +1 -1
- package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.js +111 -112
- package/src/shade/renderer/hiz/shader_hzb_spd.d.ts +5 -0
- package/src/shade/renderer/hiz/shader_hzb_spd.d.ts.map +1 -0
- package/src/shade/renderer/hiz/shader_hzb_spd.js +160 -0
- package/src/shade/renderer/light/GPULightCollection.d.ts +8 -0
- package/src/shade/renderer/light/GPULightCollection.d.ts.map +1 -1
- package/src/shade/renderer/light/GPULightCollection.js +67 -0
- package/src/shade/renderer/light/environment/FAR_FIELD_IRRADIANCE_SH_RESOURCE.d.ts +7 -0
- package/src/shade/renderer/light/environment/FAR_FIELD_IRRADIANCE_SH_RESOURCE.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/FAR_FIELD_IRRADIANCE_SH_RESOURCE.js +13 -0
- package/src/shade/renderer/light/environment/shader_project_far_field_irradiance_sh.d.ts +10 -0
- package/src/shade/renderer/light/environment/shader_project_far_field_irradiance_sh.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/shader_project_far_field_irradiance_sh.js +72 -0
- package/src/shade/renderer/light/world_cluster/WORLD_LIGHT_CLUSTER.d.ts +39 -0
- package/src/shade/renderer/light/world_cluster/WORLD_LIGHT_CLUSTER.d.ts.map +1 -0
- package/src/shade/renderer/light/world_cluster/WORLD_LIGHT_CLUSTER.js +90 -0
- package/src/shade/renderer/light/world_cluster/chunk_world_light_cluster_lookup.d.ts +12 -0
- package/src/shade/renderer/light/world_cluster/chunk_world_light_cluster_lookup.d.ts.map +1 -0
- package/src/shade/renderer/light/world_cluster/chunk_world_light_cluster_lookup.js +56 -0
- package/src/shade/renderer/light/world_cluster/graph_build_world_light_clusters.d.ts +31 -0
- package/src/shade/renderer/light/world_cluster/graph_build_world_light_clusters.d.ts.map +1 -0
- package/src/shade/renderer/light/world_cluster/graph_build_world_light_clusters.js +196 -0
- package/src/shade/renderer/light/world_cluster/shader_world_cluster_assign_lights.d.ts +10 -0
- package/src/shade/renderer/light/world_cluster/shader_world_cluster_assign_lights.d.ts.map +1 -0
- package/src/shade/renderer/light/world_cluster/shader_world_cluster_assign_lights.js +163 -0
- package/src/shade/renderer/light/world_cluster/shader_world_cluster_cull_lights.d.ts +4 -0
- package/src/shade/renderer/light/world_cluster/shader_world_cluster_cull_lights.d.ts.map +1 -0
- package/src/shade/renderer/light/world_cluster/shader_world_cluster_cull_lights.js +137 -0
- package/src/shade/renderer/loader/SceneBundle.d.ts +7 -0
- package/src/shade/renderer/loader/SceneBundle.d.ts.map +1 -1
- package/src/shade/renderer/loader/SceneBundle.js +119 -111
- package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
- package/src/shade/renderer/material/standard/fragment_gbuffer.d.ts +4 -0
- package/src/shade/renderer/material/standard/fragment_gbuffer.d.ts.map +1 -1
- package/src/shade/renderer/material/standard/fragment_gbuffer.js +6 -5
- package/src/shade/renderer/object_property/chunk_write_object_property_node3d.d.ts +8 -7
- package/src/shade/renderer/object_property/chunk_write_object_property_node3d.d.ts.map +1 -1
- package/src/shade/renderer/object_property/chunk_write_object_property_node3d.js +9 -8
- package/src/shade/renderer/particles/GPUParticleSystem.d.ts.map +1 -1
- package/src/shade/renderer/particles/GPUParticleSystem.js +4 -1
- package/src/shade/renderer/particles/graph_particles_avboit.d.ts +4 -3
- package/src/shade/renderer/particles/graph_particles_avboit.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph_particles_avboit.js +28 -11
- package/src/shade/renderer/particles/shaders/chunk_particle_lighting.d.ts +9 -13
- package/src/shade/renderer/particles/shaders/chunk_particle_lighting.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/chunk_particle_lighting.js +25 -20
- package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.js +22 -34
- package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
- package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader.js +9 -7
- package/src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment.js +15 -7
- package/src/shade/renderer/rasterize/native/avboit/avboit_draw_fragment_body.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/avboit_draw_fragment_body.js +6 -4
- package/src/shade/renderer/rasterize/native/oit/oit_resolve_fragment_body.js +3 -3
- package/src/shade/renderer/rasterize/native/oit/shader_oit_generate_moments.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/oit/shader_oit_generate_moments.js +8 -5
- package/src/shade/renderer/rasterize/native/viz/viz_rasterization_alpha_tested_pass_descriptor.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/viz/viz_rasterization_alpha_tested_pass_descriptor.js +4 -3
- package/src/shade/renderer/shader/chunk/depth/chunk_query_depth_from_screen_space_bb.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/depth/chunk_query_depth_from_screen_space_bb.js +62 -62
- package/src/shade/renderer/shader/chunk/random/lowbias/chunk_hash_lowbias32_vec2u.d.ts +6 -0
- package/src/shade/renderer/shader/chunk/random/lowbias/chunk_hash_lowbias32_vec2u.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/random/lowbias/chunk_hash_lowbias32_vec2u.js +19 -0
- package/src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_get_mip_resolution.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_get_mip_resolution.js +16 -10
- package/src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_hierarchical_raymarch.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_hierarchical_raymarch.js +118 -117
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.js +1 -1
- package/src/shade/renderer/texture/SAMPLER_ANISOTROPIC_CLAMP.d.ts +9 -0
- package/src/shade/renderer/texture/SAMPLER_ANISOTROPIC_CLAMP.d.ts.map +1 -0
- package/src/shade/renderer/texture/SAMPLER_ANISOTROPIC_CLAMP.js +17 -0
- package/src/shade/renderer/texture/SAMPLER_LINEAR_UPSCALE.d.ts +8 -0
- package/src/shade/renderer/texture/SAMPLER_LINEAR_UPSCALE.d.ts.map +1 -1
- package/src/shade/renderer/texture/SAMPLER_LINEAR_UPSCALE.js +28 -20
- package/src/shade/renderer/texture/SAMPLER_TRILINEAR_CLAMP.d.ts +8 -0
- package/src/shade/renderer/texture/SAMPLER_TRILINEAR_CLAMP.d.ts.map +1 -0
- package/src/shade/renderer/texture/SAMPLER_TRILINEAR_CLAMP.js +15 -0
- package/src/shade/renderer/texture/atlas/GPUTileAtlas3D.d.ts +41 -7
- package/src/shade/renderer/texture/atlas/GPUTileAtlas3D.d.ts.map +1 -1
- package/src/shade/renderer/texture/atlas/GPUTileAtlas3D.js +162 -58
- package/src/shade/renderer/view/chunk_view_mip_bias.d.ts +21 -0
- package/src/shade/renderer/view/chunk_view_mip_bias.d.ts.map +1 -0
- package/src/shade/renderer/view/chunk_view_mip_bias.js +44 -0
- package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.js +1 -1
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts +10 -12
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.js +583 -606
- package/src/shade/renderer/volumetrics/chunk_volumetrics_froxel_sample.d.ts +24 -0
- package/src/shade/renderer/volumetrics/chunk_volumetrics_froxel_sample.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi_sample.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts +1 -1
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +640 -640
- package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.d.ts +113 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.js +484 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP.d.ts +50 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP.js +60 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP_STRUCT.d.ts +25 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP_STRUCT.js +47 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IrradianceCascadePlacement.d.ts +74 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IrradianceCascadePlacement.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IrradianceCascadePlacement.js +173 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.d.ts +26 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.js +83 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_local_light.d.ts +31 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_local_light.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_local_light.js +113 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_sample.d.ts +121 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_sample.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_sample.js +356 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/shader_irradiance_clipmap_build.d.ts +16 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/shader_irradiance_clipmap_build.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/shader_irradiance_clipmap_build.js +191 -0
- package/src/shade/renderer/volumetrics/shader_volumetrics_classify_froxels.d.ts +16 -0
- package/src/shade/renderer/volumetrics/shader_volumetrics_classify_froxels.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/shader_volumetrics_lighting_regimes.d.ts +23 -0
- package/src/shade/renderer/volumetrics/shader_volumetrics_lighting_regimes.d.ts.map +1 -0
- package/src/shade/renderer/wind/GPUSceneWind.d.ts +1 -1
- package/src/shade/renderer/wind/GPUSceneWind.js +1 -1
- package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +1 -1
- package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
- package/src/shade/wgsl/emulator/WGSLLanguageCore.js +105 -26
- package/src/engine/graphics/composit/CompositingStages.d.ts +0 -6
- package/src/engine/graphics/composit/CompositingStages.d.ts.map +0 -1
- package/src/engine/graphics/composit/CompositingStages.js +0 -8
- package/src/engine/graphics/geometry/buffered/computeBufferAttributeHash.d.ts +0 -7
- package/src/engine/graphics/geometry/buffered/computeBufferAttributeHash.d.ts.map +0 -1
- package/src/engine/graphics/geometry/buffered/computeBufferAttributeHash.js +0 -24
- package/src/engine/graphics/geometry/buffered/computeGeometryBoundingSphereMiniball.d.ts +0 -8
- package/src/engine/graphics/geometry/buffered/computeGeometryBoundingSphereMiniball.d.ts.map +0 -1
- package/src/engine/graphics/geometry/buffered/computeGeometryBoundingSphereMiniball.js +0 -17
- package/src/engine/graphics/geometry/buffered/computeGeometryEquality.d.ts +0 -8
- package/src/engine/graphics/geometry/buffered/computeGeometryEquality.d.ts.map +0 -1
- package/src/engine/graphics/geometry/buffered/computeGeometryEquality.js +0 -60
- package/src/engine/graphics/geometry/buffered/computeGeometryHash.d.ts +0 -7
- package/src/engine/graphics/geometry/buffered/computeGeometryHash.d.ts.map +0 -1
- package/src/engine/graphics/geometry/buffered/computeGeometryHash.js +0 -26
- package/src/engine/graphics/geometry/buffered/compute_buffer_geometry_byte_size.d.ts +0 -7
- package/src/engine/graphics/geometry/buffered/compute_buffer_geometry_byte_size.d.ts.map +0 -1
- package/src/engine/graphics/geometry/buffered/compute_buffer_geometry_byte_size.js +0 -23
- package/src/engine/graphics/geometry/instancing/geometry_copy.d.ts +0 -7
- package/src/engine/graphics/geometry/instancing/geometry_copy.d.ts.map +0 -1
- package/src/engine/graphics/geometry/instancing/geometry_copy.js +0 -15
- package/src/engine/graphics/geometry/instancing/rewriteMaterial.d.ts +0 -2
- package/src/engine/graphics/geometry/instancing/rewriteMaterial.d.ts.map +0 -1
- package/src/engine/graphics/geometry/instancing/rewriteMaterial.js +0 -57
- package/src/engine/graphics/geometry/ribbon/Quad.d.ts +0 -96
- package/src/engine/graphics/geometry/ribbon/Quad.d.ts.map +0 -1
- package/src/engine/graphics/geometry/ribbon/Quad.js +0 -213
- package/src/engine/graphics/geometry/ribbon/copyAttributeV3.d.ts +0 -9
- package/src/engine/graphics/geometry/ribbon/copyAttributeV3.d.ts.map +0 -1
- package/src/engine/graphics/geometry/ribbon/copyAttributeV3.js +0 -12
- package/src/engine/graphics/geometry/ribbon/copyAttributeValue.d.ts +0 -10
- package/src/engine/graphics/geometry/ribbon/copyAttributeValue.d.ts.map +0 -1
- package/src/engine/graphics/geometry/ribbon/copyAttributeValue.js +0 -17
- package/src/engine/graphics/geometry/ribbon/equalAttributeV3.d.ts +0 -10
- package/src/engine/graphics/geometry/ribbon/equalAttributeV3.d.ts.map +0 -1
- package/src/engine/graphics/geometry/ribbon/equalAttributeV3.js +0 -13
- package/src/engine/graphics/geometry/ribbon/equalAttributeValue.d.ts +0 -11
- package/src/engine/graphics/geometry/ribbon/equalAttributeValue.d.ts.map +0 -1
- package/src/engine/graphics/geometry/ribbon/equalAttributeValue.js +0 -24
- package/src/engine/graphics/geometry/ribbon/rotateRibbon.d.ts +0 -6
- package/src/engine/graphics/geometry/ribbon/rotateRibbon.d.ts.map +0 -1
- package/src/engine/graphics/geometry/ribbon/rotateRibbon.js +0 -37
- package/src/engine/graphics/geometry/ribbon/updateTipPosition.d.ts +0 -9
- package/src/engine/graphics/geometry/ribbon/updateTipPosition.d.ts.map +0 -1
- package/src/engine/graphics/geometry/ribbon/updateTipPosition.js +0 -52
- package/src/engine/graphics/geometry/skining/computeSkinnedMeshVertices.d.ts +0 -8
- package/src/engine/graphics/geometry/skining/computeSkinnedMeshVertices.d.ts.map +0 -1
- package/src/engine/graphics/geometry/skining/computeSkinnedMeshVertices.js +0 -54
- package/src/engine/graphics/render/RenderPassType.d.ts +0 -6
- package/src/engine/graphics/render/RenderPassType.d.ts.map +0 -1
- package/src/engine/graphics/render/RenderPassType.js +0 -8
- package/src/engine/graphics/render/layers/RenderLayer.d.ts +0 -78
- package/src/engine/graphics/render/layers/RenderLayer.d.ts.map +0 -1
- package/src/engine/graphics/render/layers/RenderLayer.js +0 -95
- package/src/engine/graphics/render/layers/RenderLayerManager.d.ts +0 -72
- package/src/engine/graphics/render/layers/RenderLayerManager.d.ts.map +0 -1
- package/src/engine/graphics/render/layers/RenderLayerManager.js +0 -160
- package/src/engine/graphics/render/layers/RenderLayerManagerState.d.ts +0 -18
- package/src/engine/graphics/render/layers/RenderLayerManagerState.d.ts.map +0 -1
- package/src/engine/graphics/render/layers/RenderLayerManagerState.js +0 -48
- package/src/engine/graphics/render/layers/RenderLayerState.d.ts +0 -18
- package/src/engine/graphics/render/layers/RenderLayerState.d.ts.map +0 -1
- package/src/engine/graphics/render/layers/RenderLayerState.js +0 -27
- package/src/engine/graphics/render/layers/RenderLayerUtils.d.ts +0 -8
- package/src/engine/graphics/render/layers/RenderLayerUtils.d.ts.map +0 -1
- package/src/engine/graphics/render/layers/RenderLayerUtils.js +0 -103
- package/src/engine/graphics/render/make_bvh_visibility_builder.d.ts +0 -10
- package/src/engine/graphics/render/make_bvh_visibility_builder.d.ts.map +0 -1
- package/src/engine/graphics/render/make_bvh_visibility_builder.js +0 -64
- package/src/engine/graphics/render/view/CameraViewFlags.d.ts +0 -7
- package/src/engine/graphics/render/view/CameraViewFlags.d.ts.map +0 -1
- package/src/engine/graphics/render/view/CameraViewFlags.js +0 -9
- package/src/engine/graphics/render/visibility/IncrementalDeltaSet.d.ts +0 -143
- package/src/engine/graphics/render/visibility/IncrementalDeltaSet.d.ts.map +0 -1
- package/src/engine/graphics/render/visibility/IncrementalDeltaSet.js +0 -328
- package/src/engine/graphics/render/visibility/VisibilityComputer.d.ts +0 -39
- package/src/engine/graphics/render/visibility/VisibilityComputer.d.ts.map +0 -1
- package/src/engine/graphics/render/visibility/VisibilityComputer.js +0 -80
- package/src/engine/graphics/render/visibility/VisibilityFilter.d.ts +0 -29
- package/src/engine/graphics/render/visibility/VisibilityFilter.d.ts.map +0 -1
- package/src/engine/graphics/render/visibility/VisibilityFilter.js +0 -37
- package/src/engine/graphics3/animation/write_graph_playback.d.ts +0 -24
- package/src/engine/graphics3/animation/write_graph_playback.d.ts.map +0 -1
- package/src/engine/graphics3/animation/write_graph_playback.js +0 -48
- package/src/engine/graphics3/decal/DecalAtlasFill.js +0 -32
- package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_froxel_centre_ws.js +0 -49
- package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi.js +0 -50
- package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi_sample.js +0 -105
- package/src/shade/renderer/volumetrics/gi/graph_build_froxel_gi.js +0 -80
- package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi.js +0 -51
- package/src/shade/renderer/volumetrics/gi/volumetrics_gi_resources.js +0 -39
- package/src/shade/renderer/volumetrics/graph_build_froxel_irradiance.js +0 -121
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_irradiance.js +0 -237
|
@@ -1,20 +1,28 @@
|
|
|
1
|
-
import { SamplerDescriptor } from "../../descriptor/texture/SamplerDescriptor.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
1
|
+
import { SamplerDescriptor } from "../../descriptor/texture/SamplerDescriptor.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Magnification-only linear clamp sampler (`magFilter: "linear"`, `minFilter: "nearest"`,
|
|
5
|
+
* `mipmapFilter: "nearest"`, `maxAnisotropy: 1`).
|
|
6
|
+
*
|
|
7
|
+
* Intended ONLY for upscaling single-mip 2D render targets (e.g. post-processing upsampling).
|
|
8
|
+
* Do NOT use for 3D scene textures, atlases, or mipmapped targets that undergo minification —
|
|
9
|
+
* use `SAMPLER_TRILINEAR_CLAMP` or `SAMPLER_ANISOTROPIC_CLAMP` instead.
|
|
10
|
+
*/
|
|
11
|
+
export const SAMPLER_LINEAR_UPSCALE = Object.freeze(SamplerDescriptor.from({
|
|
12
|
+
magFilter: "linear",
|
|
13
|
+
addressModeU: "clamp-to-edge",
|
|
14
|
+
addressModeV: "clamp-to-edge",
|
|
15
|
+
addressModeW: "clamp-to-edge",
|
|
16
|
+
}));
|
|
17
|
+
|
|
18
|
+
export const SAMPLER_LINEAR_DOWNSCALE = Object.freeze(SamplerDescriptor.from({
|
|
19
|
+
minFilter: "linear",
|
|
20
|
+
addressModeU: "clamp-to-edge",
|
|
21
|
+
addressModeV: "clamp-to-edge"
|
|
22
|
+
}))
|
|
23
|
+
|
|
24
|
+
export const SAMPLER_NEAREST = Object.freeze(SamplerDescriptor.from({
|
|
25
|
+
magFilter: "nearest",
|
|
26
|
+
addressModeU: "clamp-to-edge",
|
|
27
|
+
addressModeV: "clamp-to-edge"
|
|
28
|
+
}));
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Trilinear clamp-to-edge sampler (`magFilter: "linear"`, `minFilter: "linear"`, `mipmapFilter: "linear"`).
|
|
3
|
+
* Use for mipmapped 2D render targets and LUTs where linear filtering is required across both
|
|
4
|
+
* magnification/minification and mip levels without anisotropic footprint expansion.
|
|
5
|
+
*/
|
|
6
|
+
export const SAMPLER_TRILINEAR_CLAMP: Readonly<SamplerDescriptor>;
|
|
7
|
+
import { SamplerDescriptor } from "../../descriptor/texture/SamplerDescriptor.js";
|
|
8
|
+
//# sourceMappingURL=SAMPLER_TRILINEAR_CLAMP.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SAMPLER_TRILINEAR_CLAMP.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/texture/SAMPLER_TRILINEAR_CLAMP.js"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,kEAOI;kCAd8B,+CAA+C"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { SamplerDescriptor } from "../../descriptor/texture/SamplerDescriptor.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Trilinear clamp-to-edge sampler (`magFilter: "linear"`, `minFilter: "linear"`, `mipmapFilter: "linear"`).
|
|
5
|
+
* Use for mipmapped 2D render targets and LUTs where linear filtering is required across both
|
|
6
|
+
* magnification/minification and mip levels without anisotropic footprint expansion.
|
|
7
|
+
*/
|
|
8
|
+
export const SAMPLER_TRILINEAR_CLAMP = Object.freeze(SamplerDescriptor.from({
|
|
9
|
+
addressModeU: "clamp-to-edge",
|
|
10
|
+
addressModeV: "clamp-to-edge",
|
|
11
|
+
addressModeW: "clamp-to-edge",
|
|
12
|
+
magFilter: "linear",
|
|
13
|
+
minFilter: "linear",
|
|
14
|
+
mipmapFilter: "linear",
|
|
15
|
+
}));
|
|
@@ -92,12 +92,15 @@ export function tile_atlas_bordered_block(content: Uint8Array, content_size: Arr
|
|
|
92
92
|
*/
|
|
93
93
|
export class GPUTileAtlas3D {
|
|
94
94
|
/**
|
|
95
|
-
* Every argument is required: an atlas is declared, not configured.
|
|
95
|
+
* Every argument is required: an atlas is declared, not configured. Either `format` (one texture)
|
|
96
|
+
* or `formats` (one or more synchronized textures sharing the same slot grid) must be given.
|
|
96
97
|
*
|
|
97
98
|
* @param {object} options
|
|
98
99
|
* @param {GPUDevice} options.device
|
|
99
|
-
* @param {GPUTextureFormat} options.format an uncompressed, copyable format — what a 3-D texture
|
|
100
|
-
* allows, and what {@link write} sizes its block by
|
|
100
|
+
* @param {GPUTextureFormat} [options.format] an uncompressed, copyable format — what a 3-D texture
|
|
101
|
+
* allows, and what {@link write} sizes its block by (mutually exclusive with `formats`)
|
|
102
|
+
* @param {GPUTextureFormat[]} [options.formats] one or more uncompressed, copyable formats for a
|
|
103
|
+
* multi-texture atlas (mutually exclusive with `format`)
|
|
101
104
|
* @param {number[]} options.content_size texels of content along x, y and z of a tile, three
|
|
102
105
|
* positive integers; a cubic tile is `[n, n, n]`. Copied: the array stays the caller's
|
|
103
106
|
* @param {number} options.border texels of skirt on each side of the content, at least 1 for a
|
|
@@ -114,9 +117,10 @@ export class GPUTileAtlas3D {
|
|
|
114
117
|
* are copies
|
|
115
118
|
* @param {string} options.label the texture's label
|
|
116
119
|
*/
|
|
117
|
-
constructor({ device,
|
|
120
|
+
constructor({ device, formats, content_size, border, slots_x, slots_y, capacity, usage, label }: {
|
|
118
121
|
device: GPUDevice;
|
|
119
|
-
format
|
|
122
|
+
format?: GPUTextureFormat;
|
|
123
|
+
formats?: GPUTextureFormat[];
|
|
120
124
|
content_size: number[];
|
|
121
125
|
border: number;
|
|
122
126
|
slots_x: number;
|
|
@@ -129,14 +133,42 @@ export class GPUTileAtlas3D {
|
|
|
129
133
|
* @returns {GPUTextureContext}
|
|
130
134
|
*/
|
|
131
135
|
get texture(): GPUTextureContext;
|
|
136
|
+
/**
|
|
137
|
+
* All synchronized textures of the atlas.
|
|
138
|
+
* @returns {readonly GPUTextureContext[]}
|
|
139
|
+
*/
|
|
140
|
+
get textures(): readonly GPUTextureContext[];
|
|
141
|
+
/**
|
|
142
|
+
* @returns {number}
|
|
143
|
+
*/
|
|
144
|
+
get texture_count(): number;
|
|
145
|
+
/**
|
|
146
|
+
* @param {number} index
|
|
147
|
+
* @returns {GPUTextureContext}
|
|
148
|
+
*/
|
|
149
|
+
texture_at(index: number): GPUTextureContext;
|
|
132
150
|
/**
|
|
133
151
|
* @returns {GPUTextureFormat}
|
|
134
152
|
*/
|
|
135
153
|
get format(): GPUTextureFormat;
|
|
154
|
+
/**
|
|
155
|
+
* @returns {readonly GPUTextureFormat[]}
|
|
156
|
+
*/
|
|
157
|
+
get formats(): readonly GPUTextureFormat[];
|
|
158
|
+
/**
|
|
159
|
+
* @param {number} index
|
|
160
|
+
* @returns {GPUTextureFormat}
|
|
161
|
+
*/
|
|
162
|
+
format_at(index: number): GPUTextureFormat;
|
|
136
163
|
/**
|
|
137
164
|
* @returns {number}
|
|
138
165
|
*/
|
|
139
166
|
get bytes_per_texel(): number;
|
|
167
|
+
/**
|
|
168
|
+
* @param {number} index
|
|
169
|
+
* @returns {number}
|
|
170
|
+
*/
|
|
171
|
+
bytes_per_texel_at(index: number): number;
|
|
140
172
|
/**
|
|
141
173
|
* Texels of content along x, y and z of a tile. Frozen: the atlas's own, not a copy.
|
|
142
174
|
* @returns {readonly number[]}
|
|
@@ -216,8 +248,9 @@ export class GPUTileAtlas3D {
|
|
|
216
248
|
* @param {number} slot a live slot
|
|
217
249
|
* @param {Uint8Array} content `content_size[0] · content_size[1] · content_size[2] ·
|
|
218
250
|
* bytes_per_texel` bytes, x fastest, then y, then z
|
|
251
|
+
* @param {number} [texture_index=0] which texture of the atlas to write into
|
|
219
252
|
*/
|
|
220
|
-
write(slot: number, content: Uint8Array): void;
|
|
253
|
+
write(slot: number, content: Uint8Array, texture_index?: number): void;
|
|
221
254
|
/**
|
|
222
255
|
* Put a whole tile, skirt included, into a slot from a buffer on the device — the way a compute
|
|
223
256
|
* bake lands: it writes the `tile_size` block into a storage buffer, rows padded to the copy
|
|
@@ -229,8 +262,9 @@ export class GPUTileAtlas3D {
|
|
|
229
262
|
* @param {number} byte_offset where the block starts in the buffer
|
|
230
263
|
* @param {number} bytes_per_row stride of a row of `tile_size[0]` texels, a multiple of
|
|
231
264
|
* `COPY_BYTES_PER_ROW_ALIGNMENT`; rows per image is `tile_size[1]`
|
|
265
|
+
* @param {number} [texture_index=0] which texture of the atlas to copy into
|
|
232
266
|
*/
|
|
233
|
-
copy_from_buffer(encoder: GPUCommandEncoder, slot: number, buffer: GPUBuffer, byte_offset: number, bytes_per_row: number): void;
|
|
267
|
+
copy_from_buffer(encoder: GPUCommandEncoder, slot: number, buffer: GPUBuffer, byte_offset: number, bytes_per_row: number, texture_index?: number): void;
|
|
234
268
|
destroy(): void;
|
|
235
269
|
#private;
|
|
236
270
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GPUTileAtlas3D.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/texture/atlas/GPUTileAtlas3D.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GPUTileAtlas3D.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/texture/atlas/GPUTileAtlas3D.js"],"names":[],"mappings":"AAssBA;;;;;;;;GAQG;AACH,2CANW,MAAM,WACN,MAAM,WACN,MAAM,OACN,MAAM,EAAE,GAAC,WAAW,GAClB,MAAM,EAAE,GAAC,WAAW,CAchC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,sDARW,MAAM,WACN,MAAM,eACN,MAAM,eACN,MAAM,iBACN,MAAM,OACN,MAAM,EAAE,GACN,OAAO,CAoCnB;AAED;;;;;;;;;;;;;;;GAeG;AACH,mDATW,UAAU,gBAEV,UAAU,MAAM,CAAC,UACjB,MAAM,mBACN,MAAM,OACN,UAAU,GAER,UAAU,CAkDtB;AA90BD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH;IA4FI;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH;QArB8B,MAAM;QACE,MAAM;QAEJ,OAAO,GAApC,kBAAkB;QAEA,YAAY,EAA9B,MAAM,EAAE;QAEQ,MAAM,EAAtB,MAAM;QAEU,OAAO,EAAvB,MAAM;QAEU,OAAO,EAAvB,MAAM;QAEU,QAAQ,EAAxB,MAAM;QAEwB,KAAK;QAInB,KAAK,EAArB,MAAM;OAiGhB;IAED;;OAEG;IACH,iCAEC;IAED;;;OAGG;IACH,6CAEC;IAED;;OAEG;IACH,4BAEC;IAED;;;OAGG;IACH,kBAHW,MAAM,GACJ,iBAAiB,CAO7B;IAED;;OAEG;IACH,+BAEC;IAED;;OAEG;IACH,2CAEC;IAED;;;OAGG;IACH,iBAHW,MAAM,oBAQhB;IAED;;OAEG;IACH,8BAEC;IAED;;;OAGG;IACH,0BAHW,MAAM,GACJ,MAAM,CAOlB;IAED;;;OAGG;IACH,sCAEC;IAED;;OAEG;IACH,qBAEC;IAED;;;;OAIG;IACH,mCAEC;IAED;;;OAGG;IACH,sBAEC;IAED;;;OAGG;IACH,sBAEC;IAED;;;OAGG;IACH,sBAEC;IAED;;;OAGG;IACH,uBAEC;IAED;;;;;OAKG;IACH,6BAEC;IAED;;OAEG;IACH,yBAEC;IAED;;;OAGG;IACH,cAHW,MAAM,GACJ,OAAO,CAMnB;IAED;;;;;OAKG;IACH,YAFa,MAAM,CAkBlB;IAED;;OAEG;IACH,WAFW,MAAM,QAOhB;IAED;;;;;;;;OAQG;IACH,kBAJW,MAAM,OACN,MAAM,EAAE,GAAC,WAAW,GAClB,MAAM,EAAE,GAAC,WAAW,CAehC;IAED;;;;;;;;OAQG;IACH,YALW,MAAM,WACN,UAAU,kBAEV,MAAM,QAkChB;IAED;;;;;;;;;;;;OAYG;IACH,mDAPW,MAAM,kCAEN,MAAM,iBACN,MAAM,kBAEN,MAAM,QAgChB;IAED,gBAIC;;CAqIJ;kCAlsBiC,yBAAyB"}
|
|
@@ -56,19 +56,19 @@ export class GPUTileAtlas3D {
|
|
|
56
56
|
#device;
|
|
57
57
|
|
|
58
58
|
/**
|
|
59
|
-
* @type {GPUTextureContext}
|
|
59
|
+
* @type {readonly GPUTextureContext[]}
|
|
60
60
|
*/
|
|
61
|
-
#
|
|
61
|
+
#textures;
|
|
62
62
|
|
|
63
63
|
/**
|
|
64
|
-
* @type {GPUTextureFormat}
|
|
64
|
+
* @type {readonly GPUTextureFormat[]}
|
|
65
65
|
*/
|
|
66
|
-
#
|
|
66
|
+
#formats;
|
|
67
67
|
|
|
68
68
|
/**
|
|
69
|
-
* @type {number}
|
|
69
|
+
* @type {readonly number[]}
|
|
70
70
|
*/
|
|
71
|
-
#
|
|
71
|
+
#bytes_per_texel_list;
|
|
72
72
|
|
|
73
73
|
/**
|
|
74
74
|
* Texels of content along x, y and z.
|
|
@@ -142,12 +142,15 @@ export class GPUTileAtlas3D {
|
|
|
142
142
|
#label;
|
|
143
143
|
|
|
144
144
|
/**
|
|
145
|
-
* Every argument is required: an atlas is declared, not configured.
|
|
145
|
+
* Every argument is required: an atlas is declared, not configured. Either `format` (one texture)
|
|
146
|
+
* or `formats` (one or more synchronized textures sharing the same slot grid) must be given.
|
|
146
147
|
*
|
|
147
148
|
* @param {object} options
|
|
148
149
|
* @param {GPUDevice} options.device
|
|
149
|
-
* @param {GPUTextureFormat} options.format an uncompressed, copyable format — what a 3-D texture
|
|
150
|
-
* allows, and what {@link write} sizes its block by
|
|
150
|
+
* @param {GPUTextureFormat} [options.format] an uncompressed, copyable format — what a 3-D texture
|
|
151
|
+
* allows, and what {@link write} sizes its block by (mutually exclusive with `formats`)
|
|
152
|
+
* @param {GPUTextureFormat[]} [options.formats] one or more uncompressed, copyable formats for a
|
|
153
|
+
* multi-texture atlas (mutually exclusive with `format`)
|
|
151
154
|
* @param {number[]} options.content_size texels of content along x, y and z of a tile, three
|
|
152
155
|
* positive integers; a cubic tile is `[n, n, n]`. Copied: the array stays the caller's
|
|
153
156
|
* @param {number} options.border texels of skirt on each side of the content, at least 1 for a
|
|
@@ -164,9 +167,19 @@ export class GPUTileAtlas3D {
|
|
|
164
167
|
* are copies
|
|
165
168
|
* @param {string} options.label the texture's label
|
|
166
169
|
*/
|
|
167
|
-
constructor({ device,
|
|
170
|
+
constructor({ device, formats, content_size, border, slots_x, slots_y, capacity, usage, label }) {
|
|
168
171
|
assert.defined(device, 'device');
|
|
169
|
-
|
|
172
|
+
const format_list = formats;
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
assert.isArrayLike(format_list, 'formats');
|
|
177
|
+
assert.greaterThan(format_list.length, 0, 'formats must not be empty');
|
|
178
|
+
|
|
179
|
+
for (let i = 0; i < format_list.length; i++) {
|
|
180
|
+
assert.isString(format_list[i], `formats[${i}]`);
|
|
181
|
+
}
|
|
182
|
+
|
|
170
183
|
assert.isArrayLike(content_size, 'content_size');
|
|
171
184
|
assert.equal(content_size.length, 3, 'content_size is texels along x, y and z');
|
|
172
185
|
assert.isPositiveInteger(content_size[0], 'content_size[0]');
|
|
@@ -184,14 +197,21 @@ export class GPUTileAtlas3D {
|
|
|
184
197
|
assert.greaterThan(usage, 0, 'usage: a texture no shader binds is not an atlas anyone reads');
|
|
185
198
|
assert.isString(label, 'label');
|
|
186
199
|
|
|
187
|
-
const
|
|
200
|
+
const bytes_per_texel_list = [];
|
|
201
|
+
|
|
202
|
+
for (let i = 0; i < format_list.length; i++) {
|
|
203
|
+
const fmt = format_list[i];
|
|
204
|
+
const info = gpu_texture_format_info(fmt);
|
|
205
|
+
|
|
206
|
+
assert.equal(info.block_width, 1, `${fmt} is block-compressed; a 3-D texture cannot be`);
|
|
207
|
+
assert.equal(info.copyable, true, `${fmt} cannot be copied into, and a tile is written by copy`);
|
|
188
208
|
|
|
189
|
-
|
|
190
|
-
|
|
209
|
+
bytes_per_texel_list.push(info.bytes_per_block);
|
|
210
|
+
}
|
|
191
211
|
|
|
192
212
|
this.#device = device;
|
|
193
|
-
this.#
|
|
194
|
-
this.#
|
|
213
|
+
this.#formats = Object.freeze([...format_list]);
|
|
214
|
+
this.#bytes_per_texel_list = Object.freeze(bytes_per_texel_list);
|
|
195
215
|
this.#content_size = Object.freeze([content_size[0], content_size[1], content_size[2]]);
|
|
196
216
|
this.#border = border;
|
|
197
217
|
|
|
@@ -212,20 +232,26 @@ export class GPUTileAtlas3D {
|
|
|
212
232
|
this.#slots_y = slots_y;
|
|
213
233
|
this.#label = label;
|
|
214
234
|
|
|
215
|
-
const
|
|
216
|
-
|
|
235
|
+
const textures = [];
|
|
236
|
+
|
|
237
|
+
for (let i = 0; i < format_list.length; i++) {
|
|
238
|
+
const texture = new GPUTextureContext(device);
|
|
239
|
+
const td = texture.descriptor;
|
|
240
|
+
|
|
241
|
+
td.label = format_list.length === 1 ? label : `${label}[${i}]`;
|
|
242
|
+
td.format = format_list[i];
|
|
243
|
+
td.dimension = "3d";
|
|
244
|
+
td.mipLevelCount = 1;
|
|
245
|
+
// bound however the clients said, written by host writes and device copies, and copied out
|
|
246
|
+
// of itself when it grows
|
|
247
|
+
td.usage = usage
|
|
248
|
+
| GPUTextureUsage.COPY_DST
|
|
249
|
+
| GPUTextureUsage.COPY_SRC;
|
|
217
250
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
td.dimension = "3d";
|
|
221
|
-
td.mipLevelCount = 1;
|
|
222
|
-
// bound however the clients said, written by host writes and device copies, and copied out
|
|
223
|
-
// of itself when it grows
|
|
224
|
-
td.usage = usage
|
|
225
|
-
| GPUTextureUsage.COPY_DST
|
|
226
|
-
| GPUTextureUsage.COPY_SRC;
|
|
251
|
+
textures.push(texture);
|
|
252
|
+
}
|
|
227
253
|
|
|
228
|
-
this.#
|
|
254
|
+
this.#textures = Object.freeze(textures);
|
|
229
255
|
|
|
230
256
|
assert.lessThanOrEqual(slots_x, this.#limit_x, `slots_x ${slots_x} of ${tile_x} texels exceed maxTextureDimension3D ${max_dimension}`);
|
|
231
257
|
assert.lessThanOrEqual(slots_y, this.#limit_y, `slots_y ${slots_y} of ${tile_y} texels exceed maxTextureDimension3D ${max_dimension}`);
|
|
@@ -242,21 +268,76 @@ export class GPUTileAtlas3D {
|
|
|
242
268
|
* @returns {GPUTextureContext}
|
|
243
269
|
*/
|
|
244
270
|
get texture() {
|
|
245
|
-
return this.#
|
|
271
|
+
return this.#textures[0];
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
* All synchronized textures of the atlas.
|
|
276
|
+
* @returns {readonly GPUTextureContext[]}
|
|
277
|
+
*/
|
|
278
|
+
get textures() {
|
|
279
|
+
return this.#textures;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
/**
|
|
283
|
+
* @returns {number}
|
|
284
|
+
*/
|
|
285
|
+
get texture_count() {
|
|
286
|
+
return this.#textures.length;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
/**
|
|
290
|
+
* @param {number} index
|
|
291
|
+
* @returns {GPUTextureContext}
|
|
292
|
+
*/
|
|
293
|
+
texture_at(index) {
|
|
294
|
+
assert.isNonNegativeInteger(index, 'index');
|
|
295
|
+
assert.lessThan(index, this.#textures.length, 'index');
|
|
296
|
+
|
|
297
|
+
return this.#textures[index];
|
|
246
298
|
}
|
|
247
299
|
|
|
248
300
|
/**
|
|
249
301
|
* @returns {GPUTextureFormat}
|
|
250
302
|
*/
|
|
251
303
|
get format() {
|
|
252
|
-
return this.#
|
|
304
|
+
return this.#formats[0];
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
/**
|
|
308
|
+
* @returns {readonly GPUTextureFormat[]}
|
|
309
|
+
*/
|
|
310
|
+
get formats() {
|
|
311
|
+
return this.#formats;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
/**
|
|
315
|
+
* @param {number} index
|
|
316
|
+
* @returns {GPUTextureFormat}
|
|
317
|
+
*/
|
|
318
|
+
format_at(index) {
|
|
319
|
+
assert.isNonNegativeInteger(index, 'index');
|
|
320
|
+
assert.lessThan(index, this.#formats.length, 'index');
|
|
321
|
+
|
|
322
|
+
return this.#formats[index];
|
|
253
323
|
}
|
|
254
324
|
|
|
255
325
|
/**
|
|
256
326
|
* @returns {number}
|
|
257
327
|
*/
|
|
258
328
|
get bytes_per_texel() {
|
|
259
|
-
return this.#
|
|
329
|
+
return this.#bytes_per_texel_list[0];
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
/**
|
|
333
|
+
* @param {number} index
|
|
334
|
+
* @returns {number}
|
|
335
|
+
*/
|
|
336
|
+
bytes_per_texel_at(index) {
|
|
337
|
+
assert.isNonNegativeInteger(index, 'index');
|
|
338
|
+
assert.lessThan(index, this.#bytes_per_texel_list.length, 'index');
|
|
339
|
+
|
|
340
|
+
return this.#bytes_per_texel_list[index];
|
|
260
341
|
}
|
|
261
342
|
|
|
262
343
|
/**
|
|
@@ -407,13 +488,16 @@ export class GPUTileAtlas3D {
|
|
|
407
488
|
* @param {number} slot a live slot
|
|
408
489
|
* @param {Uint8Array} content `content_size[0] · content_size[1] · content_size[2] ·
|
|
409
490
|
* bytes_per_texel` bytes, x fastest, then y, then z
|
|
491
|
+
* @param {number} [texture_index=0] which texture of the atlas to write into
|
|
410
492
|
*/
|
|
411
|
-
write(slot, content) {
|
|
493
|
+
write(slot, content, texture_index = 0) {
|
|
412
494
|
assert.ok(this.is_live(slot), `slot ${slot} is not allocated`);
|
|
413
495
|
assert.isInstanceOf(content, Uint8Array, 'content');
|
|
496
|
+
assert.isNonNegativeInteger(texture_index, 'texture_index');
|
|
497
|
+
assert.lessThan(texture_index, this.#textures.length, 'texture_index');
|
|
414
498
|
|
|
415
499
|
const n = this.#content_size;
|
|
416
|
-
const bpt = this.#
|
|
500
|
+
const bpt = this.#bytes_per_texel_list[texture_index];
|
|
417
501
|
|
|
418
502
|
assert.equal(content.length, n[0] * n[1] * n[2] * bpt, `content holds ${content.length} bytes; a tile's content is ${n[0]}×${n[1]}×${n[2]} texels of ${bpt} bytes`);
|
|
419
503
|
|
|
@@ -426,7 +510,7 @@ export class GPUTileAtlas3D {
|
|
|
426
510
|
|
|
427
511
|
this.#device.queue.writeTexture(
|
|
428
512
|
{
|
|
429
|
-
texture: this.#
|
|
513
|
+
texture: this.#textures[texture_index].gpu_texture,
|
|
430
514
|
mipLevel: 0,
|
|
431
515
|
origin: this.slot_origin(slot, [0, 0, 0]),
|
|
432
516
|
},
|
|
@@ -451,20 +535,23 @@ export class GPUTileAtlas3D {
|
|
|
451
535
|
* @param {number} byte_offset where the block starts in the buffer
|
|
452
536
|
* @param {number} bytes_per_row stride of a row of `tile_size[0]` texels, a multiple of
|
|
453
537
|
* `COPY_BYTES_PER_ROW_ALIGNMENT`; rows per image is `tile_size[1]`
|
|
538
|
+
* @param {number} [texture_index=0] which texture of the atlas to copy into
|
|
454
539
|
*/
|
|
455
|
-
copy_from_buffer(encoder, slot, buffer, byte_offset, bytes_per_row) {
|
|
540
|
+
copy_from_buffer(encoder, slot, buffer, byte_offset, bytes_per_row, texture_index = 0) {
|
|
456
541
|
assert.defined(encoder, 'encoder');
|
|
457
542
|
assert.ok(this.is_live(slot), `slot ${slot} is not allocated`);
|
|
458
543
|
assert.defined(buffer, 'buffer');
|
|
459
544
|
assert.isNonNegativeInteger(byte_offset, 'byte_offset');
|
|
460
545
|
assert.isNonNegativeInteger(bytes_per_row, 'bytes_per_row');
|
|
546
|
+
assert.isNonNegativeInteger(texture_index, 'texture_index');
|
|
547
|
+
assert.lessThan(texture_index, this.#textures.length, 'texture_index');
|
|
461
548
|
|
|
462
549
|
const tile = this.#tile_size;
|
|
463
550
|
const tx = tile[0];
|
|
464
551
|
const ty = tile[1];
|
|
465
552
|
const tz = tile[2];
|
|
466
553
|
|
|
467
|
-
assert.greaterThanOrEqual(bytes_per_row, tx * this.#
|
|
554
|
+
assert.greaterThanOrEqual(bytes_per_row, tx * this.#bytes_per_texel_list[texture_index], 'bytes_per_row is shorter than a row of the tile');
|
|
468
555
|
|
|
469
556
|
encoder.copyBufferToTexture(
|
|
470
557
|
{
|
|
@@ -474,7 +561,7 @@ export class GPUTileAtlas3D {
|
|
|
474
561
|
rowsPerImage: ty,
|
|
475
562
|
},
|
|
476
563
|
{
|
|
477
|
-
texture: this.#
|
|
564
|
+
texture: this.#textures[texture_index].gpu_texture,
|
|
478
565
|
mipLevel: 0,
|
|
479
566
|
origin: this.slot_origin(slot, [0, 0, 0]),
|
|
480
567
|
},
|
|
@@ -483,7 +570,9 @@ export class GPUTileAtlas3D {
|
|
|
483
570
|
}
|
|
484
571
|
|
|
485
572
|
destroy() {
|
|
486
|
-
this.#
|
|
573
|
+
for (let i = 0; i < this.#textures.length; i++) {
|
|
574
|
+
this.#textures[i].destroy();
|
|
575
|
+
}
|
|
487
576
|
}
|
|
488
577
|
|
|
489
578
|
/**
|
|
@@ -508,8 +597,14 @@ export class GPUTileAtlas3D {
|
|
|
508
597
|
this.#slots_z = layers;
|
|
509
598
|
this.#resize_live();
|
|
510
599
|
|
|
600
|
+
const width = this.#slots_x * tile[0];
|
|
601
|
+
const height = this.#slots_y * tile[1];
|
|
602
|
+
const depth = layers * tile[2];
|
|
603
|
+
|
|
511
604
|
// preserve: a new layer keeps every tile where it was, because x and y do not change
|
|
512
|
-
|
|
605
|
+
for (let i = 0; i < this.#textures.length; i++) {
|
|
606
|
+
this.#textures[i].resize(width, height, depth, true);
|
|
607
|
+
}
|
|
513
608
|
}
|
|
514
609
|
|
|
515
610
|
/**
|
|
@@ -538,13 +633,18 @@ export class GPUTileAtlas3D {
|
|
|
538
633
|
const layers = Math.ceil((this.capacity + 1) / (nx * ny));
|
|
539
634
|
|
|
540
635
|
const device = this.#device;
|
|
541
|
-
const
|
|
542
|
-
|
|
543
|
-
const source = texture.gpu_texture;
|
|
636
|
+
const textures = this.#textures;
|
|
637
|
+
const texture_count = textures.length;
|
|
544
638
|
|
|
545
|
-
|
|
639
|
+
const sources = new Array(texture_count);
|
|
640
|
+
const destinations = new Array(texture_count);
|
|
546
641
|
|
|
547
|
-
|
|
642
|
+
for (let i = 0; i < texture_count; i++) {
|
|
643
|
+
const texture = textures[i];
|
|
644
|
+
sources[i] = texture.gpu_texture;
|
|
645
|
+
texture.descriptor.size = [nx * tx, ny * ty, layers * tz];
|
|
646
|
+
destinations[i] = device.createTexture(texture.descriptor);
|
|
647
|
+
}
|
|
548
648
|
|
|
549
649
|
const encoder = device.createCommandEncoder({
|
|
550
650
|
label: `${this.#label} / widen`
|
|
@@ -562,19 +662,21 @@ export class GPUTileAtlas3D {
|
|
|
562
662
|
|
|
563
663
|
const run = Math.min(sx - from[0], nx - to[0], count - slot);
|
|
564
664
|
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
665
|
+
for (let i = 0; i < texture_count; i++) {
|
|
666
|
+
encoder.copyTextureToTexture(
|
|
667
|
+
{
|
|
668
|
+
texture: sources[i],
|
|
669
|
+
mipLevel: 0,
|
|
670
|
+
origin: [from[0] * tx, from[1] * ty, from[2] * tz],
|
|
671
|
+
},
|
|
672
|
+
{
|
|
673
|
+
texture: destinations[i],
|
|
674
|
+
mipLevel: 0,
|
|
675
|
+
origin: [to[0] * tx, to[1] * ty, to[2] * tz],
|
|
676
|
+
},
|
|
677
|
+
[run * tx, ty, tz]
|
|
678
|
+
);
|
|
679
|
+
}
|
|
578
680
|
|
|
579
681
|
slot += run;
|
|
580
682
|
}
|
|
@@ -582,7 +684,9 @@ export class GPUTileAtlas3D {
|
|
|
582
684
|
device.queue.submit([encoder.finish()]);
|
|
583
685
|
|
|
584
686
|
// destroys the old texture; the copies out of it were submitted first
|
|
585
|
-
|
|
687
|
+
for (let i = 0; i < texture_count; i++) {
|
|
688
|
+
textures[i].replace(destinations[i]);
|
|
689
|
+
}
|
|
586
690
|
|
|
587
691
|
this.#slots_x = nx;
|
|
588
692
|
this.#slots_y = ny;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multiplier applied to screen-space UV derivatives before dividing by `view.upscale_ratio`
|
|
3
|
+
* to bias texture mip selection for temporal super-sampling (TAAU / NSS).
|
|
4
|
+
*
|
|
5
|
+
* @type {number}
|
|
6
|
+
*/
|
|
7
|
+
export const RENDER_MIP_DERIVATIVE_BIAS: number;
|
|
8
|
+
/**
|
|
9
|
+
* Shared WGSL helpers for biasing screen-space UV derivatives and mip levels according to
|
|
10
|
+
* the active internal resolution scale (`view.upscale_ratio = output_resolution / internal_resolution`)
|
|
11
|
+
* and global TAA mip bias ({@link RENDER_GLOBAL_MIP_BIAS}).
|
|
12
|
+
*
|
|
13
|
+
* When rendering at reduced internal resolution (`upscale_ratio > 1.0`), raw screen-space
|
|
14
|
+
* derivatives (`dpdx` / `dpdy` or finite differences across internal pixels) measure the
|
|
15
|
+
* coarser internal pixel footprint rather than the final output pixel footprint reconstructed
|
|
16
|
+
* by temporal upscaling. Scaling derivatives by `view_uv_derivative_bias(view.upscale_ratio)`
|
|
17
|
+
* ensures mip selection and anisotropic filtering match the target output resolution.
|
|
18
|
+
*/
|
|
19
|
+
export const chunk_view_mip_bias: CodeChunk;
|
|
20
|
+
import { CodeChunk } from "../shader/compiler/CodeChunk.js";
|
|
21
|
+
//# sourceMappingURL=chunk_view_mip_bias.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk_view_mip_bias.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/view/chunk_view_mip_bias.js"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,yCAFU,MAAM,CAE2D;AAE3E;;;;;;;;;;GAUG;AACH,4CAqBE;0BA1CwB,iCAAiC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { RENDER_GLOBAL_MIP_BIAS } from "../postprocess/taa/RENDER_GLOBAL_MIP_BIAS.js";
|
|
2
|
+
import { CodeChunk } from "../shader/compiler/CodeChunk.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Multiplier applied to screen-space UV derivatives before dividing by `view.upscale_ratio`
|
|
6
|
+
* to bias texture mip selection for temporal super-sampling (TAAU / NSS).
|
|
7
|
+
*
|
|
8
|
+
* @type {number}
|
|
9
|
+
*/
|
|
10
|
+
export const RENDER_MIP_DERIVATIVE_BIAS = 1 / (1 - RENDER_GLOBAL_MIP_BIAS);
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Shared WGSL helpers for biasing screen-space UV derivatives and mip levels according to
|
|
14
|
+
* the active internal resolution scale (`view.upscale_ratio = output_resolution / internal_resolution`)
|
|
15
|
+
* and global TAA mip bias ({@link RENDER_GLOBAL_MIP_BIAS}).
|
|
16
|
+
*
|
|
17
|
+
* When rendering at reduced internal resolution (`upscale_ratio > 1.0`), raw screen-space
|
|
18
|
+
* derivatives (`dpdx` / `dpdy` or finite differences across internal pixels) measure the
|
|
19
|
+
* coarser internal pixel footprint rather than the final output pixel footprint reconstructed
|
|
20
|
+
* by temporal upscaling. Scaling derivatives by `view_uv_derivative_bias(view.upscale_ratio)`
|
|
21
|
+
* ensures mip selection and anisotropic filtering match the target output resolution.
|
|
22
|
+
*/
|
|
23
|
+
export const chunk_view_mip_bias = CodeChunk.from(
|
|
24
|
+
//language=WGSL
|
|
25
|
+
`
|
|
26
|
+
const RENDER_MIP_DERIVATIVE_BIAS: f32 = ${RENDER_MIP_DERIVATIVE_BIAS.toFixed(8)};
|
|
27
|
+
const RENDER_GLOBAL_MIP_BIAS: f32 = ${RENDER_GLOBAL_MIP_BIAS.toFixed(8)};
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Per-axis multiplier for screen-space UV gradients (\`ddx\` by \`.x\`, \`ddy\` by \`.y\`)
|
|
31
|
+
* that accounts for both temporal upscaling (\`upscale_ratio\`) and global TAA mip bias.
|
|
32
|
+
*/
|
|
33
|
+
fn view_uv_derivative_bias(upscale_ratio: vec2<f32>) -> vec2<f32> {
|
|
34
|
+
return vec2<f32>(RENDER_MIP_DERIVATIVE_BIAS) / upscale_ratio;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Scalar LOD bias (in mip levels) corresponding to \`upscale_ratio\` and global TAA mip bias.
|
|
39
|
+
*/
|
|
40
|
+
fn view_mip_bias(upscale_ratio: vec2<f32>) -> f32 {
|
|
41
|
+
return -log2(max(upscale_ratio.x, upscale_ratio.y)) + RENDER_GLOBAL_MIP_BIAS;
|
|
42
|
+
}
|
|
43
|
+
`
|
|
44
|
+
);
|
|
@@ -137,7 +137,7 @@ export class GPUSceneVolumetrics {
|
|
|
137
137
|
|
|
138
138
|
this.#noise_atlas = new GPUTileAtlas3D({
|
|
139
139
|
device,
|
|
140
|
-
|
|
140
|
+
formats: [PARTICIPATING_MEDIA_NOISE_TILE_FORMAT],
|
|
141
141
|
// a cube: the bake makes the same number of features along every edge
|
|
142
142
|
content_size: [PARTICIPATING_MEDIA_NOISE_TILE_CONTENT_SIZE, PARTICIPATING_MEDIA_NOISE_TILE_CONTENT_SIZE, PARTICIPATING_MEDIA_NOISE_TILE_CONTENT_SIZE],
|
|
143
143
|
border: PARTICIPATING_MEDIA_NOISE_TILE_BORDER,
|