@woosh/meep-engine 3.51.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/playground/tonemap_sdr/README.md +5 -3
- package/src/shade/renderer/Renderer.d.ts +1 -1
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +88 -31
- package/src/shade/renderer/ShadeToneMappingMode.d.ts +3 -2
- package/src/shade/renderer/ShadeToneMappingMode.js +15 -4
- 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/deferred/tonemap/TonemapAces2Tables.d.ts +38 -0
- package/src/shade/renderer/deferred/tonemap/TonemapAces2Tables.d.ts.map +1 -0
- package/src/shade/renderer/deferred/tonemap/TonemapAces2Tables.js +97 -0
- package/src/shade/renderer/deferred/{TonemapDisplaySettings.d.ts → tonemap/TonemapDisplaySettings.d.ts} +1 -1
- package/src/shade/renderer/deferred/tonemap/TonemapDisplaySettings.d.ts.map +1 -0
- package/src/shade/renderer/deferred/{TonemapDisplaySettings.js → tonemap/TonemapDisplaySettings.js} +5 -5
- package/src/shade/renderer/deferred/{shader_tonemap_HDR.d.ts → tonemap/shader_tonemap_HDR.d.ts} +1 -1
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR.d.ts.map +1 -0
- package/src/shade/renderer/deferred/{shader_tonemap_HDR.js → tonemap/shader_tonemap_HDR.js} +9 -9
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_aces.d.ts +17 -0
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_aces.d.ts.map +1 -0
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_aces.js +101 -0
- package/src/shade/renderer/deferred/{shader_tonemap_HDR_none.d.ts → tonemap/shader_tonemap_HDR_none.d.ts} +1 -1
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_none.d.ts.map +1 -0
- package/src/shade/renderer/deferred/{shader_tonemap_HDR_none.js → tonemap/shader_tonemap_HDR_none.js} +6 -6
- package/src/shade/renderer/deferred/{shader_tonemap_HDR_pbr_neutral.d.ts → tonemap/shader_tonemap_HDR_pbr_neutral.d.ts} +1 -1
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_HDR_pbr_neutral.d.ts.map +1 -0
- package/src/shade/renderer/deferred/{shader_tonemap_HDR_pbr_neutral.js → tonemap/shader_tonemap_HDR_pbr_neutral.js} +8 -8
- package/src/shade/renderer/deferred/{shader_tonemap_LDR.d.ts → tonemap/shader_tonemap_LDR.d.ts} +1 -1
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR.d.ts.map +1 -0
- package/src/shade/renderer/deferred/{shader_tonemap_LDR.js → tonemap/shader_tonemap_LDR.js} +10 -10
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_aces.d.ts +10 -0
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_aces.d.ts.map +1 -0
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_aces.js +77 -0
- package/src/shade/renderer/deferred/{shader_tonemap_LDR_none.d.ts → tonemap/shader_tonemap_LDR_none.d.ts} +1 -1
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_none.d.ts.map +1 -0
- package/src/shade/renderer/deferred/{shader_tonemap_LDR_none.js → tonemap/shader_tonemap_LDR_none.js} +7 -7
- package/src/shade/renderer/deferred/{shader_tonemap_LDR_pbr_neutral.d.ts → tonemap/shader_tonemap_LDR_pbr_neutral.d.ts} +1 -1
- package/src/shade/renderer/deferred/tonemap/shader_tonemap_LDR_pbr_neutral.d.ts.map +1 -0
- package/src/shade/renderer/deferred/{shader_tonemap_LDR_pbr_neutral.js → tonemap/shader_tonemap_LDR_pbr_neutral.js} +8 -8
- 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/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 +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/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/color/tonemap/ACES_TONE_MAPPING_BRIEF_2026_10_17.md +160 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/HDR_TONE_MAPPING_FORMS_BRIEF_2026_10_16.md +5 -1
- package/src/shade/renderer/shader/chunk/color/tonemap/SDR_TONE_MAPPING_BRIEF_2026_10_16.md +15 -5
- package/src/shade/renderer/shader/chunk/color/tonemap/aces/aces2_transform_block.d.ts +41 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/aces/aces2_transform_block.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/aces/aces2_transform_block.js +692 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/aces/chunk_aces2_output_transform.d.ts +25 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/aces/chunk_aces2_output_transform.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/aces/chunk_aces2_output_transform.js +446 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/aces/chunk_aces_ue_matrices.d.ts +22 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/aces/chunk_aces_ue_matrices.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/aces/chunk_aces_ue_matrices.js +68 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/aces/chunk_tonemap_ue_filmic.d.ts +32 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/aces/chunk_tonemap_ue_filmic.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/aces/chunk_tonemap_ue_filmic.js +163 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_PAPER_WHITE_NITS.d.ts +10 -3
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_PAPER_WHITE_NITS.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_PAPER_WHITE_NITS.js +12 -4
- 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
- package/src/shade/renderer/deferred/TonemapDisplaySettings.d.ts.map +0 -1
- package/src/shade/renderer/deferred/shader_tonemap_HDR.d.ts.map +0 -1
- package/src/shade/renderer/deferred/shader_tonemap_HDR_none.d.ts.map +0 -1
- package/src/shade/renderer/deferred/shader_tonemap_HDR_pbr_neutral.d.ts.map +0 -1
- package/src/shade/renderer/deferred/shader_tonemap_LDR.d.ts.map +0 -1
- package/src/shade/renderer/deferred/shader_tonemap_LDR_none.d.ts.map +0 -1
- package/src/shade/renderer/deferred/shader_tonemap_LDR_pbr_neutral.d.ts.map +0 -1
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { CodeChunk } from "../../../../compiler/CodeChunk.js";
|
|
2
|
+
import { chunk_aces_ue_matrices } from "./chunk_aces_ue_matrices.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Unreal Engine's default SDR tone mapping, "Filmic", with every setting at its default.
|
|
6
|
+
*
|
|
7
|
+
* A line-for-line port of UE 5.4's `CombineLUTsCommon` (PostProcessCombineLUTs.usf) for the sRGB output device and
|
|
8
|
+
* `FilmToneMap` (TonemapCommon.ush), as UE evaluates them into its colour grading LUT, here evaluated per pixel:
|
|
9
|
+
*
|
|
10
|
+
* 1. into ACEScg (AP1) from UE's default sRGB working space;
|
|
11
|
+
* 2. Expand Gamut at its default 1.0, which pushes bright saturated colours toward wider primaries;
|
|
12
|
+
* 3. the colour corrections at their defaults, which only clamp AP1 at zero;
|
|
13
|
+
* 4. Blue Correction at its default 0.6, a matrix that turns bright blue toward cyan rather than violet, before the
|
|
14
|
+
* curve, and its inverse after;
|
|
15
|
+
* 5. `FilmToneMap` with Slope 0.88, Toe 0.55, Shoulder 0.26, Black Clip 0 and White Clip 0.04 (`FPostProcessSettings`'
|
|
16
|
+
* defaults, Scene.cpp). It is the ACES reference rendering's glow and red modifier and its 0.96 desaturation, then a
|
|
17
|
+
* parametric toe-straight-shoulder curve on log10 of each AP1 channel, solved so that 0.18 comes out at 0.18, then a
|
|
18
|
+
* 0.93 desaturation;
|
|
19
|
+
* 6. back to the working space, clamped at zero, and clipped at 1 as the sRGB target clips it.
|
|
20
|
+
*
|
|
21
|
+
* UE 5.8 keeps Filmic as its default method and its SDR output unchanged. What it does on an HDR display is in
|
|
22
|
+
* shader_tonemap_HDR_aces.
|
|
23
|
+
*
|
|
24
|
+
* Where UE divides 0 by 0 (gamut expansion of black) or takes log10(0), this takes the limit, so black stays black.
|
|
25
|
+
* UE's LUT also limits its input to 43.7, the top of its log encoding; this does not, which moves a few saturated
|
|
26
|
+
* highlights over 43.7 by a few codes.
|
|
27
|
+
*
|
|
28
|
+
* Input: exposed linear Rec.709. Output: display-linear Rec.709 in [0, 1].
|
|
29
|
+
*
|
|
30
|
+
* @see "Color Grading and the Filmic Tonemapper in Unreal Engine", Epic Games
|
|
31
|
+
* @type {CodeChunk}
|
|
32
|
+
*/
|
|
33
|
+
export const chunk_tonemap_ue_filmic = CodeChunk.from(
|
|
34
|
+
//language=WGSL
|
|
35
|
+
`
|
|
36
|
+
const UE_FILM_SLOPE: f32 = 0.88;
|
|
37
|
+
const UE_FILM_TOE: f32 = 0.55;
|
|
38
|
+
const UE_FILM_SHOULDER: f32 = 0.26;
|
|
39
|
+
const UE_FILM_BLACK_CLIP: f32 = 0.0;
|
|
40
|
+
const UE_FILM_WHITE_CLIP: f32 = 0.04;
|
|
41
|
+
const UE_BLUE_CORRECTION: f32 = 0.6;
|
|
42
|
+
const UE_EXPAND_GAMUT_AMOUNT: f32 = 1.0;
|
|
43
|
+
|
|
44
|
+
fn ue_film_saturation(rgb: vec3<f32>) -> f32 {
|
|
45
|
+
let lowest = min(rgb.r, min(rgb.g, rgb.b));
|
|
46
|
+
let highest = max(rgb.r, max(rgb.g, rgb.b));
|
|
47
|
+
return (max(highest, 1e-10) - max(lowest, 1e-10)) / max(highest, 1e-2);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// a luminance proxy for the glow: Y plus 1.75 of the chroma
|
|
51
|
+
fn ue_film_yc(rgb: vec3<f32>) -> f32 {
|
|
52
|
+
let chroma = sqrt(max(rgb.b * (rgb.b - rgb.g) + rgb.g * (rgb.g - rgb.r) + rgb.r * (rgb.r - rgb.b), 0.0));
|
|
53
|
+
return (rgb.b + rgb.g + rgb.r + 1.75 * chroma) / 3.0;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
fn ue_film_glow(yc: f32, gain: f32, mid: f32) -> f32 {
|
|
57
|
+
if (yc <= 2.0 / 3.0 * mid) {
|
|
58
|
+
return gain;
|
|
59
|
+
}
|
|
60
|
+
if (yc >= 2.0 * mid) {
|
|
61
|
+
return 0.0;
|
|
62
|
+
}
|
|
63
|
+
return gain * (mid / yc - 0.5);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
fn ue_film_sigmoid(x: f32) -> f32 {
|
|
67
|
+
let t = max(1.0 - abs(0.5 * x), 0.0);
|
|
68
|
+
return 0.5 * (1.0 + sign(x) * (1.0 - t * t));
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// geometric hue in degrees, [0, 360]; 0 for a neutral
|
|
72
|
+
fn ue_film_hue(rgb: vec3<f32>) -> f32 {
|
|
73
|
+
if (rgb.r == rgb.g && rgb.g == rgb.b) {
|
|
74
|
+
return 0.0;
|
|
75
|
+
}
|
|
76
|
+
var hue = atan2(1.7320508075688772 * (rgb.g - rgb.b), 2.0 * rgb.r - rgb.g - rgb.b) * 57.29577951308232;
|
|
77
|
+
if (hue < 0.0) {
|
|
78
|
+
hue += 360.0;
|
|
79
|
+
}
|
|
80
|
+
return clamp(hue, 0.0, 360.0);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// FilmToneMap: AP1 in, AP1 out
|
|
84
|
+
fn ue_film_tone_map(color_ap1: vec3<f32>) -> vec3<f32> {
|
|
85
|
+
var aces = UE_AP1_TO_AP0 * color_ap1;
|
|
86
|
+
|
|
87
|
+
// the reference rendering's glow
|
|
88
|
+
let saturation = ue_film_saturation(aces);
|
|
89
|
+
let yc = ue_film_yc(aces);
|
|
90
|
+
let s = ue_film_sigmoid((saturation - 0.4) / 0.2);
|
|
91
|
+
aces *= 1.0 + ue_film_glow(yc, 0.05 * s, 0.08);
|
|
92
|
+
|
|
93
|
+
// and its red modifier
|
|
94
|
+
var centered_hue = ue_film_hue(aces);
|
|
95
|
+
if (centered_hue > 180.0) {
|
|
96
|
+
centered_hue -= 360.0;
|
|
97
|
+
}
|
|
98
|
+
let hue_weight = smoothstep(0.0, 1.0, 1.0 - abs(2.0 * centered_hue / 135.0));
|
|
99
|
+
aces.r += hue_weight * hue_weight * saturation * (0.03 - aces.r) * (1.0 - 0.82);
|
|
100
|
+
|
|
101
|
+
var color = max(vec3<f32>(0.0), UE_AP0_TO_AP1 * aces);
|
|
102
|
+
|
|
103
|
+
// pre-desaturate
|
|
104
|
+
color = mix(vec3<f32>(dot(color, UE_AP1_LUMINANCE)), color, 0.96);
|
|
105
|
+
|
|
106
|
+
let toe_scale = 1.0 + UE_FILM_BLACK_CLIP - UE_FILM_TOE;
|
|
107
|
+
let shoulder_scale = 1.0 + UE_FILM_WHITE_CLIP - UE_FILM_SHOULDER;
|
|
108
|
+
|
|
109
|
+
// 0.18 in, 0.18 out, on the toe because the toe is under 0.8
|
|
110
|
+
let bt = (0.18 + UE_FILM_BLACK_CLIP) / toe_scale - 1.0;
|
|
111
|
+
let toe_match = log2(0.18) * 0.30102999566398120 - 0.5 * log((1.0 + bt) / (1.0 - bt)) * (toe_scale / UE_FILM_SLOPE);
|
|
112
|
+
let straight_match = (1.0 - UE_FILM_TOE) / UE_FILM_SLOPE - toe_match;
|
|
113
|
+
let shoulder_match = UE_FILM_SHOULDER / UE_FILM_SLOPE - straight_match;
|
|
114
|
+
|
|
115
|
+
// log10; the floor stands in for log10(0) = -inf, which the toe takes to 0 either way
|
|
116
|
+
let log_color = log2(max(color, vec3<f32>(1e-10))) * 0.30102999566398120;
|
|
117
|
+
|
|
118
|
+
let straight = UE_FILM_SLOPE * (log_color + straight_match);
|
|
119
|
+
|
|
120
|
+
var toe = -UE_FILM_BLACK_CLIP + (2.0 * toe_scale) / (1.0 + exp((-2.0 * UE_FILM_SLOPE / toe_scale) * (log_color - toe_match)));
|
|
121
|
+
var shoulder = (1.0 + UE_FILM_WHITE_CLIP) - (2.0 * shoulder_scale) / (1.0 + exp((2.0 * UE_FILM_SLOPE / shoulder_scale) * (log_color - shoulder_match)));
|
|
122
|
+
|
|
123
|
+
toe = select(straight, toe, log_color < vec3<f32>(toe_match));
|
|
124
|
+
shoulder = select(straight, shoulder, log_color > vec3<f32>(shoulder_match));
|
|
125
|
+
|
|
126
|
+
var t = saturate((log_color - toe_match) / (shoulder_match - toe_match));
|
|
127
|
+
if (shoulder_match < toe_match) {
|
|
128
|
+
t = 1.0 - t;
|
|
129
|
+
}
|
|
130
|
+
t = (3.0 - 2.0 * t) * t * t;
|
|
131
|
+
|
|
132
|
+
var tone = mix(toe, shoulder, t);
|
|
133
|
+
|
|
134
|
+
// post-desaturate
|
|
135
|
+
tone = mix(vec3<f32>(dot(tone, UE_AP1_LUMINANCE)), tone, 0.93);
|
|
136
|
+
|
|
137
|
+
return max(vec3<f32>(0.0), tone);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
fn tonemap_ue_filmic(color_rec709: vec3<f32>) -> vec3<f32> {
|
|
141
|
+
// the scene from zero up, as UE's LUT encodes it
|
|
142
|
+
var color = UE_REC709_TO_AP1 * max(color_rec709, vec3<f32>(0.0));
|
|
143
|
+
|
|
144
|
+
// Expand Gamut. Black has no chroma to expand, and UE's 0 / 0 there comes out as black too
|
|
145
|
+
let luma = dot(color, UE_AP1_LUMINANCE);
|
|
146
|
+
if (luma > 0.0) {
|
|
147
|
+
let chroma = color / luma - 1.0;
|
|
148
|
+
let amount = (1.0 - exp2(-4.0 * dot(chroma, chroma))) * (1.0 - exp2(-4.0 * UE_EXPAND_GAMUT_AMOUNT * luma * luma));
|
|
149
|
+
color = mix(color, UE_EXPAND_GAMUT * color, amount);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
// the colour corrections at their defaults
|
|
153
|
+
color = max(color, vec3<f32>(0.0));
|
|
154
|
+
|
|
155
|
+
color = mix(color, UE_BLUE_CORRECT * color, UE_BLUE_CORRECTION);
|
|
156
|
+
color = ue_film_tone_map(color);
|
|
157
|
+
color = mix(color, UE_BLUE_CORRECT_INVERSE * color, UE_BLUE_CORRECTION);
|
|
158
|
+
|
|
159
|
+
return min(max(vec3<f32>(0.0), UE_AP1_TO_REC709 * color), vec3<f32>(1.0));
|
|
160
|
+
}
|
|
161
|
+
`,
|
|
162
|
+
[chunk_aces_ue_matrices]
|
|
163
|
+
);
|
|
@@ -1,11 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The paper white, cd/m², for the CPU side of a pass that needs it: {@link chunk_PAPER_WHITE_NITS} is this number in
|
|
3
|
+
* WGSL.
|
|
4
|
+
*
|
|
5
|
+
* @type {number}
|
|
6
|
+
*/
|
|
7
|
+
export const PAPER_WHITE_NITS: number;
|
|
1
8
|
/**
|
|
2
9
|
* The luminance an exposed scene value of 1.0 is shown at, in cd/m², on every display and in every tone mapping mode.
|
|
3
10
|
* It is where the canvas puts SDR white: 1.0 on an SDR output, and 1.0 of extended Display P3 on an HDR one, so an HDR
|
|
4
11
|
* pass's headroom is the display's peak over this.
|
|
5
12
|
*
|
|
6
|
-
* The value is
|
|
7
|
-
*
|
|
8
|
-
*
|
|
13
|
+
* The value is ITU-R BT.2408's graphics white, 203. GT7's sample code assumes 250 (`GRAN_TURISMO_SDR_PAPER_WHITE`) and
|
|
14
|
+
* accepts no HDR peak below that. The GT7 passes give this to `tonemap_gt7` as the paper white, and the SDR pass also as
|
|
15
|
+
* the peak, which is the sample code's SDR mode. The ACES HDR pass expands its SDR picture by the headroom over it.
|
|
9
16
|
*
|
|
10
17
|
* It is one constant rather than an argument for each pass, so the SDR and HDR outputs cannot drift apart.
|
|
11
18
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk_PAPER_WHITE_NITS.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/shader/chunk/color/tonemap/chunk_PAPER_WHITE_NITS.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AACH,qCAFU,SAAS,CAOjB;
|
|
1
|
+
{"version":3,"file":"chunk_PAPER_WHITE_NITS.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/shader/chunk/color/tonemap/chunk_PAPER_WHITE_NITS.js"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,+BAFU,MAAM,CAEoB;AAEpC;;;;;;;;;;;;;GAaG;AACH,qCAFU,SAAS,CAOjB;0BA7BwB,gCAAgC"}
|
|
@@ -1,13 +1,21 @@
|
|
|
1
1
|
import { CodeChunk } from "../../../compiler/CodeChunk.js";
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* The paper white, cd/m², for the CPU side of a pass that needs it: {@link chunk_PAPER_WHITE_NITS} is this number in
|
|
5
|
+
* WGSL.
|
|
6
|
+
*
|
|
7
|
+
* @type {number}
|
|
8
|
+
*/
|
|
9
|
+
export const PAPER_WHITE_NITS = 203;
|
|
10
|
+
|
|
3
11
|
/**
|
|
4
12
|
* The luminance an exposed scene value of 1.0 is shown at, in cd/m², on every display and in every tone mapping mode.
|
|
5
13
|
* It is where the canvas puts SDR white: 1.0 on an SDR output, and 1.0 of extended Display P3 on an HDR one, so an HDR
|
|
6
14
|
* pass's headroom is the display's peak over this.
|
|
7
15
|
*
|
|
8
|
-
* The value is
|
|
9
|
-
*
|
|
10
|
-
*
|
|
16
|
+
* The value is ITU-R BT.2408's graphics white, 203. GT7's sample code assumes 250 (`GRAN_TURISMO_SDR_PAPER_WHITE`) and
|
|
17
|
+
* accepts no HDR peak below that. The GT7 passes give this to `tonemap_gt7` as the paper white, and the SDR pass also as
|
|
18
|
+
* the peak, which is the sample code's SDR mode. The ACES HDR pass expands its SDR picture by the headroom over it.
|
|
11
19
|
*
|
|
12
20
|
* It is one constant rather than an argument for each pass, so the SDR and HDR outputs cannot drift apart.
|
|
13
21
|
*
|
|
@@ -17,6 +25,6 @@ import { CodeChunk } from "../../../compiler/CodeChunk.js";
|
|
|
17
25
|
export const chunk_PAPER_WHITE_NITS = CodeChunk.from(
|
|
18
26
|
//language=WGSL
|
|
19
27
|
`
|
|
20
|
-
const PAPER_WHITE_NITS: f32 =
|
|
28
|
+
const PAPER_WHITE_NITS: f32 = ${PAPER_WHITE_NITS};
|
|
21
29
|
`
|
|
22
30
|
);
|
|
@@ -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"}
|