diff --git a/tests/domain/build-runtime-scene.test.ts b/tests/domain/build-runtime-scene.test.ts index b56a17e0..257d96fa 100644 --- a/tests/domain/build-runtime-scene.test.ts +++ b/tests/domain/build-runtime-scene.test.ts @@ -733,7 +733,8 @@ describe("buildRuntimeSceneFromDocument", () => { colorHex: "#2f79c4", surfaceOpacity: 0.7, waveStrength: 0.35, - foamContactLimit: 6 + foamContactLimit: 6, + surfaceDisplacementEnabled: false } } }); diff --git a/tests/domain/create-box-brush.command.test.ts b/tests/domain/create-box-brush.command.test.ts index 2464704a..8e6b631b 100644 --- a/tests/domain/create-box-brush.command.test.ts +++ b/tests/domain/create-box-brush.command.test.ts @@ -296,7 +296,8 @@ describe("box brush commands", () => { colorHex: "#3a7dc2", surfaceOpacity: 0.65, waveStrength: 0.4, - foamContactLimit: 6 + foamContactLimit: 6, + surfaceDisplacementEnabled: false } } }) @@ -308,7 +309,8 @@ describe("box brush commands", () => { colorHex: "#3a7dc2", surfaceOpacity: 0.65, waveStrength: 0.4, - foamContactLimit: 6 + foamContactLimit: 6, + surfaceDisplacementEnabled: false } }); @@ -324,7 +326,8 @@ describe("box brush commands", () => { colorHex: "#3a7dc2", surfaceOpacity: 0.65, waveStrength: 0.4, - foamContactLimit: 6 + foamContactLimit: 6, + surfaceDisplacementEnabled: false } }); }); diff --git a/tests/domain/scene-document-validation.test.ts b/tests/domain/scene-document-validation.test.ts index 8a8255b3..dfa4f502 100644 --- a/tests/domain/scene-document-validation.test.ts +++ b/tests/domain/scene-document-validation.test.ts @@ -552,7 +552,8 @@ describe("validateSceneDocument", () => { water: { colorHex: "#3a7dc2", surfaceOpacity: 0.6, - waveStrength: 0.3 + waveStrength: 0.3, + surfaceDisplacementEnabled: false } }; (invalidWaterBrush as any).volume = { @@ -599,6 +600,10 @@ describe("validateSceneDocument", () => { code: "invalid-box-water-wave-strength", path: "brushes.brush-invalid-volume-water.volume.water.waveStrength" }), + expect.objectContaining({ + code: "invalid-box-water-surface-displacement-enabled", + path: "brushes.brush-invalid-volume-water.volume.water.surfaceDisplacementEnabled" + }), expect.objectContaining({ code: "invalid-box-fog-color", path: "brushes.brush-invalid-volume-fog.volume.fog.colorHex" diff --git a/tests/domain/water-material.test.ts b/tests/domain/water-material.test.ts index 8730d935..705f7c60 100644 --- a/tests/domain/water-material.test.ts +++ b/tests/domain/water-material.test.ts @@ -608,8 +608,9 @@ describe("water material helpers", () => { expect(material.uniforms["fogDensity"]).toBeDefined(); expect(material.uniforms["surfaceOpacity"]?.value).toBeGreaterThan(0.14); expect(material.uniforms["waveStrength"]?.value).toBe(0.35); + expect(material.uniforms["surfaceDisplacementEnabled"]?.value).toBe(0); expect(material.uniforms["isTopFace"]?.value).toBe(1); - expect(material.vertexShader).not.toContain("transformed.y +="); + expect(material.vertexShader).toContain("surfaceDisplacementEnabled"); expect(result.contactPatchesUniform?.value).toHaveLength(MAX_BOX_BRUSH_WATER_FOAM_CONTACT_LIMIT); expect(result.contactPatchShapesUniform?.value).toHaveLength(MAX_BOX_BRUSH_WATER_FOAM_CONTACT_LIMIT); expect(result.reflectionTextureUniform).not.toBeNull(); diff --git a/tests/serialization/scene-document-json.test.ts b/tests/serialization/scene-document-json.test.ts index 17c8b407..a8f46167 100644 --- a/tests/serialization/scene-document-json.test.ts +++ b/tests/serialization/scene-document-json.test.ts @@ -151,7 +151,8 @@ describe("scene document JSON", () => { colorHex: "#2f79c4", surfaceOpacity: 0.65, waveStrength: 0.35, - foamContactLimit: 9 + foamContactLimit: 9, + surfaceDisplacementEnabled: true } } }); @@ -308,7 +309,8 @@ describe("scene document JSON", () => { expect(migratedDocument.brushes["brush-water-legacy"]?.volume).toEqual({ mode: "water", water: expect.objectContaining({ - foamContactLimit: 24 + foamContactLimit: 24, + surfaceDisplacementEnabled: false }) }); }); diff --git a/tests/unit/underwater-fog.test.ts b/tests/unit/underwater-fog.test.ts index 41de8e40..d3da7b5d 100644 --- a/tests/unit/underwater-fog.test.ts +++ b/tests/unit/underwater-fog.test.ts @@ -28,7 +28,7 @@ describe("resolveUnderwaterFogState", () => { expect(fogState).not.toBeNull(); expect(fogState?.colorHex).toBe("#347aa0"); - expect(fogState?.density ?? 0).toBeCloseTo(0.03352, 5); + expect(fogState?.density ?? 0).toBeCloseTo(0.08295, 5); }); it("does not enable fog when the camera is not submerged", () => { diff --git a/tests/unit/water-volume.integration.test.tsx b/tests/unit/water-volume.integration.test.tsx index 33a5de39..8d2166e7 100644 --- a/tests/unit/water-volume.integration.test.tsx +++ b/tests/unit/water-volume.integration.test.tsx @@ -100,7 +100,8 @@ describe("water volume integration", () => { colorHex: "#4da6d9", surfaceOpacity: 0.55, waveStrength: 0.35, - foamContactLimit: 6 + foamContactLimit: 6, + surfaceDisplacementEnabled: false } } }); @@ -144,7 +145,8 @@ describe("water volume integration", () => { colorHex: "#12a4ff", surfaceOpacity: 0.55, waveStrength: 0.35, - foamContactLimit: 6 + foamContactLimit: 6, + surfaceDisplacementEnabled: false } }); });