@woosh/meep-engine 3.52.0 → 3.53.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/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/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/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 +0 -1
- package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts.map +1 -1
- package/src/engine/graphics3/GPUParticleEmitterSystem.js +19 -5
- 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 +318 -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 +120 -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/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 +90 -0
- package/src/generation/foliage/config/FoliageMaterialConfig.d.ts.map +1 -0
- package/src/generation/foliage/config/FoliageMaterialConfig.js +181 -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 +38 -0
- package/src/generation/foliage/index.d.ts.map +1 -0
- package/src/generation/foliage/index.js +43 -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 +802 -0
- package/src/generation/foliage/material/make_foliage_material.d.ts +14 -0
- package/src/generation/foliage/material/make_foliage_material.d.ts.map +1 -0
- package/src/generation/foliage/material/make_foliage_material.js +359 -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 +203 -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 +80 -0
- package/src/generation/foliage/mesh/foliage_collect_attachments.d.ts.map +1 -0
- package/src/generation/foliage/mesh/foliage_collect_attachments.js +502 -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 +1047 -0
- package/src/generation/foliage/mesh/tree_mesh_build_foliage.d.ts +21 -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 +415 -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 +837 -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 +14 -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 +179 -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 +1104 -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 +127 -0
- package/src/shade/playground/foliage_wind/foliage_world.d.ts.map +1 -0
- package/src/shade/playground/foliage_wind/foliage_world.js +593 -0
- package/src/shade/playground/foliage_wind/index.html +254 -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 +263 -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 +7 -0
- 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 +7 -0
- 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/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 +7 -0
- 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/geometry/bvh/GPUBLASRefitBatch.js +2 -2
- 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/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 +3 -1
- 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 +9 -4
- 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/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/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/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
|
@@ -24,7 +24,9 @@ import { MATERIAL_SHADING_INFO_STRUCT } from "../../shader/chunk/material/MATERI
|
|
|
24
24
|
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
25
25
|
import { chunk_forward_sample_indirect } from "./chunk_forward_sample_indirect.js";
|
|
26
26
|
import { FORWARD_VERTEX_SHADER_STRUCT } from "./FORWARD_VERTEX_SHADER_STRUCT.js";
|
|
27
|
-
import { CAMERA_RESOURCE } from "../../camera/CAMERA_RESOURCE.js";
|
|
27
|
+
import { CAMERA_RESOURCE } from "../../camera/CAMERA_RESOURCE.js";
|
|
28
|
+
import { VIEW_RESOURCE } from "../../view/VIEW_RESOURCE.js";
|
|
29
|
+
import { chunk_view_mip_bias } from "../../view/chunk_view_mip_bias.js";
|
|
28
30
|
import {
|
|
29
31
|
MATERIAL_DIFFUSE_SAMPLER_RESOURCE,
|
|
30
32
|
MATERIAL_DIFFUSE_TEXTURE_RESOURCE,
|
|
@@ -55,7 +57,11 @@ fn forward_shade_standard_fragment(
|
|
|
55
57
|
) -> vec4f {
|
|
56
58
|
let world_tangent_frame = build_orthonormal_matrix_nt(vert.normal, vert.tangent);
|
|
57
59
|
|
|
58
|
-
let
|
|
60
|
+
let uv_bias = view_uv_derivative_bias(view.upscale_ratio);
|
|
61
|
+
let uv_ddx = dpdx(vert.uv) * uv_bias.x;
|
|
62
|
+
let uv_ddy = dpdy(vert.uv) * uv_bias.y;
|
|
63
|
+
|
|
64
|
+
let t_normal = decode_tangent_normal(textureSampleGrad(texture_normal, texture_normal_sampler, vert.uv, uv_ddx, uv_ddy));
|
|
59
65
|
var world_shading_normal:vec3<f32> = normalize( world_tangent_frame * t_normal );
|
|
60
66
|
|
|
61
67
|
// flip the normal when looking at the surface's back. The raw front_facing cannot say:
|
|
@@ -77,9 +83,9 @@ fn forward_shade_standard_fragment(
|
|
|
77
83
|
view_direction: 'view_direction',
|
|
78
84
|
})};
|
|
79
85
|
|
|
80
|
-
let t_pbr =
|
|
81
|
-
let t_diffuse =
|
|
82
|
-
let t_emissive =
|
|
86
|
+
let t_pbr = textureSampleGrad(texture_orm, texture_orm_sampler, vert.uv, uv_ddx, uv_ddy);
|
|
87
|
+
let t_diffuse = textureSampleGrad(texture_diffuse, texture_diffuse_sampler, vert.uv, uv_ddx, uv_ddy);
|
|
88
|
+
let t_emissive = textureSampleGrad(texture_emissive, texture_emissive_sampler, vert.uv, uv_ddx, uv_ddy);
|
|
83
89
|
|
|
84
90
|
// the vertex stage hands on the vertex's own colour; the material's is applied here
|
|
85
91
|
var diffuse = t_diffuse.rgb * vert.color * material_info.albedo_color.rgb;
|
|
@@ -203,11 +209,13 @@ fn forward_shade_standard_fragment(
|
|
|
203
209
|
chunk_compute_indirect_specular,
|
|
204
210
|
chunk_forward_sample_indirect,
|
|
205
211
|
chunk_compute_specular_occlusion,
|
|
206
|
-
chunk_material_draw_side,
|
|
212
|
+
chunk_material_draw_side,
|
|
213
|
+
chunk_view_mip_bias,
|
|
207
214
|
]
|
|
208
215
|
)
|
|
209
216
|
|
|
210
|
-
chunk_forward_shade_standard_fragment.requireResource(CAMERA_RESOURCE);
|
|
217
|
+
chunk_forward_shade_standard_fragment.requireResource(CAMERA_RESOURCE);
|
|
218
|
+
chunk_forward_shade_standard_fragment.requireResource(VIEW_RESOURCE);
|
|
211
219
|
chunk_forward_shade_standard_fragment.requireResource(MATERIAL_INFO_RESOURCE);
|
|
212
220
|
chunk_forward_shade_standard_fragment.requireResource(MATERIAL_DIFFUSE_TEXTURE_RESOURCE);
|
|
213
221
|
chunk_forward_shade_standard_fragment.requireResource(MATERIAL_DIFFUSE_SAMPLER_RESOURCE);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avboit_draw_fragment_body.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/rasterize/native/avboit/avboit_draw_fragment_body.js"],"names":[],"mappings":"AAWA;;;;GAIG;AACH,uCAFU,MAAM,CAE2B;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wCAFU,MAAM,
|
|
1
|
+
{"version":3,"file":"avboit_draw_fragment_body.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/rasterize/native/avboit/avboit_draw_fragment_body.js"],"names":[],"mappings":"AAWA;;;;GAIG;AACH,uCAFU,MAAM,CAE2B;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wCAFU,MAAM,CAsEV;AAEN;;;GAGG;AACH,gDAFU,WAAW,CAWnB;AAEF;;;GAGG;AACH,kCAFU,qBAAqB,CAiB3B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { chunk_sample_volumetrics } from "../../../deferred/chunk_sample_volumetrics.js";
|
|
2
2
|
import { chunk_get_view_space_depth } from "../../../shader/chunk/depth/chunk_get_view_space_depth.js";
|
|
3
|
-
import {
|
|
3
|
+
import { chunk_view_mip_bias } from "../../../view/chunk_view_mip_bias.js";
|
|
4
4
|
import { FORWARD_VERTEX_SHADER_STRUCT } from "../../forward/FORWARD_VERTEX_SHADER_STRUCT.js";
|
|
5
5
|
import { OIT_COVERAGE_MAX } from "../oit/OIT_CONSTANTS.js";
|
|
6
6
|
import { AVBOIT_EXTINCT_TRANSMITTANCE } from "./AVBOIT_CONSTANTS.js";
|
|
@@ -66,7 +66,9 @@ fn main(
|
|
|
66
66
|
|
|
67
67
|
// need to unjitter UV to account for TAA
|
|
68
68
|
var vert_adjusted = vert;
|
|
69
|
-
|
|
69
|
+
let uv_bias = view_uv_derivative_bias(view.upscale_ratio);
|
|
70
|
+
let uv_ddx = dpdx(vert.uv) * uv_bias.x;
|
|
71
|
+
let uv_ddy = dpdy(vert.uv) * uv_bias.y;
|
|
70
72
|
|
|
71
73
|
// linear view depth (vert.position is @builtin(position); .z is device depth) and screen uv,
|
|
72
74
|
// for the volume lookup and the fog composite alike
|
|
@@ -98,7 +100,7 @@ fn main(
|
|
|
98
100
|
var tint = vec3<f32>(1.0);
|
|
99
101
|
let f_transmission = material_info.transmission_factor;
|
|
100
102
|
if (f_transmission > 0.0) {
|
|
101
|
-
let t_diffuse =
|
|
103
|
+
let t_diffuse = textureSampleGrad(texture_diffuse, texture_diffuse_sampler, vert_adjusted.uv, uv_ddx, uv_ddy);
|
|
102
104
|
let base_color = (t_diffuse.rgb / max(t_diffuse.a, 1e-7)) * vert.color * material_info.albedo_color.rgb;
|
|
103
105
|
tint = avboit_transmission_tint(base_color, f_transmission * f32(warp.tint_from_base_color));
|
|
104
106
|
}
|
|
@@ -122,7 +124,7 @@ fn main(
|
|
|
122
124
|
*/
|
|
123
125
|
export const AVBOIT_DRAW_FRAGMENT_DEPENDENCIES = [
|
|
124
126
|
FORWARD_VERTEX_SHADER_STRUCT.declaration_chunk,
|
|
125
|
-
|
|
127
|
+
chunk_view_mip_bias,
|
|
126
128
|
chunk_get_view_space_depth,
|
|
127
129
|
chunk_sample_volumetrics,
|
|
128
130
|
chunk_avboit_view_depth_to_virtual,
|
|
@@ -2,7 +2,7 @@ import { chunk_sample_volumetrics } from "../../../deferred/chunk_sample_volumet
|
|
|
2
2
|
import {
|
|
3
3
|
chunk_resolve_power_moments_4
|
|
4
4
|
} from "../../../shader/chunk/mboit/moments/power/chunk_resolve_power_moments_4.js";
|
|
5
|
-
|
|
5
|
+
|
|
6
6
|
import { FORWARD_VERTEX_SHADER_STRUCT } from "../../forward/FORWARD_VERTEX_SHADER_STRUCT.js";
|
|
7
7
|
import { chunk_oit_linearize_depth } from "./chunk_oit_linearize_depth.js";
|
|
8
8
|
import { OIT_COVERAGE_MAX } from "./OIT_CONSTANTS.js";
|
|
@@ -51,7 +51,7 @@ fn main(
|
|
|
51
51
|
|
|
52
52
|
// need to unjitter UV to account for TAA
|
|
53
53
|
var vert_adjusted = vert;
|
|
54
|
-
|
|
54
|
+
|
|
55
55
|
|
|
56
56
|
let shaded = forward_shade_standard_fragment(vert_adjusted, front_facing, ${OIT_RESOLVE_LIGHT_BUDGET}u, ${OIT_RESOLVE_LIGHT_BUDGET}u);
|
|
57
57
|
|
|
@@ -99,7 +99,7 @@ export const OIT_RESOLVE_FRAGMENT_DEPENDENCIES = [
|
|
|
99
99
|
FORWARD_VERTEX_SHADER_STRUCT.declaration_chunk,
|
|
100
100
|
chunk_resolve_power_moments_4,
|
|
101
101
|
chunk_oit_linearize_depth,
|
|
102
|
-
|
|
102
|
+
|
|
103
103
|
chunk_sample_volumetrics,
|
|
104
104
|
];
|
|
105
105
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader_oit_generate_moments.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/rasterize/native/oit/shader_oit_generate_moments.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shader_oit_generate_moments.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/rasterize/native/oit/shader_oit_generate_moments.js"],"names":[],"mappings":"AAmJA;;;;GAIG;AACH,0CAFU,sBAAsB,CAgE7B;uCAxMoC,iCAAiC"}
|
|
@@ -6,7 +6,7 @@ import { STANDARD_MATERIAL_TEMPLATE } from "../../../material/standard/STANDARD_
|
|
|
6
6
|
import { chunk_F_Schlick } from "../../../shader/chunk/brdf/fresnel/chunk_F_Schlick.js";
|
|
7
7
|
import { chunk_mat4_extract_position } from "../../../shader/chunk/geometry/mat4/chunk_mat4_extract_position.js";
|
|
8
8
|
import { chunk_dielectric_specular_color } from "../../../shader/chunk/material/chunk_dielectric_specular_color.js";
|
|
9
|
-
import {
|
|
9
|
+
import { chunk_view_mip_bias } from "../../../view/chunk_view_mip_bias.js";
|
|
10
10
|
import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
|
|
11
11
|
import { RenderPassColorAttachmentDescriptor } from "../../../shader/pass/RenderPassColorAttachmentDescriptor.js";
|
|
12
12
|
import { ShaderResourceGroupDescriptor } from "../../../shader/resource/ShaderResourceGroupDescriptor.js";
|
|
@@ -74,9 +74,12 @@ fn main(
|
|
|
74
74
|
) -> Output {
|
|
75
75
|
|
|
76
76
|
// compensate for TAA jitter
|
|
77
|
-
|
|
77
|
+
let uv = vert.uv;
|
|
78
|
+
let uv_bias = view_uv_derivative_bias(view.upscale_ratio);
|
|
79
|
+
let uv_ddx = dpdx(uv) * uv_bias.x;
|
|
80
|
+
let uv_ddy = dpdy(uv) * uv_bias.y;
|
|
78
81
|
|
|
79
|
-
let t_diffuse =
|
|
82
|
+
let t_diffuse = textureSampleGrad(texture_diffuse, texture_diffuse_sampler, uv, uv_ddx, uv_ddy);
|
|
80
83
|
let surface_alpha = t_diffuse.a * material_info.albedo_color.a;
|
|
81
84
|
|
|
82
85
|
// MaterialX/OpenPBR transmission: when transmission_factor > 0, coverage
|
|
@@ -87,7 +90,7 @@ fn main(
|
|
|
87
90
|
var opacity = surface_alpha;
|
|
88
91
|
let f_transmission = material_info.transmission_factor;
|
|
89
92
|
if (f_transmission > 0.0) {
|
|
90
|
-
let t_pbr =
|
|
93
|
+
let t_pbr = textureSampleGrad(texture_orm, texture_orm_sampler, uv, uv_ddx, uv_ddy);
|
|
91
94
|
var diffuse_rgb = t_diffuse.rgb;
|
|
92
95
|
diffuse_rgb /= max(t_diffuse.a, 1e-7);
|
|
93
96
|
let f_metalness = t_pbr.b * material_info.metallic_factor;
|
|
@@ -135,7 +138,7 @@ fn main(
|
|
|
135
138
|
`, [
|
|
136
139
|
FORWARD_VERTEX_SHADER_STRUCT.declaration_chunk,
|
|
137
140
|
chunk_oit_linearize_depth,
|
|
138
|
-
|
|
141
|
+
chunk_view_mip_bias,
|
|
139
142
|
chunk_mat4_extract_position,
|
|
140
143
|
chunk_dielectric_specular_color,
|
|
141
144
|
chunk_F_Schlick,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viz_rasterization_alpha_tested_pass_descriptor.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/rasterize/native/viz/viz_rasterization_alpha_tested_pass_descriptor.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"viz_rasterization_alpha_tested_pass_descriptor.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/rasterize/native/viz/viz_rasterization_alpha_tested_pass_descriptor.js"],"names":[],"mappings":"AA0LA;;;;GAIG;AACH,6DAFU,sBAAsB,CAqC7B;uCA5LoC,iCAAiC"}
|
package/src/shade/renderer/rasterize/native/viz/viz_rasterization_alpha_tested_pass_descriptor.js
CHANGED
|
@@ -10,7 +10,7 @@ import { chunk_scene_database_access } from "../../../scene/chunk_scene_database
|
|
|
10
10
|
import {
|
|
11
11
|
chunk_triangle_list_reverse_winding
|
|
12
12
|
} from "../../../shader/chunk/geometry/triangle/chunk_triangle_list_reverse_winding.js";
|
|
13
|
-
import {
|
|
13
|
+
import { chunk_view_mip_bias } from "../../../view/chunk_view_mip_bias.js";
|
|
14
14
|
import {
|
|
15
15
|
chunk_encode_meshlet_element
|
|
16
16
|
} from "../../../shader/chunk/geometry/meshlet/chunk_encode_meshlet_element.js";
|
|
@@ -72,7 +72,7 @@ fn main(
|
|
|
72
72
|
// Calculate mip bias based on upscale ratio.
|
|
73
73
|
// We take the average or the min of the vec2 upscale_ratio.
|
|
74
74
|
// log2(2.0) = 1.0, so we subtract that to get sharper mips.
|
|
75
|
-
let mip_bias =
|
|
75
|
+
let mip_bias = view_mip_bias(view.upscale_ratio);
|
|
76
76
|
|
|
77
77
|
let gradient_scale = exp2(mip_bias);
|
|
78
78
|
|
|
@@ -105,7 +105,8 @@ fn main(
|
|
|
105
105
|
`, [
|
|
106
106
|
chunk_material_opacity_contract,
|
|
107
107
|
chunk_transparency_hashed_alpha_threshold,
|
|
108
|
-
chunk_spatio_temporal_noise_r2_64,
|
|
108
|
+
chunk_spatio_temporal_noise_r2_64,
|
|
109
|
+
chunk_view_mip_bias,
|
|
109
110
|
]
|
|
110
111
|
);
|
|
111
112
|
|
|
@@ -82,7 +82,7 @@ import { VSM_SLOT_EMPTY } from "../vsm/VSM_SLOT_STRUCT.js";
|
|
|
82
82
|
* @typedef {import("../../buffer/table/serde/generate_record_writer.js").GPURecordWriter} GPURecordWriter
|
|
83
83
|
*/
|
|
84
84
|
|
|
85
|
-
const DEFAULT_SHADOWMAP_ATLAS_RESOLUTION = 4096
|
|
85
|
+
const DEFAULT_SHADOWMAP_ATLAS_RESOLUTION = 4096;
|
|
86
86
|
|
|
87
87
|
/**
|
|
88
88
|
* Resolution by cascade.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Anisotropic trilinear clamp-to-edge sampler (`magFilter: "linear"`, `minFilter: "linear"`,
|
|
3
|
+
* `mipmapFilter: "linear"`, `maxAnisotropy: 16`).
|
|
4
|
+
* Use for mipmapped 3D scene atlases (such as decal and particle atlases) that undergo both
|
|
5
|
+
* minification and oblique-angle projection in world space.
|
|
6
|
+
*/
|
|
7
|
+
export const SAMPLER_ANISOTROPIC_CLAMP: Readonly<SamplerDescriptor>;
|
|
8
|
+
import { SamplerDescriptor } from "../../descriptor/texture/SamplerDescriptor.js";
|
|
9
|
+
//# sourceMappingURL=SAMPLER_ANISOTROPIC_CLAMP.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SAMPLER_ANISOTROPIC_CLAMP.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/texture/SAMPLER_ANISOTROPIC_CLAMP.js"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,oEAQI;kCAhB8B,+CAA+C"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { SamplerDescriptor } from "../../descriptor/texture/SamplerDescriptor.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Anisotropic trilinear clamp-to-edge sampler (`magFilter: "linear"`, `minFilter: "linear"`,
|
|
5
|
+
* `mipmapFilter: "linear"`, `maxAnisotropy: 16`).
|
|
6
|
+
* Use for mipmapped 3D scene atlases (such as decal and particle atlases) that undergo both
|
|
7
|
+
* minification and oblique-angle projection in world space.
|
|
8
|
+
*/
|
|
9
|
+
export const SAMPLER_ANISOTROPIC_CLAMP = Object.freeze(SamplerDescriptor.from({
|
|
10
|
+
addressModeU: "clamp-to-edge",
|
|
11
|
+
addressModeV: "clamp-to-edge",
|
|
12
|
+
addressModeW: "clamp-to-edge",
|
|
13
|
+
magFilter: "linear",
|
|
14
|
+
minFilter: "linear",
|
|
15
|
+
mipmapFilter: "linear",
|
|
16
|
+
maxAnisotropy: 16,
|
|
17
|
+
}));
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Magnification-only linear clamp sampler (`magFilter: "linear"`, `minFilter: "nearest"`,
|
|
3
|
+
* `mipmapFilter: "nearest"`, `maxAnisotropy: 1`).
|
|
4
|
+
*
|
|
5
|
+
* Intended ONLY for upscaling single-mip 2D render targets (e.g. post-processing upsampling).
|
|
6
|
+
* Do NOT use for 3D scene textures, atlases, or mipmapped targets that undergo minification —
|
|
7
|
+
* use `SAMPLER_TRILINEAR_CLAMP` or `SAMPLER_ANISOTROPIC_CLAMP` instead.
|
|
8
|
+
*/
|
|
1
9
|
export const SAMPLER_LINEAR_UPSCALE: Readonly<SamplerDescriptor>;
|
|
2
10
|
export const SAMPLER_LINEAR_DOWNSCALE: Readonly<SamplerDescriptor>;
|
|
3
11
|
export const SAMPLER_NEAREST: Readonly<SamplerDescriptor>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SAMPLER_LINEAR_UPSCALE.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/texture/SAMPLER_LINEAR_UPSCALE.js"],"names":[],"mappings":"AAEA,iEAKI;AAEJ,mEAIG;AAEH,0DAII;
|
|
1
|
+
{"version":3,"file":"SAMPLER_LINEAR_UPSCALE.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/texture/SAMPLER_LINEAR_UPSCALE.js"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,iEAKI;AAEJ,mEAIG;AAEH,0DAII;kCA3B8B,+CAA+C"}
|
|
@@ -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
|
+
}));
|
|
@@ -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
|
+
);
|
|
@@ -2975,7 +2975,7 @@ function inferBuiltinReturnType(name, args) {
|
|
|
2975
2975
|
// the two values; the third argument is the condition
|
|
2976
2976
|
return commonArgumentType(args.slice(0, 2));
|
|
2977
2977
|
}
|
|
2978
|
-
if (name === 'textureLoad' || name === 'textureSampleLevel' || name === 'textureSample' || name === 'textureSampleGrad') {
|
|
2978
|
+
if (name === 'textureLoad' || name === 'textureSampleLevel' || name === 'textureSample' || name === 'textureSampleBias' || name === 'textureSampleGrad') {
|
|
2979
2979
|
return { kind: 'vec', size: 4, scalar: 'f32' };
|
|
2980
2980
|
}
|
|
2981
2981
|
// Both gathers return the four texels of a 2x2 footprint. Saying so here matters more than
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WGSLLanguageCore.d.ts","sourceRoot":"","sources":["../../../../../src/shade/wgsl/emulator/WGSLLanguageCore.js"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"WGSLLanguageCore.d.ts","sourceRoot":"","sources":["../../../../../src/shade/wgsl/emulator/WGSLLanguageCore.js"],"names":[],"mappings":";IA4oDA;;;;;;;;;;;;;;OAcG;IACH,+DAmDC"}
|
|
@@ -1067,7 +1067,8 @@ export const WGSLLanguageCore = {
|
|
|
1067
1067
|
},
|
|
1068
1068
|
|
|
1069
1069
|
/**
|
|
1070
|
-
* `textureSampleLevel(t, s, coords, level) -> vec4<T>`
|
|
1070
|
+
* `textureSampleLevel(t, s, coords, level[, offset]) -> vec4<T>` and the texture_2d_array form
|
|
1071
|
+
* `textureSampleLevel(t, s, coords, array_index, level[, offset])`.
|
|
1071
1072
|
*
|
|
1072
1073
|
* Filtered sample at normalised UV coords. Honours the sampler's
|
|
1073
1074
|
* address modes and `magFilter`. `coords` length matches the texture
|
|
@@ -1076,33 +1077,59 @@ export const WGSLLanguageCore = {
|
|
|
1076
1077
|
* @param {import("./CPUBitmapData.js").CPUBitmapData} t
|
|
1077
1078
|
* @param {import("../../descriptor/texture/SamplerDescriptor.js").SamplerDescriptor | null} sampler
|
|
1078
1079
|
* @param {Float32Array | number[] | number} coords
|
|
1079
|
-
* @param {number} [
|
|
1080
|
+
* @param {number} [p3] — `level`, or `array_index` in the array forms
|
|
1081
|
+
* @param {number | Int32Array | number[]} [p4] — `level` in the array forms, or `offset`
|
|
1082
|
+
* @param {Int32Array | number[]} [p5] — `offset` in the array form
|
|
1080
1083
|
* @returns {Float32Array}
|
|
1081
1084
|
*/
|
|
1082
|
-
textureSampleLevel(t, sampler, coords,
|
|
1085
|
+
textureSampleLevel(t, sampler, coords, p3 = 0, p4 = undefined, p5 = undefined) {
|
|
1083
1086
|
assert.defined(t, 'texture');
|
|
1087
|
+
|
|
1088
|
+
let array_index = undefined;
|
|
1089
|
+
let offset = undefined;
|
|
1090
|
+
|
|
1091
|
+
if (p5 !== undefined) {
|
|
1092
|
+
// (t, s, coords, array_index, level, offset)
|
|
1093
|
+
array_index = p3;
|
|
1094
|
+
offset = p5;
|
|
1095
|
+
} else if (p4 === undefined) {
|
|
1096
|
+
// (t, s, coords, level)
|
|
1097
|
+
} else if (typeof p4 === 'number') {
|
|
1098
|
+
// (t, s, coords, array_index, level)
|
|
1099
|
+
array_index = p3;
|
|
1100
|
+
} else {
|
|
1101
|
+
// (t, s, coords, level, offset)
|
|
1102
|
+
offset = p4;
|
|
1103
|
+
}
|
|
1104
|
+
|
|
1084
1105
|
const dim = t.dimensionality;
|
|
1085
1106
|
// Convert UV (normalised) to texel-space coords expected by
|
|
1086
1107
|
// cpu_texture_sample. coords for a 1D texture is a scalar in WGSL.
|
|
1087
1108
|
const u = dim >= 1 ? (typeof coords === 'number' ? coords : coords[0]) : 0;
|
|
1088
1109
|
const v = dim >= 2 ? coords[1] : 0;
|
|
1089
|
-
const
|
|
1090
|
-
const
|
|
1110
|
+
const ox = offset !== undefined ? (offset[0] | 0) : 0;
|
|
1111
|
+
const oy = offset !== undefined && offset.length >= 2 ? (offset[1] | 0) : 0;
|
|
1112
|
+
const tx = u * t.size[0] + ox;
|
|
1113
|
+
const ty = v * t.size[1] + oy;
|
|
1091
1114
|
/**
|
|
1092
1115
|
* @type {number[]}
|
|
1093
1116
|
*/
|
|
1094
1117
|
let texel_coord;
|
|
1095
|
-
if (
|
|
1118
|
+
if (array_index !== undefined) {
|
|
1096
1119
|
/*
|
|
1097
|
-
|
|
1098
|
-
fourth argument selects a slice.
|
|
1099
|
-
|
|
1100
|
-
|
|
1120
|
+
The texture_2d_array form — (t, s, uv, array_index, level[, offset]) — where the
|
|
1121
|
+
fourth argument selects a slice. The array index is clamped to the layer count rather
|
|
1122
|
+
than wrapped by addressModeW, and a slice's texel-space centre sits at index + 0.5,
|
|
1123
|
+
which lands the linear filter's z weight on exactly that slice: filtering happens in
|
|
1124
|
+
xy and never crosses into a neighbour.
|
|
1101
1125
|
*/
|
|
1102
|
-
|
|
1126
|
+
const d = t.size[2];
|
|
1127
|
+
const z = d <= 0 ? 0 : Math.min(Math.max(array_index | 0, 0), d - 1);
|
|
1128
|
+
texel_coord = [tx, ty, z + 0.5];
|
|
1103
1129
|
} else {
|
|
1104
1130
|
const w = dim >= 3 ? coords[2] : 0;
|
|
1105
|
-
const
|
|
1131
|
+
const oz = offset !== undefined && offset.length >= 3 ? (offset[2] | 0) : 0;
|
|
1132
|
+
const tz = w * t.size[2] + oz;
|
|
1106
1133
|
texel_coord = dim === 1 ? [tx] : (dim === 2 ? [tx, ty] : [tx, ty, tz]);
|
|
1107
1134
|
}
|
|
1108
1135
|
const result = new Float32Array(4);
|
|
@@ -1111,8 +1138,8 @@ export const WGSLLanguageCore = {
|
|
|
1111
1138
|
},
|
|
1112
1139
|
|
|
1113
1140
|
/**
|
|
1114
|
-
* `textureSample(t, s, coords) -> vec4<T>` and the texture_2d_array form
|
|
1115
|
-
* `textureSample(t, s, coords, array_index)`.
|
|
1141
|
+
* `textureSample(t, s, coords[, offset]) -> vec4<T>` and the texture_2d_array form
|
|
1142
|
+
* `textureSample(t, s, coords, array_index[, offset])`.
|
|
1116
1143
|
*
|
|
1117
1144
|
* Implicit-LOD sample. Without mipmaps, this is just
|
|
1118
1145
|
* `textureSampleLevel` at level 0.
|
|
@@ -1120,37 +1147,89 @@ export const WGSLLanguageCore = {
|
|
|
1120
1147
|
* @param {import("./CPUBitmapData.js").CPUBitmapData} t
|
|
1121
1148
|
* @param {import("../../descriptor/texture/SamplerDescriptor.js").SamplerDescriptor | null} sampler
|
|
1122
1149
|
* @param {Float32Array | number[] | number} coords
|
|
1123
|
-
* @param {number} [array_index
|
|
1150
|
+
* @param {number | Int32Array | number[]} [p3] — `array_index`, or `offset`
|
|
1151
|
+
* @param {Int32Array | number[]} [p4] — `offset` in the array form
|
|
1124
1152
|
* @returns {Float32Array}
|
|
1125
1153
|
*/
|
|
1126
|
-
textureSample(t, sampler, coords,
|
|
1127
|
-
if (
|
|
1128
|
-
return WGSLLanguageCore.textureSampleLevel(t, sampler, coords,
|
|
1154
|
+
textureSample(t, sampler, coords, p3 = undefined, p4 = undefined) {
|
|
1155
|
+
if (p4 !== undefined) {
|
|
1156
|
+
return WGSLLanguageCore.textureSampleLevel(t, sampler, coords, p3, 0, p4);
|
|
1157
|
+
}
|
|
1158
|
+
|
|
1159
|
+
if (typeof p3 === 'number') {
|
|
1160
|
+
return WGSLLanguageCore.textureSampleLevel(t, sampler, coords, p3, 0);
|
|
1161
|
+
}
|
|
1162
|
+
|
|
1163
|
+
if (p3 !== undefined) {
|
|
1164
|
+
return WGSLLanguageCore.textureSampleLevel(t, sampler, coords, 0, p3);
|
|
1129
1165
|
}
|
|
1130
1166
|
|
|
1131
1167
|
return WGSLLanguageCore.textureSampleLevel(t, sampler, coords, 0);
|
|
1132
1168
|
},
|
|
1133
1169
|
|
|
1134
1170
|
/**
|
|
1135
|
-
* `
|
|
1136
|
-
* `
|
|
1171
|
+
* `textureSampleBias(t, s, coords, bias[, offset]) -> vec4<T>` and the texture_2d_array form
|
|
1172
|
+
* `textureSampleBias(t, s, coords, array_index, bias[, offset])`.
|
|
1137
1173
|
*
|
|
1138
|
-
*
|
|
1139
|
-
*
|
|
1174
|
+
* Implicit-LOD sample with a mip bias. Mipmaps are not modelled (see the header), so the bias
|
|
1175
|
+
* is ignored and this routes through `textureSampleLevel` at level 0. Overloads are told apart
|
|
1176
|
+
* by argument shape: a scalar fifth argument is the array form's `bias` (making the fourth the
|
|
1177
|
+
* `array_index`), while a vector is the const `offset`.
|
|
1140
1178
|
*
|
|
1141
1179
|
* @param {import("./CPUBitmapData.js").CPUBitmapData} t
|
|
1142
1180
|
* @param {import("../../descriptor/texture/SamplerDescriptor.js").SamplerDescriptor | null} sampler
|
|
1143
1181
|
* @param {Float32Array | number[] | number} coords
|
|
1144
|
-
* @param {
|
|
1145
|
-
* @param {
|
|
1146
|
-
* @param {
|
|
1182
|
+
* @param {number} p3 — `bias`, or `array_index` in the array forms
|
|
1183
|
+
* @param {number | Int32Array | number[]} [p4] — `bias` in the array forms, or `offset`
|
|
1184
|
+
* @param {Int32Array | number[]} [p5] — `offset` in the array form
|
|
1147
1185
|
* @returns {Float32Array}
|
|
1148
1186
|
*/
|
|
1149
|
-
|
|
1187
|
+
textureSampleBias(t, sampler, coords, p3, p4 = undefined, p5 = undefined) {
|
|
1150
1188
|
if (p5 !== undefined) {
|
|
1189
|
+
return WGSLLanguageCore.textureSampleLevel(t, sampler, coords, p3, 0, p5);
|
|
1190
|
+
}
|
|
1191
|
+
|
|
1192
|
+
if (p4 === undefined) {
|
|
1193
|
+
return WGSLLanguageCore.textureSampleLevel(t, sampler, coords, 0);
|
|
1194
|
+
}
|
|
1195
|
+
|
|
1196
|
+
if (typeof p4 === 'number') {
|
|
1151
1197
|
return WGSLLanguageCore.textureSampleLevel(t, sampler, coords, p3, 0);
|
|
1152
1198
|
}
|
|
1153
1199
|
|
|
1200
|
+
return WGSLLanguageCore.textureSampleLevel(t, sampler, coords, 0, p4);
|
|
1201
|
+
},
|
|
1202
|
+
|
|
1203
|
+
/**
|
|
1204
|
+
* `textureSampleGrad(t, s, coords, ddx, ddy[, offset]) -> vec4<T>` and the texture_2d_array form
|
|
1205
|
+
* `textureSampleGrad(t, s, coords, array_index, ddx, ddy[, offset])`.
|
|
1206
|
+
*
|
|
1207
|
+
* Explicit-gradient sample. Mipmaps are not modelled (see the header), so the gradients are
|
|
1208
|
+
* ignored and this routes through `textureSampleLevel` at level 0. A scalar fourth argument is
|
|
1209
|
+
* the array form's `array_index`; a vector is `ddx`.
|
|
1210
|
+
*
|
|
1211
|
+
* @param {import("./CPUBitmapData.js").CPUBitmapData} t
|
|
1212
|
+
* @param {import("../../descriptor/texture/SamplerDescriptor.js").SamplerDescriptor | null} sampler
|
|
1213
|
+
* @param {Float32Array | number[] | number} coords
|
|
1214
|
+
* @param {Float32Array | number[] | number} p3 gradient `ddx`, or the `array_index`
|
|
1215
|
+
* @param {Float32Array | number[]} p4 gradient (`ddy`, or `ddx` in the array form)
|
|
1216
|
+
* @param {Float32Array | Int32Array | number[]} [p5] `ddy` in the array form, or `offset`
|
|
1217
|
+
* @param {Int32Array | number[]} [p6] `offset` in the array form
|
|
1218
|
+
* @returns {Float32Array}
|
|
1219
|
+
*/
|
|
1220
|
+
textureSampleGrad(t, sampler, coords, p3, p4, p5 = undefined, p6 = undefined) {
|
|
1221
|
+
if (typeof p3 === 'number') {
|
|
1222
|
+
if (p6 !== undefined) {
|
|
1223
|
+
return WGSLLanguageCore.textureSampleLevel(t, sampler, coords, p3, 0, p6);
|
|
1224
|
+
}
|
|
1225
|
+
|
|
1226
|
+
return WGSLLanguageCore.textureSampleLevel(t, sampler, coords, p3, 0);
|
|
1227
|
+
}
|
|
1228
|
+
|
|
1229
|
+
if (p5 !== undefined) {
|
|
1230
|
+
return WGSLLanguageCore.textureSampleLevel(t, sampler, coords, 0, p5);
|
|
1231
|
+
}
|
|
1232
|
+
|
|
1154
1233
|
return WGSLLanguageCore.textureSampleLevel(t, sampler, coords, 0);
|
|
1155
1234
|
},
|
|
1156
1235
|
|