@woosh/meep-engine 3.36.0 → 3.38.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/storage/populateEngineSerializationRegistry.d.ts.map +1 -1
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.js +2 -0
- package/src/engine/ecs/transform/TRANSFORM64_EVENT_PLACED.d.ts +11 -0
- package/src/engine/ecs/transform/TRANSFORM64_EVENT_PLACED.d.ts.map +1 -0
- package/src/engine/ecs/transform/TRANSFORM64_EVENT_PLACED.js +10 -0
- package/src/engine/ecs/transform-attachment/TransformAttachmentSystem.d.ts.map +1 -1
- package/src/engine/ecs/transform-attachment/TransformAttachmentSystem.js +16 -0
- package/src/engine/graphics/ecs/water/Water.d.ts +30 -0
- package/src/engine/graphics/ecs/water/Water.d.ts.map +1 -1
- package/src/engine/graphics/ecs/water/Water.js +125 -104
- package/src/engine/graphics/ecs/water/WaterSerializationAdapter.d.ts.map +1 -1
- package/src/engine/graphics/ecs/water/WaterSerializationAdapter.js +13 -1
- package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_1_2.d.ts +6 -0
- package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_1_2.d.ts.map +1 -0
- package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_1_2.js +18 -0
- package/src/engine/graphics3/WaterSystem.d.ts +22 -6
- package/src/engine/graphics3/WaterSystem.d.ts.map +1 -1
- package/src/engine/graphics3/WaterSystem.js +314 -293
- package/src/engine/input/devices/XRInputDevice.d.ts +51 -23
- package/src/engine/input/devices/XRInputDevice.d.ts.map +1 -1
- package/src/engine/input/devices/XRInputDevice.js +145 -52
- package/src/engine/input/devices/xr/XRGamepadMapping.d.ts +14 -0
- package/src/engine/input/devices/xr/XRGamepadMapping.d.ts.map +1 -0
- package/src/engine/input/devices/xr/XRGamepadMapping.js +9 -0
- package/src/engine/input/devices/xr/XRHandedness.d.ts +15 -0
- package/src/engine/input/devices/xr/XRHandedness.d.ts.map +1 -0
- package/src/engine/input/devices/xr/XRHandedness.js +10 -0
- package/src/engine/input/devices/xr/XRInputAction.d.ts +24 -11
- package/src/engine/input/devices/xr/XRInputAction.d.ts.map +1 -1
- package/src/engine/input/devices/xr/XRInputAction.js +55 -24
- package/src/engine/input/devices/xr/XRInputButton.d.ts +7 -9
- package/src/engine/input/devices/xr/XRInputButton.d.ts.map +1 -1
- package/src/engine/input/devices/xr/XRInputButton.js +18 -8
- package/src/engine/input/devices/xr/XRInputCoordinates.d.ts +11 -3
- package/src/engine/input/devices/xr/XRInputCoordinates.d.ts.map +1 -1
- package/src/engine/input/devices/xr/XRInputCoordinates.js +17 -3
- package/src/engine/input/devices/xr/XRInputHandle.d.ts +41 -11
- package/src/engine/input/devices/xr/XRInputHandle.d.ts.map +1 -1
- package/src/engine/input/devices/xr/XRInputHandle.js +129 -32
- package/src/engine/input/devices/xr/XRInputPose.d.ts +41 -5
- package/src/engine/input/devices/xr/XRInputPose.d.ts.map +1 -1
- package/src/engine/input/devices/xr/XRInputPose.js +57 -16
- package/src/engine/input/devices/xr/XRInputTypes.d.ts +18 -18
- package/src/engine/input/devices/xr/XRInputTypes.js +3 -3
- package/src/engine/input/devices/xr/XRTargetRayMode.d.ts +17 -0
- package/src/engine/input/devices/xr/XRTargetRayMode.d.ts.map +1 -0
- package/src/engine/input/devices/xr/XRTargetRayMode.js +12 -0
- package/src/engine/input/devices/xr/XRVisibilityState.d.ts +15 -0
- package/src/engine/input/devices/xr/XRVisibilityState.d.ts.map +1 -0
- package/src/engine/input/devices/xr/XRVisibilityState.js +10 -0
- package/src/engine/input/ecs/ism/coordinate/InputCoordinateDevice.d.ts +3 -1
- package/src/engine/input/ecs/ism/coordinate/InputCoordinateDevice.d.ts.map +1 -1
- package/src/engine/input/ecs/ism/coordinate/InputCoordinateDevice.js +5 -1
- package/src/engine/input/ecs/ism/device/XRInputDeviceAdapter.d.ts +19 -5
- package/src/engine/input/ecs/ism/device/XRInputDeviceAdapter.d.ts.map +1 -1
- package/src/engine/input/ecs/ism/device/XRInputDeviceAdapter.js +42 -9
- package/src/engine/input/ecs/ism/device/XR_INPUT_DEVICE_IDS.d.ts +8 -2
- package/src/engine/input/ecs/ism/device/XR_INPUT_DEVICE_IDS.d.ts.map +1 -1
- package/src/engine/input/ecs/ism/device/XR_INPUT_DEVICE_IDS.js +19 -9
- package/src/engine/input/ecs/ism/trigger/InputTriggerXRButton.d.ts +10 -2
- package/src/engine/input/ecs/ism/trigger/InputTriggerXRButton.d.ts.map +1 -1
- package/src/engine/input/ecs/ism/trigger/InputTriggerXRButton.js +12 -2
- package/src/engine/physics/cloth/collider/ClothColliderIndex.d.ts +13 -14
- package/src/engine/physics/cloth/collider/ClothColliderIndex.d.ts.map +1 -1
- package/src/engine/physics/cloth/collider/ClothColliderIndex.js +137 -36
- package/src/engine/physics/cloth/collider/cloth_collider_bounds.d.ts +30 -0
- package/src/engine/physics/cloth/collider/cloth_collider_bounds.d.ts.map +1 -1
- package/src/engine/physics/cloth/collider/cloth_collider_bounds.js +33 -0
- package/src/engine/physics/cloth/ecs/ClothColliderFlags.js +2 -1
- package/src/engine/physics/cloth/ecs/ClothColliderSystem.d.ts +10 -1
- package/src/engine/physics/cloth/ecs/ClothColliderSystem.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothColliderSystem.js +36 -14
- package/src/engine/physics/cloth/ecs/ClothInstance.d.ts +15 -2
- package/src/engine/physics/cloth/ecs/ClothInstance.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothInstance.js +17 -2
- package/src/engine/physics/cloth/ecs/ClothWorld.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothWorld.js +19 -6
- package/src/engine/physics/cloth/ecs/cloth_gather_colliders.d.ts +18 -20
- package/src/engine/physics/cloth/ecs/cloth_gather_colliders.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/cloth_gather_colliders.js +139 -89
- package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
- package/src/engine/physics/ecs/PhysicsSystem.js +32 -16
- package/src/shade/playground/water_refraction/README.md +149 -0
- package/src/shade/playground/water_refraction/index.html +42 -0
- package/src/shade/playground/water_refraction/main.d.ts +2 -0
- package/src/shade/playground/water_refraction/main.d.ts.map +1 -0
- package/src/shade/playground/water_refraction/main.js +201 -0
- package/src/shade/playground/water_refraction/world.d.ts +37 -0
- package/src/shade/playground/water_refraction/world.d.ts.map +1 -0
- package/src/shade/playground/water_refraction/world.js +137 -0
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +4 -0
- package/src/shade/renderer/animation/chunk_pose_accumulator.d.ts +2 -3
- package/src/shade/renderer/animation/chunk_pose_accumulator.d.ts.map +1 -1
- package/src/shade/renderer/animation/chunk_pose_accumulator.js +14 -24
- package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_reduce.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_reduce.js +16 -15
- package/src/shade/renderer/deferred/indirect/chunk_lpv_sample_light.js +1 -1
- package/src/shade/renderer/gpu_primitive/bvh/GPU_BVH_BUILD_PLAN.md +1123 -1122
- package/src/shade/renderer/gpu_primitive/bvh/PHASE1_HANDOVER.md +202 -201
- package/src/shade/renderer/light/environment/chunk_roughness_to_mip_ratio.d.ts +8 -0
- package/src/shade/renderer/light/environment/chunk_roughness_to_mip_ratio.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/chunk_roughness_to_mip_ratio.js +24 -0
- package/src/shade/renderer/light/environment/chunk_sphere_probe_roughness_to_lod.d.ts +0 -6
- package/src/shade/renderer/light/environment/chunk_sphere_probe_roughness_to_lod.d.ts.map +1 -1
- package/src/shade/renderer/light/environment/chunk_sphere_probe_roughness_to_lod.js +2 -25
- package/src/shade/renderer/light/environment/shader_project_environment_sh.d.ts +2 -2
- package/src/shade/renderer/light/environment/shader_project_environment_sh.d.ts.map +1 -1
- package/src/shade/renderer/light/environment/shader_project_environment_sh.js +50 -19
- package/src/shade/renderer/particles/DESIGN.md +1 -1
- package/src/shade/renderer/particles/bounds/chunk_particle_bounds.d.ts +1 -1
- package/src/shade/renderer/particles/bounds/chunk_particle_bounds.d.ts.map +1 -1
- package/src/shade/renderer/particles/bounds/chunk_particle_bounds.js +10 -9
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts +17 -0
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.js +7 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_renormalization.d.ts +4 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_renormalization.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_renormalization.js +11 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_rgb_contribution.d.ts +4 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_rgb_contribution.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_rgb_contribution.js +19 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_splat_slice.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_splat_slice.js +5 -3
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_split_counts.d.ts +4 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_split_counts.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_split_counts.js +8 -0
- package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts +1 -1
- package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.js +21 -2
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_resolve.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_resolve.js +4 -8
- package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.d.ts.map +1 -1
- package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.js +10 -8
- package/src/shade/renderer/shader/chunk/atomic/chunk_atomic_add_f32_storage.d.ts +12 -0
- package/src/shade/renderer/shader/chunk/atomic/chunk_atomic_add_f32_storage.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/atomic/chunk_atomic_add_f32_storage.js +25 -0
- package/src/shade/renderer/shader/chunk/atomic/chunk_atomic_max_f32_storage.d.ts +12 -0
- package/src/shade/renderer/shader/chunk/atomic/chunk_atomic_max_f32_storage.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/atomic/chunk_atomic_max_f32_storage.js +28 -0
- package/src/shade/renderer/shader/chunk/atomic/chunk_atomic_min_f32_storage.d.ts +12 -0
- package/src/shade/renderer/shader/chunk/atomic/chunk_atomic_min_f32_storage.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/atomic/chunk_atomic_min_f32_storage.js +28 -0
- package/src/shade/renderer/shader/chunk/geometry/plane/{plane_ray_raycast.d.ts → chunk_plane_ray_raycast.d.ts} +2 -2
- package/src/shade/renderer/shader/chunk/geometry/plane/chunk_plane_ray_raycast.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/geometry/plane/{plane_ray_raycast.js → chunk_plane_ray_raycast.js} +1 -1
- package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_space_newton_ray.d.ts +4 -0
- package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_space_newton_ray.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_space_newton_ray.js +101 -0
- package/src/shade/renderer/shadow/map/csm/shader/shader_csm_caster_range.js +3 -3
- package/src/shade/renderer/water/GPUWaterRenderer.d.ts +62 -29
- package/src/shade/renderer/water/GPUWaterRenderer.d.ts.map +1 -1
- package/src/shade/renderer/water/GPUWaterRenderer.js +235 -147
- package/src/shade/renderer/water/chunk_water_transport.d.ts +5 -0
- package/src/shade/renderer/water/chunk_water_transport.d.ts.map +1 -0
- package/src/shade/renderer/water/chunk_water_transport.js +94 -0
- package/src/shade/renderer/water/shader_water.d.ts +9 -26
- package/src/shade/renderer/water/shader_water.d.ts.map +1 -1
- package/src/shade/renderer/water/shader_water.js +384 -246
- package/src/shade/renderer/water/shader_water_avboit.d.ts +12 -0
- package/src/shade/renderer/water/shader_water_avboit.d.ts.map +1 -0
- package/src/shade/renderer/water/shader_water_avboit.js +258 -0
- package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
- package/src/shade/wgsl/emulator/WGSLLanguageCore.js +13 -0
- package/src/shade/renderer/animation/skinning/bounds_refresh/chunk_aabb_atomic_f32.d.ts +0 -29
- package/src/shade/renderer/animation/skinning/bounds_refresh/chunk_aabb_atomic_f32.d.ts.map +0 -1
- package/src/shade/renderer/animation/skinning/bounds_refresh/chunk_aabb_atomic_f32.js +0 -59
- package/src/shade/renderer/shader/chunk/geometry/plane/plane_ray_raycast.d.ts.map +0 -1
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"populateEngineSerializationRegistry.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/storage/populateEngineSerializationRegistry.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"populateEngineSerializationRegistry.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/storage/populateEngineSerializationRegistry.js"],"names":[],"mappings":"AAgLA;;;;;;;;GAQG;AACH,iGA0GC"}
|
|
@@ -87,6 +87,7 @@ import {
|
|
|
87
87
|
import Water from "../../graphics/ecs/water/Water.js";
|
|
88
88
|
import { WaterSerializationAdapter } from "../../graphics/ecs/water/WaterSerializationAdapter.js";
|
|
89
89
|
import { WaterSerializationUpgrader_0_1 } from "../../graphics/ecs/water/WaterSerializationUpgrader_0_1.js";
|
|
90
|
+
import { WaterSerializationUpgrader_1_2 } from "../../graphics/ecs/water/WaterSerializationUpgrader_1_2.js";
|
|
90
91
|
import { GridPosition2Transform } from "../../grid/grid2transform/GridPosition2Transform.js";
|
|
91
92
|
import {
|
|
92
93
|
GridPosition2TransformSerializationAdapter
|
|
@@ -280,6 +281,7 @@ export function populateEngineSerializationRegistry(registry) {
|
|
|
280
281
|
registry.registerUpgrader(Terrain.typeName, new TerrainSerializationUpgrader_1_2());
|
|
281
282
|
registry.registerUpgrader(Highlight.typeName, new HighlightSerializationUpgrader_0_1());
|
|
282
283
|
registry.registerUpgrader(Water.typeName, new WaterSerializationUpgrader_0_1());
|
|
284
|
+
registry.registerUpgrader(Water.typeName, new WaterSerializationUpgrader_1_2());
|
|
283
285
|
|
|
284
286
|
registry.registerUpgrader(SoundEmitter.typeName, new SoundEmitterSerializationUpgrader_0_1());
|
|
285
287
|
registry.registerUpgrader(SoundEmitter.typeName, new SoundEmitterSerializationUpgrader_1_2());
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* An explicit placement/teleport, after the new world pose has been published
|
|
3
|
+
* with TRANSFORM64_EVENT_CHANGE. Motion consumers must reset their previous
|
|
4
|
+
* pose instead of sweeping from the old location. TransformAttachmentSystem
|
|
5
|
+
* forwards this event down the spatial hierarchy, including GPU-owned links.
|
|
6
|
+
*
|
|
7
|
+
* No payload; listeners read the transform on the entity they subscribed to.
|
|
8
|
+
* @type {string}
|
|
9
|
+
*/
|
|
10
|
+
export const TRANSFORM64_EVENT_PLACED: string;
|
|
11
|
+
//# sourceMappingURL=TRANSFORM64_EVENT_PLACED.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TRANSFORM64_EVENT_PLACED.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/transform/TRANSFORM64_EVENT_PLACED.js"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,uCAFU,MAAM,CAE8C"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* An explicit placement/teleport, after the new world pose has been published
|
|
3
|
+
* with TRANSFORM64_EVENT_CHANGE. Motion consumers must reset their previous
|
|
4
|
+
* pose instead of sweeping from the old location. TransformAttachmentSystem
|
|
5
|
+
* forwards this event down the spatial hierarchy, including GPU-owned links.
|
|
6
|
+
*
|
|
7
|
+
* No payload; listeners read the transform on the entity they subscribed to.
|
|
8
|
+
* @type {string}
|
|
9
|
+
*/
|
|
10
|
+
export const TRANSFORM64_EVENT_PLACED = "@transform64/placed";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransformAttachmentSystem.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/transform-attachment/TransformAttachmentSystem.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TransformAttachmentSystem.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/transform-attachment/TransformAttachmentSystem.js"],"names":[],"mappings":"AAiNA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH;;IAEI;;;;OAIG;IACH,mBAAgB;IAEhB;;;;;OAKG;IACH,mBAAoC;IAEpC;;;;OAIG;IACH,gBAAa;IACb,qBAAiB;IACjB,uBAAmB;IAEnB,kEAAkD;IAClD,+HAGE;IAEF;;;;OAIG;IACH,wBAsBC;IAED;;;;OAIG;IACH,kBAEC;IAED;;;;;OAKG;IACH,yBAYC;IAED;;;;;;;;OAQG;IACH,uBALW,MAAM,EAAE,iBACR,MAAM,UACN,MAAM,GACJ,MAAM,CAIlB;IAED;;;;;;OAMG;IACH,wBAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;;;OAKG;IACH,iBAJW,mBAAmB,aACnB,WAAW,UACX,MAAM,QAsBhB;IAED;;;;;OAKG;IACH,mBAJW,mBAAmB,aACnB,WAAW,UACX,MAAM,QAkBhB;IAED,6BAoBC;CACJ;uBAvasB,cAAc;4BAGT,6BAA6B;oCAEK,0BAA0B;4CAZ5C,oDAAoD"}
|
|
@@ -9,6 +9,7 @@ import { gpu_authority_has } from "../gpu/gpu_authority_has.js";
|
|
|
9
9
|
import { EntityChildIndex } from "../hierarchy/EntityChildIndex.js";
|
|
10
10
|
import { System } from "../System.js";
|
|
11
11
|
import { TRANSFORM64_EVENT_CHANGE } from "../transform/TRANSFORM64_EVENT_CHANGE.js";
|
|
12
|
+
import { TRANSFORM64_EVENT_PLACED } from "../transform/TRANSFORM64_EVENT_PLACED.js";
|
|
12
13
|
import { Transform64 } from "../transform/Transform64.js";
|
|
13
14
|
import { TRANSFORM_ATTACHMENT_EVENT_CHANGE } from "./TRANSFORM_ATTACHMENT_EVENT_CHANGE.js";
|
|
14
15
|
import { TransformAttachment, TransformAttachmentFlags } from "./TransformAttachment.js";
|
|
@@ -128,7 +129,18 @@ class UpdateContext {
|
|
|
128
129
|
this.ecd.removeComponentFromEntity(this.entity, TransformAttachment);
|
|
129
130
|
}
|
|
130
131
|
|
|
132
|
+
handle_parent_placement() {
|
|
133
|
+
if (this.#linked) {
|
|
134
|
+
// The preceding change announcement already composed CPU worlds.
|
|
135
|
+
// Forward intent even through links whose worlds belong to the GPU.
|
|
136
|
+
this.ecd.sendEvent(this.entity, TRANSFORM64_EVENT_PLACED);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
131
140
|
link() {
|
|
141
|
+
this.ecd.addEntityEventListener(
|
|
142
|
+
this.attachment.parent, TRANSFORM64_EVENT_PLACED, this.handle_parent_placement, this
|
|
143
|
+
);
|
|
132
144
|
// Neither transform carries signals any more, so both announcements come through the
|
|
133
145
|
// dataset, on the channel belonging to the thing that moved. The parent's pose arrives as
|
|
134
146
|
// TRANSFORM64_EVENT_CHANGE on the parent - whether it is a root somebody moved or a link
|
|
@@ -168,6 +180,10 @@ class UpdateContext {
|
|
|
168
180
|
|
|
169
181
|
this.#linked = false;
|
|
170
182
|
|
|
183
|
+
this.ecd.removeEntityEventListener(
|
|
184
|
+
this.attachment.parent, TRANSFORM64_EVENT_PLACED, this.handle_parent_placement, this
|
|
185
|
+
);
|
|
186
|
+
|
|
171
187
|
this.ecd.removeEntityEventListener(
|
|
172
188
|
this.attachment.parent,
|
|
173
189
|
TRANSFORM64_EVENT_CHANGE,
|
|
@@ -43,6 +43,12 @@ declare class Water {
|
|
|
43
43
|
* @type {Vector1}
|
|
44
44
|
*/
|
|
45
45
|
scattering: Vector1;
|
|
46
|
+
/** Air-to-water optical properties; scattering scales the authored RGB extinction. */
|
|
47
|
+
ior: Vector1;
|
|
48
|
+
opticalNormalStrength: Vector1;
|
|
49
|
+
opticalNormalScale: Vector1;
|
|
50
|
+
extinction: Vector3;
|
|
51
|
+
reflectionRoughness: Vector1;
|
|
46
52
|
bvh: BvhClient;
|
|
47
53
|
updateBounds(): void;
|
|
48
54
|
fromJSON(json: any): void;
|
|
@@ -54,6 +60,29 @@ declare class Water {
|
|
|
54
60
|
b: number;
|
|
55
61
|
a: number;
|
|
56
62
|
};
|
|
63
|
+
shoreColor: {
|
|
64
|
+
r: number;
|
|
65
|
+
g: number;
|
|
66
|
+
b: number;
|
|
67
|
+
a: number;
|
|
68
|
+
};
|
|
69
|
+
shoreDepthTransition: {
|
|
70
|
+
min: number;
|
|
71
|
+
max: number;
|
|
72
|
+
};
|
|
73
|
+
waveSpeed: number;
|
|
74
|
+
waveAmplitude: number;
|
|
75
|
+
waveFrequency: number;
|
|
76
|
+
scattering: number;
|
|
77
|
+
ior: number;
|
|
78
|
+
opticalNormalStrength: number;
|
|
79
|
+
opticalNormalScale: number;
|
|
80
|
+
extinction: {
|
|
81
|
+
x: number;
|
|
82
|
+
y: number;
|
|
83
|
+
z: number;
|
|
84
|
+
};
|
|
85
|
+
reflectionRoughness: number;
|
|
57
86
|
};
|
|
58
87
|
}
|
|
59
88
|
declare namespace Water {
|
|
@@ -62,5 +91,6 @@ declare namespace Water {
|
|
|
62
91
|
import Vector1 from "../../../../core/geom/Vector1.js";
|
|
63
92
|
import { Color } from "../../../../core/color/Color.js";
|
|
64
93
|
import { NumericInterval } from "../../../../core/math/interval/NumericInterval.js";
|
|
94
|
+
import Vector3 from "../../../../core/geom/Vector3.js";
|
|
65
95
|
import { BvhClient } from "../../../../core/bvh2/bvh3/BvhClient.js";
|
|
66
96
|
//# sourceMappingURL=Water.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Water.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/ecs/water/Water.js"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"Water.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/ecs/water/Water.js"],"names":[],"mappings":";AAOA;;;;;GAKG;AACH;IAuDI,0BAMC;IA5DD,eAAuB;IACvB;;;OAGG;IACH,OAFU,KAAK,CAEgB;IAG/B;;;OAGG;IACH,sBAFU,eAAe,CAE0B;IAGnD;;;OAGG;IACH,YAFU,KAAK,CAE6B;IAE5C;;;OAGG;IACH,WAFU,OAAO,CAEY;IAE7B;;;OAGG;IACH,eAFU,OAAO,CAEgB;IAEjC;;;OAGG;IACH,eAFU,OAAO,CAEc;IAE/B;;;OAGG;IACH,YAFU,OAAO,CAEa;IAE9B,sFAAsF;IACtF,aAAwB;IACxB,+BAA0C;IAC1C,4BAAoC;IACpC,oBAA4C;IAC5C,6BAAwC;IAExC,eAAsB;IAUtB,qBAcC;IAED,0BAcC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAWC;CACJ;;;;oBAtHmB,kCAAkC;sBADhC,iCAAiC;gCAGvB,mDAAmD;oBAD/D,kCAAkC;0BAH5B,yCAAyC"}
|
|
@@ -1,104 +1,125 @@
|
|
|
1
|
-
import { BvhClient } from "../../../../core/bvh2/bvh3/BvhClient.js";
|
|
2
|
-
import { Color } from "../../../../core/color/Color.js";
|
|
3
|
-
import Vector1 from "../../../../core/geom/Vector1.js";
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
*
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
*
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
*
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
*
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
*
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
*
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
*
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
1
|
+
import { BvhClient } from "../../../../core/bvh2/bvh3/BvhClient.js";
|
|
2
|
+
import { Color } from "../../../../core/color/Color.js";
|
|
3
|
+
import Vector1 from "../../../../core/geom/Vector1.js";
|
|
4
|
+
import Vector3 from "../../../../core/geom/Vector3.js";
|
|
5
|
+
import { NumericInterval } from "../../../../core/math/interval/NumericInterval.js";
|
|
6
|
+
import { WATER_SIZE } from "./WATER_SIZE.js";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* A body of water flooding the level, as authored data and nothing else.
|
|
10
|
+
*
|
|
11
|
+
* The component holds no renderer state: `WaterSystem` reads these values every frame onto the
|
|
12
|
+
* surface its pass draws, which is why an edit needs no notification to be picked up.
|
|
13
|
+
*/
|
|
14
|
+
class Water {
|
|
15
|
+
level = new Vector1(0);
|
|
16
|
+
/**
|
|
17
|
+
*
|
|
18
|
+
* @type {Color}
|
|
19
|
+
*/
|
|
20
|
+
color = new Color(0, 0.3, 0.5);
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Defines what is considered as shore as well as how long is the transition between shore and deep water
|
|
25
|
+
* @type {NumericInterval}
|
|
26
|
+
*/
|
|
27
|
+
shoreDepthTransition = new NumericInterval(0.7, 2);
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Color of the water at the shore
|
|
32
|
+
* @type {Color}
|
|
33
|
+
*/
|
|
34
|
+
shoreColor = new Color(0.584, 0.792, 0.850);
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
*
|
|
38
|
+
* @type {Vector1}
|
|
39
|
+
*/
|
|
40
|
+
waveSpeed = new Vector1(1.8);
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
*
|
|
44
|
+
* @type {Vector1}
|
|
45
|
+
*/
|
|
46
|
+
waveAmplitude = new Vector1(0.3);
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
*
|
|
50
|
+
* @type {Vector1}
|
|
51
|
+
*/
|
|
52
|
+
waveFrequency = new Vector1(1);
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Scattering of light, the higher this value is - the more opaque water will become
|
|
56
|
+
* @type {Vector1}
|
|
57
|
+
*/
|
|
58
|
+
scattering = new Vector1(1.2);
|
|
59
|
+
|
|
60
|
+
/** Air-to-water optical properties; scattering scales the authored RGB extinction. */
|
|
61
|
+
ior = new Vector1(1.33);
|
|
62
|
+
opticalNormalStrength = new Vector1(0.08);
|
|
63
|
+
opticalNormalScale = new Vector1(3);
|
|
64
|
+
extinction = new Vector3(0.12, 0.035, 0.02);
|
|
65
|
+
reflectionRoughness = new Vector1(0.08);
|
|
66
|
+
|
|
67
|
+
bvh = new BvhClient();
|
|
68
|
+
|
|
69
|
+
constructor(options) {
|
|
70
|
+
|
|
71
|
+
if (options !== undefined) {
|
|
72
|
+
console.error('Constructor options are deprecated');
|
|
73
|
+
this.fromJSON(options);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
updateBounds() {
|
|
78
|
+
const width = WATER_SIZE;
|
|
79
|
+
const height = WATER_SIZE;
|
|
80
|
+
|
|
81
|
+
const level = this.level.getValue();
|
|
82
|
+
|
|
83
|
+
this.bvh.resize(
|
|
84
|
+
-width / 4,
|
|
85
|
+
level,
|
|
86
|
+
-height / 4,
|
|
87
|
+
width * (3 / 4),
|
|
88
|
+
level,
|
|
89
|
+
height * (3 / 4)
|
|
90
|
+
);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
fromJSON(json) {
|
|
94
|
+
if (typeof json.level === 'number') {
|
|
95
|
+
this.level.fromJSON(json.level);
|
|
96
|
+
}
|
|
97
|
+
if (typeof json.color === 'object') {
|
|
98
|
+
this.color.fromJSON(json.color);
|
|
99
|
+
}
|
|
100
|
+
for (const key of ['waveSpeed', 'waveAmplitude', 'waveFrequency', 'scattering', 'ior',
|
|
101
|
+
'opticalNormalStrength', 'opticalNormalScale', 'reflectionRoughness']) {
|
|
102
|
+
if (typeof json[key] === 'number') { this[key].fromJSON(json[key]); }
|
|
103
|
+
}
|
|
104
|
+
for (const key of ['shoreColor', 'shoreDepthTransition', 'extinction']) {
|
|
105
|
+
if (json[key] !== null && typeof json[key] === 'object') { this[key].fromJSON(json[key]); }
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
toJSON() {
|
|
110
|
+
return {
|
|
111
|
+
level: this.level.toJSON(),
|
|
112
|
+
color: this.color.toJSON(),
|
|
113
|
+
shoreColor: this.shoreColor.toJSON(), shoreDepthTransition: this.shoreDepthTransition.toJSON(),
|
|
114
|
+
waveSpeed: this.waveSpeed.toJSON(), waveAmplitude: this.waveAmplitude.toJSON(),
|
|
115
|
+
waveFrequency: this.waveFrequency.toJSON(), scattering: this.scattering.toJSON(),
|
|
116
|
+
ior: this.ior.toJSON(), opticalNormalStrength: this.opticalNormalStrength.toJSON(),
|
|
117
|
+
opticalNormalScale: this.opticalNormalScale.toJSON(), extinction: this.extinction.toJSON(),
|
|
118
|
+
reflectionRoughness: this.reflectionRoughness.toJSON(),
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
Water.typeName = "Water";
|
|
124
|
+
|
|
125
|
+
export default Water;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WaterSerializationAdapter.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/ecs/water/WaterSerializationAdapter.js"],"names":[],"mappings":"AAGA;;IAEI,oBAAc;IAGd;;;;OAIG;IACH,uCAFW,KAAK,
|
|
1
|
+
{"version":3,"file":"WaterSerializationAdapter.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/ecs/water/WaterSerializationAdapter.js"],"names":[],"mappings":"AAGA;;IAEI,oBAAc;IAGd;;;;OAIG;IACH,uCAFW,KAAK,QA0Bf;IAED;;;;OAIG;IACH,yCAFW,KAAK,QA8Bf;CACJ;gDAzE+C,gEAAgE;kBAC9F,YAAY"}
|
|
@@ -4,7 +4,7 @@ import Water from "./Water.js";
|
|
|
4
4
|
export class WaterSerializationAdapter extends BinaryClassSerializationAdapter {
|
|
5
5
|
|
|
6
6
|
klass = Water;
|
|
7
|
-
version =
|
|
7
|
+
version = 2;
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
*
|
|
@@ -28,6 +28,13 @@ export class WaterSerializationAdapter extends BinaryClassSerializationAdapter {
|
|
|
28
28
|
buffer.writeFloat32(value.waveFrequency.getValue());
|
|
29
29
|
|
|
30
30
|
buffer.writeFloat32(value.scattering.getValue());
|
|
31
|
+
buffer.writeFloat32(value.ior.getValue());
|
|
32
|
+
buffer.writeFloat32(value.opticalNormalStrength.getValue());
|
|
33
|
+
buffer.writeFloat32(value.opticalNormalScale.getValue());
|
|
34
|
+
buffer.writeFloat32(value.reflectionRoughness.getValue());
|
|
35
|
+
buffer.writeFloat32(value.extinction.x);
|
|
36
|
+
buffer.writeFloat32(value.extinction.y);
|
|
37
|
+
buffer.writeFloat32(value.extinction.z);
|
|
31
38
|
}
|
|
32
39
|
|
|
33
40
|
/**
|
|
@@ -58,5 +65,10 @@ export class WaterSerializationAdapter extends BinaryClassSerializationAdapter {
|
|
|
58
65
|
value.waveAmplitude.set(waveAmplitude);
|
|
59
66
|
value.waveFrequency.set(waveFrequency);
|
|
60
67
|
value.scattering.set(scattering);
|
|
68
|
+
value.ior.set(buffer.readFloat32());
|
|
69
|
+
value.opticalNormalStrength.set(buffer.readFloat32());
|
|
70
|
+
value.opticalNormalScale.set(buffer.readFloat32());
|
|
71
|
+
value.reflectionRoughness.set(buffer.readFloat32());
|
|
72
|
+
value.extinction.set(buffer.readFloat32(), buffer.readFloat32(), buffer.readFloat32());
|
|
61
73
|
}
|
|
62
74
|
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** Preserve the version-1 appearance record and append the new component defaults. */
|
|
2
|
+
export class WaterSerializationUpgrader_1_2 extends BinaryClassUpgrader {
|
|
3
|
+
upgrade(source: any, target: any): void;
|
|
4
|
+
}
|
|
5
|
+
import { BinaryClassUpgrader } from "../../../ecs/storage/binary/BinaryClassUpgrader.js";
|
|
6
|
+
//# sourceMappingURL=WaterSerializationUpgrader_1_2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WaterSerializationUpgrader_1_2.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/ecs/water/WaterSerializationUpgrader_1_2.js"],"names":[],"mappings":"AAGA,sFAAsF;AACtF;IAII,wCAQC;CACJ;oCAjBmC,oDAAoD"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { BinaryClassUpgrader } from "../../../ecs/storage/binary/BinaryClassUpgrader.js";
|
|
2
|
+
import Water from "./Water.js";
|
|
3
|
+
|
|
4
|
+
/** Preserve the version-1 appearance record and append the new component defaults. */
|
|
5
|
+
export class WaterSerializationUpgrader_1_2 extends BinaryClassUpgrader {
|
|
6
|
+
__startVersion = 1;
|
|
7
|
+
__targetVersion = 2;
|
|
8
|
+
|
|
9
|
+
upgrade(source, target) {
|
|
10
|
+
const old = new Uint8Array(38);
|
|
11
|
+
source.readBytes(old, 0, old.length);
|
|
12
|
+
target.writeBytes(old, 0, old.length);
|
|
13
|
+
const defaults = new Water();
|
|
14
|
+
for (const value of [defaults.ior.getValue(), defaults.opticalNormalStrength.getValue(),
|
|
15
|
+
defaults.opticalNormalScale.getValue(), defaults.reflectionRoughness.getValue(),
|
|
16
|
+
defaults.extinction.x, defaults.extinction.y, defaults.extinction.z]) { target.writeFloat32(value); }
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Draws the level's water under Shade.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* opaque lit and composited, transparency not yet run — and keeps a list of surfaces the pass draws.
|
|
4
|
+
* Water is a shared AVBOIT side channel. The extension is debug presentation only; normal frames
|
|
5
|
+
* composite water exactly once alongside particles, meshlets and trails in AVBOIT's resolve.
|
|
7
6
|
*
|
|
8
7
|
* Registration does not wait for a device. `GraphicsEngine` holds extensions and applies them
|
|
9
8
|
* to the renderer when one exists and again after a restart (E9, §4.8).
|
|
@@ -14,6 +13,23 @@ export class WaterSystem extends System<any> {
|
|
|
14
13
|
*/
|
|
15
14
|
constructor(graphics: GraphicsEngine);
|
|
16
15
|
dependencies: (typeof Water)[];
|
|
16
|
+
get settings(): {
|
|
17
|
+
enabled: boolean;
|
|
18
|
+
max_distance: number;
|
|
19
|
+
distance_tolerance: number;
|
|
20
|
+
max_updates: number;
|
|
21
|
+
fallback_steps: number;
|
|
22
|
+
mode: number; /**
|
|
23
|
+
* @type {GPUWaterRenderer}
|
|
24
|
+
*/
|
|
25
|
+
reflections: number;
|
|
26
|
+
debug_view: number;
|
|
27
|
+
};
|
|
28
|
+
/** The registered channel, for diagnostics such as testing registration order. */
|
|
29
|
+
get transparency_channel(): GPUWaterRenderer;
|
|
30
|
+
request_probe(uv: any): Promise<any>;
|
|
31
|
+
set time(seconds: number);
|
|
32
|
+
get time(): number;
|
|
17
33
|
/**
|
|
18
34
|
* What the pass draws. Read-only — the surfaces follow the entities, and a harness that wants
|
|
19
35
|
* one gone takes its component off.
|
|
@@ -41,9 +57,8 @@ export class WaterSystem extends System<any> {
|
|
|
41
57
|
#private;
|
|
42
58
|
}
|
|
43
59
|
/**
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
* transparency draws afterwards blends over the water rather than under it.
|
|
60
|
+
* Opt-in water inspection after temporal processing. Kept under the exported name
|
|
61
|
+
* for compatibility; this never records a water color overlay in normal rendering.
|
|
47
62
|
*/
|
|
48
63
|
export class WaterExtension extends RenderExtension {
|
|
49
64
|
/**
|
|
@@ -55,5 +70,6 @@ export class WaterExtension extends RenderExtension {
|
|
|
55
70
|
}
|
|
56
71
|
import { System } from "../ecs/System.js";
|
|
57
72
|
import Water from "../graphics/ecs/water/Water.js";
|
|
73
|
+
import { GPUWaterRenderer } from "../../shade/renderer/water/GPUWaterRenderer.js";
|
|
58
74
|
import { RenderExtension } from "../../shade/renderer/extension/RenderExtension.js";
|
|
59
75
|
//# sourceMappingURL=WaterSystem.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WaterSystem.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/WaterSystem.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"WaterSystem.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/WaterSystem.js"],"names":[],"mappings":"AAWA;;;;;;;;GAQG;AACH;IA6DI;;OAEG;IACH,sCAMC;IArED,+BAAuB;IA6BvB;;;;;;sBAtBA;;WAEG;;;MAoB+C;IAElD,kFAAkF;IAClF,6CAAqD;IAErD,qCAA8D;IAG9D,0BAIC;IALD,mBAAiC;IAcjC;;;;;OAKG;IACH,+BAEC;IAaD,2CAMC;IAED,4CAWC;IAED;;OAEG;IACH,kCAGC;IAED;;;OAGG;IACH,YAHW,KAAK,UACL,MAAM,QA+BhB;IAED;;;OAGG;IACH,cAHW,KAAK,UACL,MAAM,QAgBhB;IAED,6BAgBC;;CA4FJ;AAED;;;GAGG;AACH;IAWI;;OAEG;IACH,oBAFW,WAAW,EAMrB;IAED,yBAEC;;CACJ;uBArTsB,kBAAkB;kBAHvB,gCAAgC;iCAIjB,gDAAgD;gCAGjD,mDAAmD"}
|