Files
engine/e2e/case/multi-scene-clear.ts
ChenMo 425ee3552c Refactor all color properties to linear space (#2656)
* refactor: use linear color space
2025-05-16 16:25:26 +08:00

86 lines
2.5 KiB
TypeScript

/**
* @title Multi scene clear
* @category Advance
*/
import {
BlinnPhongMaterial,
BloomEffect,
Camera,
Color,
Engine,
Logger,
MeshRenderer,
PostProcess,
PrimitiveMesh,
Scene,
TonemappingEffect,
WebGLEngine
} from "@galacean/engine";
import { initScreenshot, updateForE2E } from "./.mockForE2E";
Logger.enable();
WebGLEngine.create({ canvas: "canvas" }).then((engine) => {
engine.canvas.resizeByClientSize();
const firstCamera = initFirstScene(engine);
const secondCamera = initSecondScene(engine);
updateForE2E(engine);
initScreenshot(engine, [firstCamera, secondCamera]);
// initScreenshot(engine, [secondCamera, firstCamera]);
});
function initFirstScene(engine: Engine): Camera {
const scene = engine.sceneManager.scenes[0];
const rootEntity = scene.createRootEntity();
// Create full screen camera
const cameraEntity = rootEntity.createChild("fullscreen-camera");
const camera = cameraEntity.addComponent(Camera);
cameraEntity.transform.setPosition(0, 0, 20);
// Create cube
const cubeEntity = rootEntity.createChild("cube");
cubeEntity.transform.setPosition(-2, 0, 3);
const renderer = cubeEntity.addComponent(MeshRenderer);
renderer.mesh = PrimitiveMesh.createCuboid(engine, 2, 2, 2);
const material = new BlinnPhongMaterial(engine);
material.baseColor = new Color(1, 0, 0, 1);
renderer.setMaterial(material);
return camera;
}
function initSecondScene(engine: Engine): Camera {
// Init window camera
const scene = new Scene(engine);
engine.sceneManager.addScene(scene);
const rootEntity = scene.createRootEntity();
const cameraEntity = rootEntity.createChild("window-camera");
const camera = cameraEntity.addComponent(Camera);
camera.enablePostProcess = true;
// camera.clearFlags = CameraClearFlags.None;
const globalPostProcessEntity = scene.createRootEntity();
const postProcess = globalPostProcessEntity.addComponent(PostProcess);
const bloomEffect = postProcess.addEffect(BloomEffect);
postProcess.addEffect(TonemappingEffect);
bloomEffect.threshold.value = 0.010022825574869039;
bloomEffect.intensity.value = 2;
cameraEntity.transform.setPosition(0, 0, 20);
// Create cube
const cubeEntity = rootEntity.createChild("cube");
cubeEntity.transform.setPosition(2, 0, 3);
const renderer = cubeEntity.addComponent(MeshRenderer);
renderer.mesh = PrimitiveMesh.createCuboid(engine, 2, 2, 2);
const material = new BlinnPhongMaterial(engine);
material.baseColor = new Color(1, 0, 0, 1);
material.emissiveColor.set(1, 0, 0, 1);
renderer.setMaterial(material);
return camera;
}