@woosh/meep-engine 3.41.0 → 3.43.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/build/bundle-worker-image-decoder.js +1 -1
- package/build/bundle-worker-terrain.js +1 -1
- package/editor/selection/editor_pick.d.ts.map +1 -1
- package/editor/selection/editor_pick.js +2 -1
- package/editor/tools/TransformToolV2.d.ts.map +1 -1
- package/editor/tools/TransformToolV2.js +7 -1
- package/editor/tools/engine/ToolEngine.d.ts.map +1 -1
- package/editor/tools/engine/ToolEngine.js +10 -0
- package/editor/tools/v2/TransformControls.d.ts.map +1 -1
- package/editor/tools/v2/TransformControls.js +7 -20
- package/editor/tools/v2/handle/gizmo_drag_plane.d.ts.map +1 -1
- package/editor/tools/v2/handle/gizmo_drag_plane.js +4 -0
- package/editor/view/ecs/EntityEditor.d.ts.map +1 -1
- package/editor/view/ecs/EntityEditor.js +3 -1
- package/editor/view/node-graph/NodeGraphView.d.ts.map +1 -1
- package/editor/view/node-graph/NodeGraphView.js +28 -12
- package/package.json +91 -96
- package/samples/engine/first-scene/index.html +4 -1
- package/samples/engine/first-scene/main.js +14 -9
- package/src/core/binary/utf8/utf8_decode.js +3 -3
- package/src/core/bvh2/binary/2/bvh32_query_user_data_ray.d.ts.map +1 -1
- package/src/core/bvh2/binary/2/bvh32_query_user_data_ray.js +112 -113
- package/src/core/bvh2/bvh3/ebvh_nodes_sort_sah_local4.js +2 -2
- package/src/core/cache/wtinylfu/benchmark/CacheWTinylfu.bench.md +14 -14
- package/src/core/collection/RingBuffer.d.ts.map +1 -1
- package/src/core/collection/RingBuffer.js +4 -0
- package/src/core/collection/array/array_contains_duplicates.d.ts.map +1 -1
- package/src/core/collection/array/array_contains_duplicates.js +2 -1
- package/src/core/collection/array/array_copy.d.ts.map +1 -1
- package/src/core/collection/array/array_copy.js +23 -0
- package/src/core/collection/array/typed/sparse_typed_array_hash.d.ts +2 -2
- package/src/core/collection/array/typed/sparse_typed_array_hash.d.ts.map +1 -1
- package/src/core/collection/array/typed/sparse_typed_array_hash.js +9 -8
- package/src/core/collection/array/typed/uint16_array_hash.d.ts +2 -2
- package/src/core/collection/array/typed/uint16_array_hash.js +4 -4
- package/src/core/collection/array/typed/uint8_array_hash.d.ts +2 -2
- package/src/core/collection/array/typed/uint8_array_hash.js +4 -4
- package/src/core/collection/array/weightedRandomFromArray.d.ts +1 -0
- package/src/core/collection/array/weightedRandomFromArray.d.ts.map +1 -1
- package/src/core/collection/array/weightedRandomFromArray.js +9 -1
- package/src/core/collection/heap/BinaryHeap.d.ts.map +1 -1
- package/src/core/collection/heap/BinaryHeap.js +4 -0
- package/src/core/collection/list/List.d.ts.map +1 -1
- package/src/core/collection/list/List.js +4 -2
- package/src/core/collection/set/ArraySet.js +1 -1
- package/src/core/collection/set/HashSet.d.ts +1 -1
- package/src/core/collection/set/HashSet.d.ts.map +1 -1
- package/src/core/collection/set/HashSet.js +4 -2
- package/src/core/debug/matchers/IsEqual.js +1 -1
- package/src/core/debug/matchers/IsIterableContaining.d.ts.map +1 -1
- package/src/core/debug/matchers/IsIterableContaining.js +61 -74
- package/src/core/events/signal/SignalBinding.js +101 -101
- package/src/core/function/extractFunctionBody.js +13 -13
- package/src/core/function/objectsEqual.d.ts.map +1 -1
- package/src/core/function/objectsEqual.js +15 -14
- package/src/core/geom/3d/frustum/frustum3_compute_closest_point.d.ts.map +1 -1
- package/src/core/geom/3d/frustum/frustum3_compute_closest_point.js +207 -172
- package/src/core/geom/3d/gjk/gjk_epa_penetration.d.ts.map +1 -1
- package/src/core/geom/3d/gjk/gjk_epa_penetration.js +5 -4
- package/src/core/geom/3d/line/line3_compute_segment_point_distance_eikonal.d.ts.map +1 -1
- package/src/core/geom/3d/line/line3_compute_segment_point_distance_eikonal.js +8 -2
- package/src/core/geom/3d/triangle/tri3_ray_intersection.d.ts +20 -0
- package/src/core/geom/3d/triangle/tri3_ray_intersection.d.ts.map +1 -1
- package/src/core/geom/3d/triangle/tri3_ray_intersection.js +182 -0
- package/src/core/math/noise/curl_noise_3dt.d.ts.map +1 -1
- package/src/core/math/noise/curl_noise_3dt.js +20 -10
- package/src/core/math/noise/sdnoise.d.ts +16 -5
- package/src/core/math/noise/sdnoise.d.ts.map +1 -1
- package/src/core/math/noise/sdnoise.js +43 -9
- package/src/core/math/spline/spline3_hermite_nearest_point.d.ts +16 -1
- package/src/core/math/spline/spline3_hermite_nearest_point.d.ts.map +1 -1
- package/src/core/math/spline/spline3_hermite_nearest_point.js +44 -3
- package/src/engine/Engine.d.ts.map +1 -1
- package/src/engine/Engine.js +6 -2
- package/src/engine/control/first-person/FirstPersonPlayerController.d.ts +9 -0
- package/src/engine/control/first-person/FirstPersonPlayerController.d.ts.map +1 -1
- package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.d.ts +26 -0
- package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.d.ts.map +1 -1
- package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.js +2 -0
- package/src/engine/control/first-person/abilities/AbilitySet.d.ts.map +1 -1
- package/src/engine/control/first-person/abilities/AbilitySet.js +9 -0
- package/src/engine/control/first-person/abilities/LedgeGrab.d.ts.map +1 -1
- package/src/engine/control/first-person/abilities/LedgeGrab.js +6 -0
- package/src/engine/control/first-person/abilities/Slide.d.ts.map +1 -1
- package/src/engine/control/first-person/abilities/Slide.js +1 -0
- package/src/engine/control/first-person/abilities/WallRun.d.ts +4 -1
- package/src/engine/control/first-person/abilities/WallRun.d.ts.map +1 -1
- package/src/engine/control/first-person/abilities/WallRun.js +13 -1
- package/src/engine/control/first-person/mastery/SlideInitiationTimingEvaluator.d.ts +1 -1
- package/src/engine/control/first-person/mastery/SlideInitiationTimingEvaluator.d.ts.map +1 -1
- package/src/engine/control/first-person/mastery/SlideInitiationTimingEvaluator.js +6 -5
- package/src/engine/control/first-person/mastery/StrideTimingJumpEvaluator.d.ts +3 -3
- package/src/engine/control/first-person/mastery/StrideTimingJumpEvaluator.d.ts.map +1 -1
- package/src/engine/control/first-person/mastery/StrideTimingJumpEvaluator.js +9 -8
- package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.d.ts.map +1 -1
- package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.js +13 -4
- package/src/engine/ecs/EntityManager.d.ts.map +1 -1
- package/src/engine/ecs/EntityManager.js +18 -15
- package/src/engine/ecs/dynamic_actions/rules/DynamicRuleDescription.d.ts.map +1 -1
- package/src/engine/ecs/dynamic_actions/rules/DynamicRuleDescription.js +2 -1
- package/src/engine/ecs/dynamic_actions/rules/DynamicRuleDescriptionTable.d.ts.map +1 -1
- package/src/engine/ecs/dynamic_actions/rules/DynamicRuleDescriptionTable.js +1 -0
- package/src/engine/ecs/fow/FogOfWarRevealerSystem.d.ts.map +1 -1
- package/src/engine/ecs/fow/FogOfWarRevealerSystem.js +3 -0
- package/src/engine/ecs/parent/EntityNode.js +3 -3
- package/src/engine/ecs/speaker/VoiceSystem.d.ts.map +1 -1
- package/src/engine/ecs/speaker/VoiceSystem.js +4 -0
- package/src/engine/ecs/storage/BinaryBufferDeSerializer.js +5 -5
- package/src/engine/ecs/storage/binary/BinarySerializationRegistry.d.ts.map +1 -1
- package/src/engine/ecs/storage/binary/BinarySerializationRegistry.js +3 -2
- package/src/engine/ecs/storage/binary/object/BinaryObjectSerializationAdapter2.js +1 -1
- package/src/engine/ecs/storage/binary/object-v2/BinaryObjectDeSerializer.d.ts.map +1 -1
- package/src/engine/ecs/storage/binary/object-v2/BinaryObjectDeSerializer.js +8 -1
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.d.ts.map +1 -1
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.js +8 -0
- package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSystem.d.ts.map +1 -1
- package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSystem.js +5 -2
- package/src/engine/ecs/terrain/ecs/layers/TerrainLayers.d.ts.map +1 -1
- package/src/engine/ecs/terrain/ecs/layers/TerrainLayers.js +3 -0
- package/src/engine/ecs/terrain/ecs/splat/SplatMapping.d.ts.map +1 -1
- package/src/engine/ecs/terrain/ecs/splat/SplatMapping.js +1 -0
- package/src/engine/ecs/terrain/overlay/TerrainOverlay.js +1 -1
- package/src/engine/ecs/terrain/tiles/TerrainTile.d.ts.map +1 -1
- package/src/engine/ecs/terrain/tiles/TerrainTile.js +13 -1
- package/src/engine/ecs/terrain/tiles/TerrainTileManager.d.ts.map +1 -1
- package/src/engine/ecs/terrain/tiles/TerrainTileManager.js +1 -0
- package/src/engine/graphics/ecs/light/LightSerializationAdapter.d.ts.map +1 -1
- package/src/engine/graphics/ecs/light/LightSerializationAdapter.js +13 -1
- package/src/engine/graphics/ecs/light/LightSerializationUpgrader_0_1.d.ts +5 -0
- package/src/engine/graphics/ecs/light/LightSerializationUpgrader_0_1.d.ts.map +1 -0
- package/src/engine/graphics/ecs/light/LightSerializationUpgrader_0_1.js +27 -0
- package/src/engine/graphics/ecs/water/Water.d.ts +11 -0
- package/src/engine/graphics/ecs/water/Water.d.ts.map +1 -1
- package/src/engine/graphics/ecs/water/Water.js +17 -0
- package/src/engine/graphics/ecs/water/WaterSerializationAdapter.d.ts.map +1 -1
- package/src/engine/graphics/ecs/water/WaterSerializationAdapter.js +3 -1
- package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_4_5.d.ts +9 -0
- package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_4_5.d.ts.map +1 -0
- package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_4_5.js +24 -0
- package/src/engine/graphics/ecs/water/WaterWaves.d.ts +30 -9
- package/src/engine/graphics/ecs/water/WaterWaves.d.ts.map +1 -1
- package/src/engine/graphics/ecs/water/WaterWaves.js +41 -9
- package/src/engine/graphics/ecs/water/WaterWavesSerializationAdapter.d.ts.map +1 -1
- package/src/engine/graphics/ecs/water/WaterWavesSerializationAdapter.js +30 -26
- package/src/engine/graphics/ecs/water/WaterWavesSerializationUpgrader_0_1.d.ts +6 -0
- package/src/engine/graphics/ecs/water/WaterWavesSerializationUpgrader_0_1.d.ts.map +1 -0
- package/src/engine/graphics/ecs/water/WaterWavesSerializationUpgrader_0_1.js +22 -0
- package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_raycast.d.ts.map +1 -1
- package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_raycast.js +3 -5
- package/src/engine/graphics/texture/3d/scs3d_sample_linear3.d.ts +20 -0
- package/src/engine/graphics/texture/3d/scs3d_sample_linear3.d.ts.map +1 -1
- package/src/engine/graphics/texture/3d/scs3d_sample_linear3.js +36 -0
- package/src/engine/graphics3/WaterSystem.d.ts +12 -3
- package/src/engine/graphics3/WaterSystem.d.ts.map +1 -1
- package/src/engine/graphics3/WaterSystem.js +78 -46
- package/src/engine/input/devices/PointerDevice.d.ts.map +1 -1
- package/src/engine/input/devices/PointerDevice.js +29 -4
- package/src/engine/intelligence/behavior/selector/WeightedRandomBehavior.d.ts +1 -0
- package/src/engine/intelligence/behavior/selector/WeightedRandomBehavior.d.ts.map +1 -1
- package/src/engine/intelligence/behavior/selector/WeightedRandomBehavior.js +14 -3
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.js +12 -3
- package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.js +8 -2
- package/src/engine/physics/fluid/solver/v3_grid_sample_scalar_masked.d.ts +19 -0
- package/src/engine/physics/fluid/solver/v3_grid_sample_scalar_masked.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_grid_sample_scalar_masked.js +41 -2
- package/src/engine/physics/fluid/solver/v3_mac_advect_scalar.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_mac_advect_scalar.js +9 -3
- package/src/engine/physics/fluid/solver/v3_mac_advect_sl_velocity.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_mac_advect_sl_velocity.js +26 -10
- package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.d.ts +3 -6
- package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.js +22 -9
- package/src/engine/ui/DraggableAspect.d.ts +5 -1
- package/src/engine/ui/DraggableAspect.d.ts.map +1 -1
- package/src/engine/ui/DraggableAspect.js +61 -4
- package/src/format/image/avif/heif/ItemProperty.d.ts +1 -1
- package/src/format/image/avif/heif/ItemProperty.js +1 -1
- package/src/format/image/png/chunk/png_chunk_decode_iTXt.d.ts.map +1 -1
- package/src/format/image/png/chunk/png_chunk_decode_iTXt.js +17 -6
- package/src/shade/device/mock/SoftwareGPUDevice.d.ts +2 -4
- package/src/shade/device/mock/SoftwareGPUDevice.d.ts.map +1 -1
- package/src/shade/device/mock/SoftwareGPUDevice.js +20 -13
- package/src/shade/playground/skinned_blas_refit/sweep_views.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/sweep_views.js +2 -1
- package/src/shade/playground/vgeo_runtime/README.md +5 -4
- package/src/shade/playground/water_refraction/README.md +10 -11
- package/src/shade/playground/water_refraction/main.js +9 -8
- package/src/shade/playground/water_refraction/world.js +1 -1
- package/src/shade/playground/water_surface/README.md +43 -0
- package/src/shade/playground/water_surface/index.html +30 -0
- package/src/shade/playground/water_surface/main.d.ts +2 -0
- package/src/shade/playground/water_surface/main.d.ts.map +1 -0
- package/src/shade/playground/water_surface/main.js +154 -0
- package/src/shade/playground/water_surface/world.d.ts +44 -0
- package/src/shade/playground/water_surface/world.d.ts.map +1 -0
- package/src/shade/playground/water_surface/world.js +160 -0
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +6 -5
- package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js +5 -0
- package/src/shade/renderer/atmosphere/GPUSky.d.ts +12 -0
- package/src/shade/renderer/atmosphere/GPUSky.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/GPUSky.js +162 -147
- package/src/shade/renderer/binding/BufferBinding.js +2 -2
- package/src/shade/renderer/buffer/table/GPUTypedTable.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/GPUTypedTable.js +5 -3
- package/src/shade/renderer/buffer/table/GPUTypedTableDescriptor.d.ts +10 -3
- package/src/shade/renderer/buffer/table/GPUTypedTableDescriptor.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/GPUTypedTableDescriptor.js +17 -9
- package/src/shade/renderer/camera/orbital/OrbitalCameraInput.d.ts +3 -0
- package/src/shade/renderer/camera/orbital/OrbitalCameraInput.d.ts.map +1 -1
- package/src/shade/renderer/camera/orbital/OrbitalCameraInput.js +16 -0
- package/src/shade/renderer/camera/orbital/OrbitalCameraRig.d.ts +2 -0
- package/src/shade/renderer/camera/orbital/OrbitalCameraRig.d.ts.map +1 -1
- package/src/shade/renderer/camera/orbital/OrbitalCameraRig.js +11 -0
- package/src/shade/renderer/geometry/meshlet/build/meshoptimizer/geometry_to_meshlets_meshoptimizer.d.ts +1 -1
- package/src/shade/renderer/geometry/meshlet/build/meshoptimizer/geometry_to_meshlets_meshoptimizer.d.ts.map +1 -1
- package/src/shade/renderer/geometry/meshlet/build/meshoptimizer/geometry_to_meshlets_meshoptimizer.js +9 -3
- package/src/shade/renderer/geometry/util/geometry_simplify_redundant_topology.d.ts.map +1 -1
- package/src/shade/renderer/geometry/util/geometry_simplify_redundant_topology.js +2 -2
- package/src/shade/renderer/geometry/virtual/format/vgeo_validate_container.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/vgeo_validate_container.js +85 -0
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.js +12 -6
- package/src/shade/renderer/geometry/virtual/runtime/VGeoPageFetcher.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/VGeoPageFetcher.js +7 -0
- package/src/shade/renderer/geometry/virtual/runtime/VGeoRuntimeTables.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/VGeoRuntimeTables.js +3 -1
- package/src/shade/renderer/lightmap/bake/shader_lightmap_denoise_sh.d.ts.map +1 -1
- package/src/shade/renderer/lightmap/bake/shader_lightmap_denoise_sh.js +10 -3
- package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
- package/src/shade/renderer/particles/DESIGN.md +13 -9
- package/src/shade/renderer/particles/shaders/chunk_particle_lighting.d.ts +1 -1
- package/src/shade/renderer/particles/shaders/chunk_particle_lighting.js +1 -1
- package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts +3 -2
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.js +3 -2
- package/src/shade/renderer/scene/GPUSceneContext.d.ts +9 -1
- package/src/shade/renderer/scene/GPUSceneContext.d.ts.map +1 -1
- package/src/shade/renderer/scene/GPUSceneContext.js +23 -1
- package/src/shade/renderer/scene/SCENE_DATABASE_SPEC.js +2 -1
- package/src/shade/renderer/shader/chunk/math/fft/chunk_fft128_inverse.d.ts +13 -0
- package/src/shade/renderer/shader/chunk/math/fft/chunk_fft128_inverse.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/math/fft/chunk_fft128_inverse.js +42 -0
- package/src/shade/renderer/shader/chunk/math/fft/chunk_fft128x4_inverse_workgroup.d.ts +15 -0
- package/src/shade/renderer/shader/chunk/math/fft/chunk_fft128x4_inverse_workgroup.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/math/fft/chunk_fft128x4_inverse_workgroup.js +39 -0
- package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.d.ts.map +1 -1
- package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.js +2 -0
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts +4 -1
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.js +74 -3
- package/src/shade/renderer/volumetrics/NOTES.md +1023 -957
- package/src/shade/renderer/volumetrics/chunk_volumetrics_irradiance_sh.d.ts +5 -4
- package/src/shade/renderer/volumetrics/chunk_volumetrics_irradiance_sh.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/chunk_volumetrics_irradiance_sh.js +5 -4
- package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi.d.ts +1 -1
- package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi.js +1 -1
- package/src/shade/renderer/volumetrics/gi/graph_build_froxel_gi.d.ts +1 -1
- package/src/shade/renderer/volumetrics/gi/graph_build_froxel_gi.js +1 -1
- package/src/shade/renderer/volumetrics/graph_build_froxel_irradiance.d.ts +41 -0
- package/src/shade/renderer/volumetrics/graph_build_froxel_irradiance.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/graph_build_froxel_irradiance.js +112 -0
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts +9 -23
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +18 -126
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_irradiance.d.ts +22 -0
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_irradiance.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_irradiance.js +228 -0
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.js +0 -53
- package/src/shade/renderer/water/GPUWaterRenderer.d.ts +15 -0
- package/src/shade/renderer/water/GPUWaterRenderer.d.ts.map +1 -1
- package/src/shade/renderer/water/GPUWaterRenderer.js +110 -30
- package/src/shade/renderer/water/medium/GPUWaterBodies.d.ts +16 -8
- package/src/shade/renderer/water/medium/GPUWaterBodies.d.ts.map +1 -1
- package/src/shade/renderer/water/medium/GPUWaterBodies.js +31 -26
- package/src/shade/renderer/water/medium/shader_water_meshlets.d.ts +0 -1
- package/src/shade/renderer/water/medium/shader_water_meshlets.d.ts.map +1 -1
- package/src/shade/renderer/water/medium/shader_water_meshlets.js +1 -39
- package/src/shade/renderer/water/shader_water.d.ts +0 -1
- package/src/shade/renderer/water/shader_water.d.ts.map +1 -1
- package/src/shade/renderer/water/shader_water.js +201 -72
- package/src/shade/renderer/water/surface/GPUWaterSurface.d.ts +70 -0
- package/src/shade/renderer/water/surface/GPUWaterSurface.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/GPUWaterSurface.js +199 -0
- package/src/shade/renderer/water/surface/WATER_WAVE_RECORD_STRUCT.d.ts +5 -2
- package/src/shade/renderer/water/surface/WATER_WAVE_RECORD_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/water/surface/WATER_WAVE_RECORD_STRUCT.js +32 -12
- package/src/shade/renderer/water/surface/chunk_water_surface_sample.d.ts +23 -0
- package/src/shade/renderer/water/surface/chunk_water_surface_sample.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/chunk_water_surface_sample.js +227 -0
- package/src/shade/renderer/water/surface/graph_water_tessellation.d.ts +65 -11
- package/src/shade/renderer/water/surface/graph_water_tessellation.d.ts.map +1 -1
- package/src/shade/renderer/water/surface/graph_water_tessellation.js +163 -28
- package/src/shade/renderer/water/surface/lod/WATER_LOD.d.ts +51 -0
- package/src/shade/renderer/water/surface/lod/WATER_LOD.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/lod/WATER_LOD.js +95 -0
- package/src/shade/renderer/water/surface/lod/chunk_water_lod.d.ts +10 -0
- package/src/shade/renderer/water/surface/lod/chunk_water_lod.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/lod/chunk_water_lod.js +127 -0
- package/src/shade/renderer/water/surface/lod/chunk_water_lod_cell.d.ts +17 -0
- package/src/shade/renderer/water/surface/lod/chunk_water_lod_cell.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/lod/chunk_water_lod_cell.js +246 -0
- package/src/shade/renderer/water/surface/lod/shader_water_lod.d.ts +118 -0
- package/src/shade/renderer/water/surface/lod/shader_water_lod.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/lod/shader_water_lod.js +727 -0
- package/src/shade/renderer/water/surface/particles/GPUWaterParticles.d.ts +60 -0
- package/src/shade/renderer/water/surface/particles/GPUWaterParticles.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/particles/GPUWaterParticles.js +274 -0
- package/src/shade/renderer/water/surface/particles/WATER_PARTICLE_STRUCT.d.ts +17 -0
- package/src/shade/renderer/water/surface/particles/WATER_PARTICLE_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/particles/WATER_PARTICLE_STRUCT.js +57 -0
- package/src/shade/renderer/water/surface/particles/chunk_water_particle.d.ts +43 -0
- package/src/shade/renderer/water/surface/particles/chunk_water_particle.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/particles/chunk_water_particle.js +268 -0
- package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.d.ts +20 -0
- package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.js +239 -0
- package/src/shade/renderer/water/surface/particles/shader_water_particles.d.ts +153 -0
- package/src/shade/renderer/water/surface/particles/shader_water_particles.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/particles/shader_water_particles.js +874 -0
- package/src/shade/renderer/water/surface/shader_water_cull.d.ts +42 -0
- package/src/shade/renderer/water/surface/shader_water_cull.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/shader_water_cull.js +269 -0
- package/src/shade/renderer/water/surface/shader_water_waves_combine.d.ts +15 -0
- package/src/shade/renderer/water/surface/shader_water_waves_combine.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/shader_water_waves_combine.js +73 -0
- package/src/shade/renderer/water/surface/shader_water_waves_derive.d.ts +11 -0
- package/src/shade/renderer/water/surface/shader_water_waves_derive.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/shader_water_waves_derive.js +78 -0
- package/src/shade/renderer/water/surface/spectrum/GPUWaterSpectrum.d.ts +35 -0
- package/src/shade/renderer/water/surface/spectrum/GPUWaterSpectrum.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/spectrum/GPUWaterSpectrum.js +103 -0
- package/src/shade/renderer/water/surface/spectrum/WATER_BAND_STATE.d.ts +22 -0
- package/src/shade/renderer/water/surface/spectrum/WATER_BAND_STATE.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/spectrum/WATER_BAND_STATE.js +57 -0
- package/src/shade/renderer/water/surface/spectrum/WATER_SPECTRUM.d.ts +22 -0
- package/src/shade/renderer/water/surface/spectrum/WATER_SPECTRUM.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/spectrum/WATER_SPECTRUM.js +25 -0
- package/src/shade/renderer/water/surface/spectrum/chunk_water_jonswap.d.ts +14 -0
- package/src/shade/renderer/water/surface/spectrum/chunk_water_jonswap.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/spectrum/chunk_water_jonswap.js +48 -0
- package/src/shade/renderer/water/surface/spectrum/chunk_water_spectrum.d.ts +23 -0
- package/src/shade/renderer/water/surface/spectrum/chunk_water_spectrum.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/spectrum/chunk_water_spectrum.js +169 -0
- package/src/shade/renderer/water/surface/spectrum/shader_water_spectrum.d.ts +26 -0
- package/src/shade/renderer/water/surface/spectrum/shader_water_spectrum.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/spectrum/shader_water_spectrum.js +161 -0
- package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.d.ts.map +1 -1
- package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +29 -9
- package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
- package/src/shade/wgsl/emulator/WGSLLanguageCore.js +14 -3
- package/src/core/geom/2d/polygon/polygon2_triangulate.corpus.d.ts +0 -28
- package/src/core/geom/2d/polygon/polygon2_triangulate.corpus.d.ts.map +0 -1
- package/src/core/geom/2d/polygon/polygon2_triangulate.corpus.js +0 -86
- package/src/engine/ecs/storage/binary/object-v2/serializerTestHarness.d.ts +0 -29
- package/src/engine/ecs/storage/binary/object-v2/serializerTestHarness.d.ts.map +0 -1
- package/src/engine/ecs/storage/binary/object-v2/serializerTestHarness.js +0 -44
- package/src/shade/renderer/water/medium/shader_water_bodies_derive.d.ts +0 -4
- package/src/shade/renderer/water/medium/shader_water_bodies_derive.d.ts.map +0 -1
- package/src/shade/renderer/water/medium/shader_water_bodies_derive.js +0 -32
- package/src/shade/renderer/water/surface/GPUWaterWaveSimulation.d.ts +0 -25
- package/src/shade/renderer/water/surface/GPUWaterWaveSimulation.d.ts.map +0 -1
- package/src/shade/renderer/water/surface/GPUWaterWaveSimulation.js +0 -128
- package/src/shade/renderer/water/surface/chunk_water_tessellation.d.ts +0 -9
- package/src/shade/renderer/water/surface/chunk_water_tessellation.d.ts.map +0 -1
- package/src/shade/renderer/water/surface/chunk_water_tessellation.js +0 -144
- package/src/shade/renderer/water/surface/chunk_water_wave.d.ts +0 -13
- package/src/shade/renderer/water/surface/chunk_water_wave.d.ts.map +0 -1
- package/src/shade/renderer/water/surface/chunk_water_wave.js +0 -40
- package/src/shade/renderer/water/surface/shader_water_tiles.d.ts +0 -4
- package/src/shade/renderer/water/surface/shader_water_tiles.d.ts.map +0 -1
- package/src/shade/renderer/water/surface/shader_water_tiles.js +0 -123
- package/src/shade/renderer/water/surface/shader_water_wave_batch.d.ts +0 -6
- package/src/shade/renderer/water/surface/shader_water_wave_batch.d.ts.map +0 -1
- package/src/shade/renderer/water/surface/shader_water_wave_batch.js +0 -85
- package/src/shade/renderer/water/surface/shader_water_wave_domain.d.ts +0 -6
- package/src/shade/renderer/water/surface/shader_water_wave_domain.d.ts.map +0 -1
- package/src/shade/renderer/water/surface/shader_water_wave_domain.js +0 -83
|
@@ -302,6 +302,8 @@ function classifyType(ident, args, template_list_node) {
|
|
|
302
302
|
// template arg 0 is the element type (sub-template), arg 1 is the count
|
|
303
303
|
let element = T_UNKNOWN;
|
|
304
304
|
let count = -1;
|
|
305
|
+
// a count named by a module constant is read from that constant when a value is made
|
|
306
|
+
let count_name = null;
|
|
305
307
|
if (template_list_node !== null) {
|
|
306
308
|
const comma_list = namedChildByType(template_list_node, 'template_arg_comma_list');
|
|
307
309
|
if (comma_list !== null) {
|
|
@@ -312,12 +314,14 @@ function classifyType(ident, args, template_list_node) {
|
|
|
312
314
|
element = parseTypeSpecifier(inner_expr);
|
|
313
315
|
}
|
|
314
316
|
if (arg_nodes.length > 1) {
|
|
315
|
-
const
|
|
317
|
+
const text = arg_nodes[1].text.trim();
|
|
318
|
+
const c = parseInt(text);
|
|
316
319
|
if (!isNaN(c)) count = c;
|
|
320
|
+
else if (/^[A-Za-z_][A-Za-z0-9_]*$/.test(text)) count_name = text;
|
|
317
321
|
}
|
|
318
322
|
}
|
|
319
323
|
}
|
|
320
|
-
return { kind: 'array', element, count };
|
|
324
|
+
return count_name === null ? { kind: 'array', element, count } : { kind: 'array', element, count, count_name };
|
|
321
325
|
}
|
|
322
326
|
if (ident === 'atomic') {
|
|
323
327
|
const inner = args.length > 0 ? args[0] : 'i32';
|
|
@@ -843,14 +847,16 @@ function defaultValueForType(type) {
|
|
|
843
847
|
case 'mat':
|
|
844
848
|
return `new Float32Array(${type.cols * type.rows})`;
|
|
845
849
|
case 'array': {
|
|
846
|
-
|
|
850
|
+
const length = type.count > 0 ? String(type.count)
|
|
851
|
+
: type.count_name !== undefined ? `Number(${identToJs(type.count_name)})` : null;
|
|
852
|
+
if (length !== null) {
|
|
847
853
|
if (type.element.kind === 'primitive') {
|
|
848
854
|
const ctor = arrayCtorForScalar(type.element.name);
|
|
849
|
-
return `new ${ctor}(${
|
|
855
|
+
return `new ${ctor}(${length})`;
|
|
850
856
|
}
|
|
851
857
|
// For non-primitive elements (vec / mat / struct / nested array) build the
|
|
852
858
|
// array eagerly so `out[i]` is a fresh, mutable element rather than `undefined`.
|
|
853
|
-
return `Array.from({ length: ${
|
|
859
|
+
return `Array.from({ length: ${length} }, () => ${defaultValueForType(type.element)})`;
|
|
854
860
|
}
|
|
855
861
|
return '[]';
|
|
856
862
|
}
|
|
@@ -1485,7 +1491,8 @@ function emitVariableUpdatingStatement(c, node) {
|
|
|
1485
1491
|
|| isScalarUnsigned(lhs_compiled.type)
|
|
1486
1492
|
|| isScalarUnsigned(rhs_compiled.type)
|
|
1487
1493
|
)) {
|
|
1488
|
-
c.out.add(emitWriteStatement(lhs_compiled,
|
|
1494
|
+
c.out.add(emitWriteStatement(lhs_compiled,
|
|
1495
|
+
`wgsl.${shiftHelperFor(bitwise_helper, lhs_compiled.type)}(${lhs_compiled.code}, ${rhs_compiled.code})`));
|
|
1489
1496
|
return;
|
|
1490
1497
|
}
|
|
1491
1498
|
c.out.add(`${lhs_compiled.code} ${op_text} ${rhs_compiled.code};`);
|
|
@@ -2149,14 +2156,15 @@ function compileBinaryExpression(c, node, op_type, mode) {
|
|
|
2149
2156
|
// bit set was negative too. The helpers normalise with `>>> 0`, which is what WGSL u32 means.
|
|
2150
2157
|
//
|
|
2151
2158
|
// Deliberately not extended to i32: `bit_and` and friends return an unsigned result, and a
|
|
2152
|
-
// signed operand is exactly the case raw JS already gets right.
|
|
2159
|
+
// signed operand is exactly the case raw JS already gets right. A shift is the exception: WGSL
|
|
2160
|
+
// makes its amount a u32 whatever it shifts, so an i32 shift lands here and takes the signed helper.
|
|
2153
2161
|
const bitwise_helper = BITWISE_HELPER[op_text];
|
|
2154
2162
|
if (bitwise_helper !== undefined) {
|
|
2155
2163
|
if (isContainerType(left.type) || isContainerType(right.type)
|
|
2156
2164
|
|| isScalarBool(left.type) || isScalarBool(right.type)
|
|
2157
2165
|
|| isScalarUnsigned(left.type) || isScalarUnsigned(right.type)) {
|
|
2158
2166
|
return {
|
|
2159
|
-
code: `wgsl.${bitwise_helper}(${left.code}, ${right.code})`,
|
|
2167
|
+
code: `wgsl.${shiftHelperFor(bitwise_helper, left.type)}(${left.code}, ${right.code})`,
|
|
2160
2168
|
type: inferRawBinaryResultType(left.type, right.type, op_text),
|
|
2161
2169
|
};
|
|
2162
2170
|
}
|
|
@@ -2187,6 +2195,12 @@ const BITWISE_HELPER = {
|
|
|
2187
2195
|
'>>': 'shr',
|
|
2188
2196
|
};
|
|
2189
2197
|
|
|
2198
|
+
/** The helper for a bitwise operator on a value of type `t`: a shift of an i32 (scalar or vector) keeps its sign. */
|
|
2199
|
+
function shiftHelperFor(helper, t) {
|
|
2200
|
+
if ((helper === 'shl' || helper === 'shr') && isIntegerType(t) && integerScalarName(t) === 'i32') { return `${helper}_i32`; }
|
|
2201
|
+
return helper;
|
|
2202
|
+
}
|
|
2203
|
+
|
|
2190
2204
|
/** Map WGSL comparison operators to language-core element-wise helper names. */
|
|
2191
2205
|
const COMPARISON_HELPER = {
|
|
2192
2206
|
'==': 'eq',
|
|
@@ -2727,7 +2741,13 @@ function compileCallPhraseTyped(c, node) {
|
|
|
2727
2741
|
|
|
2728
2742
|
// 6) array / array<T, N> constructor.
|
|
2729
2743
|
if (callee_name === 'array') {
|
|
2730
|
-
|
|
2744
|
+
// The element type is what makes a member or swizzle on an element read compile; without
|
|
2745
|
+
// a template, it is the first argument's, as WGSL infers it.
|
|
2746
|
+
let type = parseTypeSpecifier(ident_node);
|
|
2747
|
+
if ((type.kind !== 'array' || type.element === T_UNKNOWN) && arg_results.length > 0 && !isAbstractType(arg_results[0].type)) {
|
|
2748
|
+
type = { kind: 'array', element: arg_results[0].type, count: arg_results.length };
|
|
2749
|
+
}
|
|
2750
|
+
return { code: `[${stored_args.join(', ')}]`, type };
|
|
2731
2751
|
}
|
|
2732
2752
|
|
|
2733
2753
|
// 7) Struct constructor.
|
|
@@ -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":";IAy/CA;;;;;;;;;;;;;;OAcG;IACH,+DAmDC"}
|
|
@@ -586,6 +586,9 @@ export const WGSLLanguageCore = {
|
|
|
586
586
|
bit_xor: (a, b) => binop(a, b, (x, y) => typeof x === 'boolean' ? x !== y : (x ^ y) >>> 0),
|
|
587
587
|
shl: (a, b) => binop(a, b, (x, y) => (x << y) >>> 0),
|
|
588
588
|
shr: (a, b) => binop(a, b, (x, y) => x >>> y),
|
|
589
|
+
// The same on an i32, whose shift amount WGSL still makes a u32: `>>` sign-extends, and both stay signed.
|
|
590
|
+
shl_i32: (a, b) => binop(a, b, (x, y) => (x << y) | 0),
|
|
591
|
+
shr_i32: (a, b) => binop(a, b, (x, y) => x >> y),
|
|
589
592
|
|
|
590
593
|
neg: (a) => unop(a, x => -x),
|
|
591
594
|
not: (a) => unop(a, x => (~x) >>> 0),
|
|
@@ -1265,17 +1268,25 @@ export const WGSLLanguageCore = {
|
|
|
1265
1268
|
* silently dropped (WGSL semantics). `coords` length matches the
|
|
1266
1269
|
* texture dimensionality.
|
|
1267
1270
|
*
|
|
1271
|
+
* Four arguments is the `texture_storage_2d_array` form — `(t, coords, array_index, value)` —
|
|
1272
|
+
* where the third argument selects the slice, stored along z as the sampling side reads it.
|
|
1273
|
+
*
|
|
1268
1274
|
* @param {import("./CPUBitmapData.js").CPUBitmapData} t
|
|
1269
1275
|
* @param {Int32Array | Uint32Array | number[] | number} coords
|
|
1270
|
-
* @param {Float32Array | Int32Array | Uint32Array | number[]}
|
|
1276
|
+
* @param {Float32Array | Int32Array | Uint32Array | number[] | number} value_or_index
|
|
1277
|
+
* @param {Float32Array | Int32Array | Uint32Array | number[]} [array_value]
|
|
1271
1278
|
*/
|
|
1272
|
-
textureStore(t, coords,
|
|
1279
|
+
textureStore(t, coords, value_or_index, array_value = undefined) {
|
|
1273
1280
|
assert.defined(t, 'texture');
|
|
1281
|
+
if (array_value !== undefined) {
|
|
1282
|
+
t.write(coords[0] | 0, coords[1] | 0, value_or_index | 0, array_value);
|
|
1283
|
+
return;
|
|
1284
|
+
}
|
|
1274
1285
|
const dim = t.dimensionality;
|
|
1275
1286
|
const x = (dim >= 1 ? (typeof coords === 'number' ? coords : coords[0]) : 0) | 0;
|
|
1276
1287
|
const y = (dim >= 2 ? coords[1] : 0) | 0;
|
|
1277
1288
|
const z = (dim >= 3 ? coords[2] : 0) | 0;
|
|
1278
|
-
t.write(x, y, z,
|
|
1289
|
+
t.write(x, y, z, value_or_index);
|
|
1279
1290
|
},
|
|
1280
1291
|
|
|
1281
1292
|
// CPUBitmapData models one stored mip level.
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Inputs that have actually broken {@link polygon2_triangulate}, kept so they can
|
|
3
|
-
* never break it again.
|
|
4
|
-
*
|
|
5
|
-
* This file only ever grows, and only from real failures -- a case someone
|
|
6
|
-
* *imagines* might be hard belongs in the ordinary spec, not here. Every entry
|
|
7
|
-
* records what went wrong when it was added, because that is the part that stops
|
|
8
|
-
* a future change from quietly reintroducing the same class of bug. The practice
|
|
9
|
-
* is borrowed from manifold, whose triangulator carries ~3 MB of recorded failing
|
|
10
|
-
* polygons replayed as tests.
|
|
11
|
-
*
|
|
12
|
-
* `expect_full` says whether the polygon is well-formed enough that the whole of
|
|
13
|
-
* its area must be covered. `false` means the input is genuinely invalid
|
|
14
|
-
* (self-intersecting) and the only requirements are the universal ones: no throw,
|
|
15
|
-
* no hang, no out-of-range index.
|
|
16
|
-
*
|
|
17
|
-
* @author Alex Goldring
|
|
18
|
-
* @copyright Company Named Limited (c) 2026
|
|
19
|
-
*/
|
|
20
|
-
export const POLYGON2_TRIANGULATE_CORPUS: {
|
|
21
|
-
name: string;
|
|
22
|
-
why: string;
|
|
23
|
-
points: number[];
|
|
24
|
-
contour_ends: number[];
|
|
25
|
-
contour_count: number;
|
|
26
|
-
expect_full: boolean;
|
|
27
|
-
}[];
|
|
28
|
-
//# sourceMappingURL=polygon2_triangulate.corpus.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"polygon2_triangulate.corpus.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/2d/polygon/polygon2_triangulate.corpus.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH;;;;;;;IAkEE"}
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Inputs that have actually broken {@link polygon2_triangulate}, kept so they can
|
|
3
|
-
* never break it again.
|
|
4
|
-
*
|
|
5
|
-
* This file only ever grows, and only from real failures -- a case someone
|
|
6
|
-
* *imagines* might be hard belongs in the ordinary spec, not here. Every entry
|
|
7
|
-
* records what went wrong when it was added, because that is the part that stops
|
|
8
|
-
* a future change from quietly reintroducing the same class of bug. The practice
|
|
9
|
-
* is borrowed from manifold, whose triangulator carries ~3 MB of recorded failing
|
|
10
|
-
* polygons replayed as tests.
|
|
11
|
-
*
|
|
12
|
-
* `expect_full` says whether the polygon is well-formed enough that the whole of
|
|
13
|
-
* its area must be covered. `false` means the input is genuinely invalid
|
|
14
|
-
* (self-intersecting) and the only requirements are the universal ones: no throw,
|
|
15
|
-
* no hang, no out-of-range index.
|
|
16
|
-
*
|
|
17
|
-
* @author Alex Goldring
|
|
18
|
-
* @copyright Company Named Limited (c) 2026
|
|
19
|
-
*/
|
|
20
|
-
export const POLYGON2_TRIANGULATE_CORPUS = [
|
|
21
|
-
{
|
|
22
|
-
name: "unit-offset micro square",
|
|
23
|
-
why: "Winding was decided by the shoelace sum, whose sign here is pure "
|
|
24
|
-
+ "rounding noise: the true area is 1e-18 against ~1e-16 per-term error. "
|
|
25
|
-
+ "The ring came out backwards, every corner looked reflex, and the "
|
|
26
|
-
+ "result was zero triangles. Fixed by deciding winding with one exact "
|
|
27
|
-
+ "orientation predicate at a hull vertex (polygon2_is_counter_clockwise).",
|
|
28
|
-
points: [
|
|
29
|
-
1, 1,
|
|
30
|
-
1 + 1e-9, 1,
|
|
31
|
-
1 + 1e-9, 1 + 1e-9,
|
|
32
|
-
1, 1 + 1e-9,
|
|
33
|
-
],
|
|
34
|
-
contour_ends: [4],
|
|
35
|
-
contour_count: 1,
|
|
36
|
-
expect_full: true,
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
name: "coarse-grid point soup (fuzz seed 24)",
|
|
40
|
-
why: "Twenty points on a 7x7 integer grid, with duplicates and collinear "
|
|
41
|
-
+ "runs. The ear search exhausted itself, fell through to the "
|
|
42
|
-
+ "cure-local-intersections pass, and that pass walked the "
|
|
43
|
-
+ "collapsed-ring sentinel as if it were a node -- an infinite loop. "
|
|
44
|
-
+ "Fixed by making the recovery pass accept and propagate the sentinel, "
|
|
45
|
-
+ "and by stopping it once the ring holds fewer than three nodes.",
|
|
46
|
-
points: [
|
|
47
|
-
2, 3, 3, 6, 1, 5, 0, 4, 5, 0,
|
|
48
|
-
4, 2, 3, 3, 3, 6, 2, 3, 6, 1,
|
|
49
|
-
4, 4, 2, 6, 3, 2, 6, 4, 1, 1,
|
|
50
|
-
3, 0, 5, 0, 3, 2, 6, 4, 3, 3,
|
|
51
|
-
],
|
|
52
|
-
contour_ends: [20],
|
|
53
|
-
contour_count: 1,
|
|
54
|
-
expect_full: false,
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
name: "two rectangular holes bridged through a shared edge",
|
|
58
|
-
why: "Produced 12 triangles where the Euler bound allows 14, which looked "
|
|
59
|
-
+ "like dropped geometry. It was not: the bridges left collinear corners "
|
|
60
|
-
+ "that were correctly absorbed rather than emitted as zero-area "
|
|
61
|
-
+ "triangles. Kept as the standing reminder that V + 2H - 2 is an upper "
|
|
62
|
-
+ "bound, not an equality -- area conservation is the real invariant.",
|
|
63
|
-
points: [
|
|
64
|
-
0, 0, 20, 0, 20, 10, 0, 10,
|
|
65
|
-
2, 8, 6, 8, 6, 2, 2, 2,
|
|
66
|
-
12, 8, 18, 8, 18, 2, 12, 2,
|
|
67
|
-
],
|
|
68
|
-
contour_ends: [4, 8, 12],
|
|
69
|
-
contour_count: 3,
|
|
70
|
-
expect_full: true,
|
|
71
|
-
},
|
|
72
|
-
{
|
|
73
|
-
name: "hole touching the outer boundary at a vertex",
|
|
74
|
-
why: "Same class as above -- 6 triangles against a bound of 7. The hole's "
|
|
75
|
-
+ "corner lands exactly on the outer edge, so the bridge is degenerate "
|
|
76
|
-
+ "and one corner becomes collinear. Area is still exact and every input "
|
|
77
|
-
+ "vertex is still used.",
|
|
78
|
-
points: [
|
|
79
|
-
0, 0, 10, 0, 10, 10, 0, 10,
|
|
80
|
-
4, 7, 4, 3, 0, 5,
|
|
81
|
-
],
|
|
82
|
-
contour_ends: [4, 7],
|
|
83
|
-
contour_count: 2,
|
|
84
|
-
expect_full: true,
|
|
85
|
-
},
|
|
86
|
-
];
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Serialize `value` with a serializer built on `registry`, then deserialize it with a deserializer built on
|
|
3
|
-
* `registry` + `modules`. Shared by the object-graph specs.
|
|
4
|
-
*
|
|
5
|
-
* @template T
|
|
6
|
-
* @param {T} value
|
|
7
|
-
* @param {{registry?: BinarySerializationRegistry, modules?: ModuleRegistry}} [options]
|
|
8
|
-
* @returns {T}
|
|
9
|
-
*/
|
|
10
|
-
export function roundTrip<T>(value: T, { registry, modules }?: {
|
|
11
|
-
registry?: BinarySerializationRegistry;
|
|
12
|
-
modules?: ModuleRegistry<any>;
|
|
13
|
-
}): T;
|
|
14
|
-
/**
|
|
15
|
-
* @param {*} value
|
|
16
|
-
* @param {BinarySerializationRegistry} [registry]
|
|
17
|
-
* @returns {BinaryBuffer} rewound to position 0
|
|
18
|
-
*/
|
|
19
|
-
export function serialize(value: any, registry?: BinarySerializationRegistry): BinaryBuffer;
|
|
20
|
-
/**
|
|
21
|
-
* @param {*} value
|
|
22
|
-
* @param {BinarySerializationRegistry} [registry]
|
|
23
|
-
* @returns {number} byte length of the serialized form
|
|
24
|
-
*/
|
|
25
|
-
export function serializedSize(value: any, registry?: BinarySerializationRegistry): number;
|
|
26
|
-
import { BinarySerializationRegistry } from "../BinarySerializationRegistry.js";
|
|
27
|
-
import { ModuleRegistry } from "../../../../../core/model/ModuleRegistry.js";
|
|
28
|
-
import { BinaryBuffer } from "../../../../../core/binary/BinaryBuffer.js";
|
|
29
|
-
//# sourceMappingURL=serializerTestHarness.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"serializerTestHarness.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/ecs/storage/binary/object-v2/serializerTestHarness.js"],"names":[],"mappings":"AAMA;;;;;;;;GAQG;AACH,+DAHW;IAAC,QAAQ,CAAC,EAAE,2BAA2B,CAAC;IAAC,OAAO,CAAC,sBAAgB;CAAC,KAS5E;AAED;;;;GAIG;AACH,iDAHW,2BAA2B,GACzB,YAAY,CAQxB;AAED;;;;GAIG;AACH,sDAHW,2BAA2B,GACzB,MAAM,CAIlB;4CAzC2C,mCAAmC;+BADhD,6CAA6C;6BAD/C,4CAA4C"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { BinaryBuffer } from "../../../../../core/binary/BinaryBuffer.js";
|
|
2
|
-
import { ModuleRegistry } from "../../../../../core/model/ModuleRegistry.js";
|
|
3
|
-
import { BinarySerializationRegistry } from "../BinarySerializationRegistry.js";
|
|
4
|
-
import { BinaryObjectDeSerializer } from "./BinaryObjectDeSerializer.js";
|
|
5
|
-
import { BinaryObjectSerializer } from "./BinaryObjectSerializer.js";
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Serialize `value` with a serializer built on `registry`, then deserialize it with a deserializer built on
|
|
9
|
-
* `registry` + `modules`. Shared by the object-graph specs.
|
|
10
|
-
*
|
|
11
|
-
* @template T
|
|
12
|
-
* @param {T} value
|
|
13
|
-
* @param {{registry?: BinarySerializationRegistry, modules?: ModuleRegistry}} [options]
|
|
14
|
-
* @returns {T}
|
|
15
|
-
*/
|
|
16
|
-
export function roundTrip(value, { registry = new BinarySerializationRegistry(), modules = new ModuleRegistry() } = {}) {
|
|
17
|
-
const buffer = serialize(value, registry);
|
|
18
|
-
|
|
19
|
-
buffer.position = 0;
|
|
20
|
-
|
|
21
|
-
return new BinaryObjectDeSerializer(registry, modules).deserialize(buffer);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* @param {*} value
|
|
26
|
-
* @param {BinarySerializationRegistry} [registry]
|
|
27
|
-
* @returns {BinaryBuffer} rewound to position 0
|
|
28
|
-
*/
|
|
29
|
-
export function serialize(value, registry = new BinarySerializationRegistry()) {
|
|
30
|
-
const buffer = new BinaryBuffer();
|
|
31
|
-
|
|
32
|
-
new BinaryObjectSerializer(registry).serialize(buffer, value);
|
|
33
|
-
|
|
34
|
-
return buffer;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* @param {*} value
|
|
39
|
-
* @param {BinarySerializationRegistry} [registry]
|
|
40
|
-
* @returns {number} byte length of the serialized form
|
|
41
|
-
*/
|
|
42
|
-
export function serializedSize(value, registry = new BinarySerializationRegistry()) {
|
|
43
|
-
return serialize(value, registry).position;
|
|
44
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shader_water_bodies_derive.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/water/medium/shader_water_bodies_derive.js"],"names":[],"mappings":"AASA,gCAAiC;AAIjC,uDAkBG;8BA/B2B,+BAA+B"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { ComputeShader } from "../../shader/ComputeShader.js";
|
|
2
|
-
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
3
|
-
import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourceSetDescriptor.js";
|
|
4
|
-
import { WebGPUArray } from "../../shader/type/WebGPUArray.js";
|
|
5
|
-
import { chunk_water_medium_derived } from "./chunk_water_medium_derived.js";
|
|
6
|
-
import { chunk_water_medium_scattering } from "./chunk_water_medium_scattering.js";
|
|
7
|
-
import { WATER_BODIES_TABLE as table } from "./chunk_water_bodies.js";
|
|
8
|
-
import { chunk_folded_workgroup_index } from "../../shader/chunk/grid/chunk_folded_workgroup_index.js";
|
|
9
|
-
|
|
10
|
-
export const WORKGROUP_SIZE = 64;
|
|
11
|
-
const pg = table.page_iterator_symbol_prefix(WORKGROUP_SIZE, true);
|
|
12
|
-
const resources = new ShaderResourceSetDescriptor();
|
|
13
|
-
resources.createGroup().addStorageBuffer('scene_database', WebGPUArray.u32, true);
|
|
14
|
-
export const shader_water_bodies_derive = ComputeShader.from({
|
|
15
|
-
label: "Water / bodies derive", resources,
|
|
16
|
-
body: CodeChunk.from(/* language=WGSL */ `
|
|
17
|
-
@compute @workgroup_size(${WORKGROUP_SIZE})
|
|
18
|
-
fn main(@builtin(workgroup_id) group: vec3u, @builtin(local_invocation_index) lane: u32) {
|
|
19
|
-
if (!${pg}_setup(&scene_database, folded_workgroup_index(group), lane)) { return; }
|
|
20
|
-
let slot = ${pg}_slot_in_page(lane);
|
|
21
|
-
if (slot >= ${pg}_ELEMENTS_PER_PAGE || !${pg}_is_occupied(slot)) { return; }
|
|
22
|
-
var body = ${pg}_read(&scene_database, slot);
|
|
23
|
-
if (body.dirty == 0u) { return; }
|
|
24
|
-
body.backscattering = vec4f(water_medium_backscattering(body.medium), 0.0);
|
|
25
|
-
body.extinction = vec4f(body.medium.absorption + water_medium_scattering(body.medium), 0.0);
|
|
26
|
-
body.diffuse_transmittance = water_diffuse_fresnel_transmittance(body.ior);
|
|
27
|
-
body.dirty = 0u;
|
|
28
|
-
${table.marshalling_method_write}(&scene_database, ${pg}_slot_to_index(slot), body);
|
|
29
|
-
}
|
|
30
|
-
`, [table.chunk_iterate(WORKGROUP_SIZE, true), table.chunk_write, chunk_water_medium_derived,
|
|
31
|
-
chunk_water_medium_scattering, chunk_folded_workgroup_index]),
|
|
32
|
-
});
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A shared wave atlas, indexed by occupied water_waves rows. Calm bodies allocate no grid.
|
|
3
|
-
* Each fixed step dispatches the whole atlas once; tessellated vertices sample it in local xz.
|
|
4
|
-
* The regular grid is a displacement field, never the rendered water footprint.
|
|
5
|
-
*/
|
|
6
|
-
export class GPUWaterWaveSimulation {
|
|
7
|
-
onInputsConsumed: Signal;
|
|
8
|
-
resolution: number;
|
|
9
|
-
step: number;
|
|
10
|
-
max_steps_per_frame: number;
|
|
11
|
-
damping: number;
|
|
12
|
-
get time(): number;
|
|
13
|
-
get buffer(): any;
|
|
14
|
-
get grid_resolution(): number;
|
|
15
|
-
advance(dt: any): void;
|
|
16
|
-
dispose(): void;
|
|
17
|
-
record({ graph, device, scene }: {
|
|
18
|
-
graph: any;
|
|
19
|
-
device: any;
|
|
20
|
-
scene: any;
|
|
21
|
-
}): void;
|
|
22
|
-
#private;
|
|
23
|
-
}
|
|
24
|
-
import Signal from "../../../../core/events/signal/Signal.js";
|
|
25
|
-
//# sourceMappingURL=GPUWaterWaveSimulation.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GPUWaterWaveSimulation.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/water/surface/GPUWaterWaveSimulation.js"],"names":[],"mappings":"AAKA;;;;GAIG;AACH;IACI,yBAAgC;IAChC,mBAAiB;IACjB,aAAe;IACf,4BAAwB;IACxB,gBAAe;IAYf,mBAAiC;IACjC,kBAAkD;IAClD,8BAAqE;IAErE,uBAIC;IAED,gBAMC;IAED;;;;aAiFC;;CACJ;mBA/HkB,0CAA0C"}
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
import Signal from "../../../../core/events/signal/Signal.js";
|
|
2
|
-
import { assert } from "../../../../core/assert.js";
|
|
3
|
-
import { WATER_WAVE_BATCH_STRUCT, shader_water_wave_batch, shader_water_wave_batch_finish } from "./shader_water_wave_batch.js";
|
|
4
|
-
import { shader_water_wave_bounds, shader_water_wave_domain } from "./shader_water_wave_domain.js";
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* A shared wave atlas, indexed by occupied water_waves rows. Calm bodies allocate no grid.
|
|
8
|
-
* Each fixed step dispatches the whole atlas once; tessellated vertices sample it in local xz.
|
|
9
|
-
* The regular grid is a displacement field, never the rendered water footprint.
|
|
10
|
-
*/
|
|
11
|
-
export class GPUWaterWaveSimulation {
|
|
12
|
-
onInputsConsumed = new Signal();
|
|
13
|
-
resolution = 128;
|
|
14
|
-
step = 1 / 120;
|
|
15
|
-
max_steps_per_frame = 8;
|
|
16
|
-
damping = 0.08;
|
|
17
|
-
#device = null;
|
|
18
|
-
#scene = null;
|
|
19
|
-
#state = [];
|
|
20
|
-
#domain = null;
|
|
21
|
-
#capacity = 0;
|
|
22
|
-
#resolution = 0;
|
|
23
|
-
#parity = 0;
|
|
24
|
-
#pending = 0;
|
|
25
|
-
#time = 0;
|
|
26
|
-
#recorded = new WeakSet();
|
|
27
|
-
#write_pending = true;
|
|
28
|
-
get time() { return this.#time; }
|
|
29
|
-
get buffer() { return this.#state[this.#parity]; }
|
|
30
|
-
get grid_resolution() { return this.#resolution || this.resolution; }
|
|
31
|
-
|
|
32
|
-
advance(dt) {
|
|
33
|
-
assert.isFinite(dt, 'dt'); assert.greaterThanOrEqual(dt, 0, 'dt');
|
|
34
|
-
this.#pending += dt;
|
|
35
|
-
this.#write_pending = true;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
dispose() {
|
|
39
|
-
for (const buffer of this.#state) { buffer.destroy(); }
|
|
40
|
-
this.#domain?.destroy(); this.#domain = null;
|
|
41
|
-
this.#state = []; this.#capacity = 0; this.#device = null; this.#scene = null;
|
|
42
|
-
this.#recorded = new WeakSet();
|
|
43
|
-
this.#write_pending = true;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
record({ graph, device, scene }) {
|
|
47
|
-
if (this.#recorded.has(graph)) { return; }
|
|
48
|
-
if (device !== this.#device || scene !== this.#scene) {
|
|
49
|
-
this.dispose(); this.#device = device; this.#scene = scene;
|
|
50
|
-
}
|
|
51
|
-
this.#recorded.add(graph);
|
|
52
|
-
if (!this.#write_pending) { return; }
|
|
53
|
-
this.#write_pending = false;
|
|
54
|
-
const table = scene.scene_database.get('water_waves');
|
|
55
|
-
const capacity = table.count === 0 ? 0 : table.element_capacity;
|
|
56
|
-
assert.isInteger(this.resolution, 'resolution'); assert.greaterThanOrEqual(this.resolution, 2, 'resolution');
|
|
57
|
-
assert.greaterThan(this.step, 0, 'step');
|
|
58
|
-
const resize = capacity > this.#capacity || (capacity === 0 && this.#capacity !== 0) || this.resolution !== this.#resolution;
|
|
59
|
-
const old = this.#state;
|
|
60
|
-
const old_domain = this.#domain;
|
|
61
|
-
if (resize || old.length === 0) {
|
|
62
|
-
const size = Math.max(4, capacity * this.resolution ** 2 * 4);
|
|
63
|
-
assert.lessThanOrEqual(size, device.limits.maxStorageBufferBindingSize, 'Water wave atlas exceeds device storage limit; lower waves.resolution');
|
|
64
|
-
this.#state = [0, 1].map(i => device.createBuffer({ label: `Water / wave state ${i}`, size,
|
|
65
|
-
usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST }));
|
|
66
|
-
this.#domain = device.createBuffer({ label: 'Water / authored footprint', size,
|
|
67
|
-
usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST });
|
|
68
|
-
this.#capacity = capacity;
|
|
69
|
-
}
|
|
70
|
-
const same_resolution = this.#resolution === this.resolution;
|
|
71
|
-
this.#resolution = this.resolution;
|
|
72
|
-
const steps = Math.min(Math.floor(this.#pending / this.step + 1e-6), this.max_steps_per_frame);
|
|
73
|
-
this.#pending = Math.max(0, Math.min(this.#pending - steps * this.step, this.step));
|
|
74
|
-
const start = this.#parity, time = this.#time, state = this.#state, domain = this.#domain;
|
|
75
|
-
this.#parity = (start + steps) % 2;
|
|
76
|
-
this.#time += steps * this.step;
|
|
77
|
-
const n = this.#resolution, dt = this.step, damping = this.damping;
|
|
78
|
-
const pass = graph.add('Water / batched surface update', {}, (_d, _r, { encoder }) => {
|
|
79
|
-
if (state !== old) {
|
|
80
|
-
if (same_resolution && old.length !== 0) {
|
|
81
|
-
for (let i = 0; i < 2; i++) { encoder.copyBufferToBuffer(old[i], 0, state[i], 0, Math.min(old[i].size, state[i].size)); }
|
|
82
|
-
encoder.copyBufferToBuffer(old_domain, 0, domain, 0, Math.min(old_domain.size, domain.size));
|
|
83
|
-
}
|
|
84
|
-
encoder.done.then(() => { for (const buffer of old) { buffer.destroy(); } old_domain?.destroy(); });
|
|
85
|
-
}
|
|
86
|
-
if (capacity === 0) { return; }
|
|
87
|
-
const groups = Math.ceil(capacity * n * n / 128);
|
|
88
|
-
shader_water_wave_domain.dispatch({ encoder, bindings: {
|
|
89
|
-
batch: encoder.allocateTransientValueBuffer(WATER_WAVE_BATCH_STRUCT,
|
|
90
|
-
{ resolution: n, capacity, apply_impulses: same_resolution ? 0 : 1 }),
|
|
91
|
-
scene_database: scene.scene_database_buffer, domain,
|
|
92
|
-
geometries: scene.geometries.buffer_metadata,
|
|
93
|
-
blas_lookup: scene.geometries.blas.buffer_metadata, blas_data: scene.geometries.blas.buffer_data,
|
|
94
|
-
meshlet_metadata: scene.geometries.meshlets.buffer_metadata, meshlet_data: scene.geometries.meshlets.buffer_data,
|
|
95
|
-
}, group_count_x: Math.min(groups, 65535), group_count_y: Math.ceil(groups / 65535) });
|
|
96
|
-
const dispatch = (parity, step_dt, step_time, apply_impulses) => {
|
|
97
|
-
shader_water_wave_batch.dispatch({ encoder, bindings: {
|
|
98
|
-
batch: encoder.allocateTransientValueBuffer(WATER_WAVE_BATCH_STRUCT,
|
|
99
|
-
{ resolution: n, capacity, dt: step_dt, time: step_time, damping, apply_impulses }),
|
|
100
|
-
scene_database: scene.scene_database_buffer, domain, state_current: state[parity], state_previous: state[1 - parity],
|
|
101
|
-
}, group_count_x: Math.min(groups, 65535), group_count_y: Math.ceil(groups / 65535) });
|
|
102
|
-
};
|
|
103
|
-
// Clear both histories of new/reused slots before advancing, then release the reset flag.
|
|
104
|
-
dispatch(0, 0, time, 0); dispatch(1, 0, time, 0);
|
|
105
|
-
const finish = apply_impulses => {
|
|
106
|
-
const groups = table.dispatch_group_count(64);
|
|
107
|
-
shader_water_wave_batch_finish.dispatch({ encoder, bindings: { scene_database: scene.scene_database_buffer,
|
|
108
|
-
batch: encoder.allocateTransientValueBuffer(WATER_WAVE_BATCH_STRUCT,
|
|
109
|
-
{ resolution: n, capacity, dt, time, damping, apply_impulses }) },
|
|
110
|
-
group_count_x: Math.min(groups, 65535), group_count_y: Math.ceil(groups / 65535) });
|
|
111
|
-
};
|
|
112
|
-
finish(0);
|
|
113
|
-
for (let i = 0; i < steps; i++) { dispatch((start + i) % 2, dt, time + i * dt, i === 0 ? 1 : 0); }
|
|
114
|
-
if (steps > 0) {
|
|
115
|
-
finish(1);
|
|
116
|
-
// Submit is the ownership boundary for staged CPU inputs. Use the encoder's
|
|
117
|
-
// existing synchronous signal so a later scene/update cannot be cleared by
|
|
118
|
-
// an old promise callback.
|
|
119
|
-
encoder.onFinished.addOne(() => this.onInputsConsumed.dispatch(scene));
|
|
120
|
-
}
|
|
121
|
-
shader_water_wave_bounds.dispatch({ encoder, bindings: {
|
|
122
|
-
batch: encoder.allocateTransientValueBuffer(WATER_WAVE_BATCH_STRUCT, { resolution: n, capacity }),
|
|
123
|
-
scene_database: scene.scene_database_buffer, state: state[(start + steps) % 2],
|
|
124
|
-
}, group_count_x: Math.min(capacity, 65535), group_count_y: Math.ceil(capacity / 65535) });
|
|
125
|
-
});
|
|
126
|
-
pass.make_side_effect();
|
|
127
|
-
}
|
|
128
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export const WATER_TILE_CELLS: 16;
|
|
2
|
-
export const WATER_TILE_VERTEX_COUNT: number;
|
|
3
|
-
export const WATER_TILE_STRUCT: WebGPUStruct;
|
|
4
|
-
export const WATER_TESSELLATION_STRUCT: WebGPUStruct;
|
|
5
|
-
/** Clip in barycentric space: every generated point remains on the authored triangle. */
|
|
6
|
-
export const chunk_water_tessellation: CodeChunk;
|
|
7
|
-
import { WebGPUStruct } from "../../shader/type/WebGPUStruct.js";
|
|
8
|
-
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
9
|
-
//# sourceMappingURL=chunk_water_tessellation.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunk_water_tessellation.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/water/surface/chunk_water_tessellation.js"],"names":[],"mappings":"AAKA,kCAAmC;AAEnC,6CAAkE;AAClE,6CAEuB;AACvB,qDAE+B;AAE/B,yFAAyF;AACzF,iDA+H8B;6BA9ID,mCAAmC;0BADtC,oCAAoC"}
|