Advance Blender WebEngine N-015 through N-022 parity

This commit is contained in:
mes123456
2026-08-12 13:26:34 -04:00
parent 9fd26010f6
commit b3cefaeec5
51 changed files with 1809 additions and 171 deletions

View File

@@ -93,8 +93,22 @@ function assertEdited(scene) {
const light = scene.lights.find((item) => item.id === "light:Area");
const world = scene.worlds.find((item) => item.id === "world:World");
const definition = scene.scenes.find((item) => item.id === "scene:Scene");
assert.equal(camera.projection, "PERSPECTIVE");
assert.equal(camera.depthOfField.enabled, false);
assert.equal(camera.projection, "ORTHOGRAPHIC");
close(camera.lensMm, 35, "camera lens");
close(camera.sensorWidthMm, 32, "camera sensor width");
close(camera.sensorHeightMm, 18, "camera sensor height");
assert.equal(camera.sensorFit, 1);
close(camera.shift[0], 0.1, "camera shift x");
close(camera.shift[1], -0.2, "camera shift y");
close(camera.near, 0.2, "camera near");
close(camera.far, 500, "camera far");
close(camera.orthoScale, 8, "camera ortho scale");
assert.equal(camera.depthOfField.enabled, true);
close(camera.depthOfField.focusDistance, 4.5, "camera focus distance");
close(camera.depthOfField.apertureFStop, 1.8, "camera aperture f-stop");
assert.equal(camera.depthOfField.apertureBlades, 7);
close(camera.depthOfField.apertureRotation, 0.25, "camera aperture rotation");
close(camera.depthOfField.apertureRatio, 1.2, "camera aperture ratio");
close(light.energy, 400, "light energy");
close(light.exposure, 1, "light exposure");
assert.equal(light.castsShadow, false);
@@ -120,6 +134,21 @@ open(engine, handle, fixture);
const before = assertLighting(snapshot(engine, handle));
command(engine, handle, { type: "setObjectVisibility", objectId: "object:BasicCube", visible: true });
assert.equal(snapshot(engine, handle).scenes.find((item) => item.id === before.definition.id).colorManagement.whiteBalanceStatus, "AVAILABLE");
reject(engine, handle, { type: "setCameraProperties", dataId: before.camera.id, properties: { near: 10, far: 1 } }, "RENDER_PROPERTY_INVALID");
assert.equal(snapshot(engine, handle).cameras.find((item) => item.id === before.camera.id).near, before.camera.near);
command(engine, handle, { type: "setCameraProperties", dataId: before.camera.id, properties: {
projection: "ORTHOGRAPHIC", lensMm: 35, sensorWidthMm: 32, sensorHeightMm: 18,
sensorFit: 1, shift: [0.1, -0.2], near: 0.2, far: 500, orthoScale: 8,
depthOfField: { enabled: true, focusDistance: 4.5, apertureFStop: 1.8, apertureBlades: 7, apertureRotation: 0.25, apertureRatio: 1.2 },
} });
let cameraEdited = snapshot(engine, handle);
assert.equal(cameraEdited.scenes.find((item) => item.id === before.definition.id).colorManagement.whiteBalanceStatus, "BLOCKED");
assert.equal(cameraEdited.cameras.find((item) => item.id === before.camera.id).projection, "ORTHOGRAPHIC");
assert.equal(engine._web_engine_undo(handle), 0, engine.UTF8ToString(engine._web_engine_last_error_message()));
assert.equal(snapshot(engine, handle).cameras.find((item) => item.id === before.camera.id).projection, "PERSPECTIVE");
assert.equal(engine._web_engine_redo(handle), 0, engine.UTF8ToString(engine._web_engine_last_error_message()));
cameraEdited = snapshot(engine, handle);
assert.equal(cameraEdited.cameras.find((item) => item.id === before.camera.id).projection, "ORTHOGRAPHIC");
command(engine, handle, { type: "setLightProperties", dataId: before.light.id, properties: {
color: [0.25, 0.5, 0.75], energy: 400, exposure: 1, castsShadow: false,
temperature: 5000, useTemperature: true,
@@ -143,4 +172,4 @@ open(engine, reopened, saved);
assertEdited(snapshot(engine, reopened));
engine._web_engine_destroy(reopened);
process.stdout.write("lighting-roundtrip-ok camera-dof=passed light-shadow-exposure=passed world-mist=passed color-management-reader=passed white-balance-gate=passed undo-redo=passed save-reopen=passed\n");
process.stdout.write("lighting-roundtrip-ok camera-writer-dof=passed light-shadow-exposure=passed world-mist=passed color-management-reader=passed white-balance-gate=passed undo-redo=passed save-reopen=passed\n");