From e637b14100dd25ed353246199ffa25685990f4a7 Mon Sep 17 00:00:00 2001 From: GuoLei1990 Date: Fri, 12 Jan 2024 15:42:47 +0800 Subject: [PATCH 01/21] "v1.1.0-beta.38" --- packages/core/package.json | 2 +- packages/design/package.json | 2 +- packages/draco/package.json | 2 +- packages/galacean/package.json | 2 +- packages/loader/package.json | 2 +- packages/math/package.json | 2 +- packages/physics-lite/package.json | 2 +- packages/physics-physx/package.json | 2 +- packages/rhi-webgl/package.json | 2 +- packages/shader-lab/package.json | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index 6f53692937..6297ef8835 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-core", - "version": "1.1.0-beta.37", + "version": "1.1.0-beta.38", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/design/package.json b/packages/design/package.json index fa1374f608..15fd816aba 100644 --- a/packages/design/package.json +++ b/packages/design/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-design", - "version": "1.1.0-beta.37", + "version": "1.1.0-beta.38", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/draco/package.json b/packages/draco/package.json index 7cddc706db..74c80b4906 100644 --- a/packages/draco/package.json +++ b/packages/draco/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-draco", - "version": "1.1.0-beta.37", + "version": "1.1.0-beta.38", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/galacean/package.json b/packages/galacean/package.json index dd4ed66976..9012e686da 100644 --- a/packages/galacean/package.json +++ b/packages/galacean/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine", - "version": "1.1.0-beta.37", + "version": "1.1.0-beta.38", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/loader/package.json b/packages/loader/package.json index 5b58425831..c0fd93f0b6 100644 --- a/packages/loader/package.json +++ b/packages/loader/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-loader", - "version": "1.1.0-beta.37", + "version": "1.1.0-beta.38", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/math/package.json b/packages/math/package.json index 228f6bf75d..bbedec9e61 100644 --- a/packages/math/package.json +++ b/packages/math/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-math", - "version": "1.1.0-beta.37", + "version": "1.1.0-beta.38", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/physics-lite/package.json b/packages/physics-lite/package.json index 5be4ba091f..54e0c2fe1c 100644 --- a/packages/physics-lite/package.json +++ b/packages/physics-lite/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-physics-lite", - "version": "1.1.0-beta.37", + "version": "1.1.0-beta.38", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/physics-physx/package.json b/packages/physics-physx/package.json index 65dbcdcb1f..40e3d48eb2 100644 --- a/packages/physics-physx/package.json +++ b/packages/physics-physx/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-physics-physx", - "version": "1.1.0-beta.37", + "version": "1.1.0-beta.38", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/rhi-webgl/package.json b/packages/rhi-webgl/package.json index fb711d08e8..e63233ee18 100644 --- a/packages/rhi-webgl/package.json +++ b/packages/rhi-webgl/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-rhi-webgl", - "version": "1.1.0-beta.37", + "version": "1.1.0-beta.38", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/shader-lab/package.json b/packages/shader-lab/package.json index 00261abde4..723e27cb50 100644 --- a/packages/shader-lab/package.json +++ b/packages/shader-lab/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-shader-lab", - "version": "1.1.0-beta.37", + "version": "1.1.0-beta.38", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" From d9ba225416451c7f97a20a1676161b70a78b1d9f Mon Sep 17 00:00:00 2001 From: GuoLei1990 Date: Fri, 12 Jan 2024 15:50:02 +0800 Subject: [PATCH 02/21] "v1.1.0-beta.39" --- packages/core/package.json | 2 +- packages/design/package.json | 2 +- packages/draco/package.json | 2 +- packages/galacean/package.json | 2 +- packages/loader/package.json | 2 +- packages/math/package.json | 2 +- packages/physics-lite/package.json | 2 +- packages/physics-physx/package.json | 2 +- packages/rhi-webgl/package.json | 2 +- packages/shader-lab/package.json | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index 6297ef8835..27c043d9e3 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-core", - "version": "1.1.0-beta.38", + "version": "1.1.0-beta.39", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/design/package.json b/packages/design/package.json index 15fd816aba..9e1336ac4f 100644 --- a/packages/design/package.json +++ b/packages/design/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-design", - "version": "1.1.0-beta.38", + "version": "1.1.0-beta.39", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/draco/package.json b/packages/draco/package.json index 74c80b4906..0ecc7fc705 100644 --- a/packages/draco/package.json +++ b/packages/draco/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-draco", - "version": "1.1.0-beta.38", + "version": "1.1.0-beta.39", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/galacean/package.json b/packages/galacean/package.json index 9012e686da..5cead45d8f 100644 --- a/packages/galacean/package.json +++ b/packages/galacean/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine", - "version": "1.1.0-beta.38", + "version": "1.1.0-beta.39", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/loader/package.json b/packages/loader/package.json index c0fd93f0b6..c41ba06b9c 100644 --- a/packages/loader/package.json +++ b/packages/loader/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-loader", - "version": "1.1.0-beta.38", + "version": "1.1.0-beta.39", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/math/package.json b/packages/math/package.json index bbedec9e61..ec1720124c 100644 --- a/packages/math/package.json +++ b/packages/math/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-math", - "version": "1.1.0-beta.38", + "version": "1.1.0-beta.39", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/physics-lite/package.json b/packages/physics-lite/package.json index 54e0c2fe1c..25d2493bc4 100644 --- a/packages/physics-lite/package.json +++ b/packages/physics-lite/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-physics-lite", - "version": "1.1.0-beta.38", + "version": "1.1.0-beta.39", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/physics-physx/package.json b/packages/physics-physx/package.json index 40e3d48eb2..8e1248eb1a 100644 --- a/packages/physics-physx/package.json +++ b/packages/physics-physx/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-physics-physx", - "version": "1.1.0-beta.38", + "version": "1.1.0-beta.39", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/rhi-webgl/package.json b/packages/rhi-webgl/package.json index e63233ee18..cc57bcf357 100644 --- a/packages/rhi-webgl/package.json +++ b/packages/rhi-webgl/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-rhi-webgl", - "version": "1.1.0-beta.38", + "version": "1.1.0-beta.39", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/shader-lab/package.json b/packages/shader-lab/package.json index 723e27cb50..eef26952cf 100644 --- a/packages/shader-lab/package.json +++ b/packages/shader-lab/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-shader-lab", - "version": "1.1.0-beta.38", + "version": "1.1.0-beta.39", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" From caa5b38aa717c5918567b003aae341b47b688cdf Mon Sep 17 00:00:00 2001 From: singlecoder Date: Tue, 16 Jan 2024 10:33:55 +0800 Subject: [PATCH 03/21] Fix cone and capsule error (#1961) * fix(primitivemesh): fix clone and capsule error --- e2e/case/primitive-capsule.ts | 61 +++++++++++++++++++ e2e/case/primitive-cone.ts | 61 +++++++++++++++++++ e2e/case/primitive-cuboid.ts | 61 +++++++++++++++++++ e2e/case/primitive-cylinder.ts | 61 +++++++++++++++++++ e2e/case/primitive-plane.ts | 61 +++++++++++++++++++ e2e/case/primitive-sphere.ts | 61 +++++++++++++++++++ e2e/case/primitive-torus.ts | 61 +++++++++++++++++++ .../Primitive_primitive-capsule.jpg | 3 + .../originImage/Primitive_primitive-cone.jpg | 3 + .../Primitive_primitive-cuboid.jpg | 3 + .../Primitive_primitive-cylinder.jpg | 3 + .../originImage/Primitive_primitive-plane.jpg | 3 + .../Primitive_primitive-sphere.jpg | 3 + .../originImage/Primitive_primitive-torus.jpg | 3 + e2e/tests/primitive.cy.ts | 23 +++++++ packages/core/src/mesh/PrimitiveMesh.ts | 19 +++--- 16 files changed, 482 insertions(+), 8 deletions(-) create mode 100644 e2e/case/primitive-capsule.ts create mode 100644 e2e/case/primitive-cone.ts create mode 100644 e2e/case/primitive-cuboid.ts create mode 100644 e2e/case/primitive-cylinder.ts create mode 100644 e2e/case/primitive-plane.ts create mode 100644 e2e/case/primitive-sphere.ts create mode 100644 e2e/case/primitive-torus.ts create mode 100644 e2e/fixtures/originImage/Primitive_primitive-capsule.jpg create mode 100644 e2e/fixtures/originImage/Primitive_primitive-cone.jpg create mode 100644 e2e/fixtures/originImage/Primitive_primitive-cuboid.jpg create mode 100644 e2e/fixtures/originImage/Primitive_primitive-cylinder.jpg create mode 100644 e2e/fixtures/originImage/Primitive_primitive-plane.jpg create mode 100644 e2e/fixtures/originImage/Primitive_primitive-sphere.jpg create mode 100644 e2e/fixtures/originImage/Primitive_primitive-torus.jpg create mode 100644 e2e/tests/primitive.cy.ts diff --git a/e2e/case/primitive-capsule.ts b/e2e/case/primitive-capsule.ts new file mode 100644 index 0000000000..d098caff3d --- /dev/null +++ b/e2e/case/primitive-capsule.ts @@ -0,0 +1,61 @@ +/** + * @title PrimitiveMesh + * @category Primitive + */ +import { + AssetType, + BlinnPhongMaterial, + Camera, + DirectLight, + Logger, + MeshRenderer, + PrimitiveMesh, + RenderFace, + Texture2D, + Vector3, + WebGLEngine +} from "@galacean/engine"; +import { OrbitControl } from "@galacean/engine-toolkit"; +import { initScreenshot, updateForE2E } from "./.mockForE2E"; + +Logger.enable(); +WebGLEngine.create({ canvas: "canvas" }).then((engine) => { + engine.canvas.resizeByClientSize(2); + const scene = engine.sceneManager.activeScene; + const rootEntity = scene.createRootEntity(); + + // camera + const cameraEntity = rootEntity.createChild("camera_node"); + cameraEntity.transform.position = new Vector3(0, 1, 5); + const camera = cameraEntity.addComponent(Camera); + cameraEntity.addComponent(OrbitControl).target = new Vector3(0, 1, 0); + + const lightNode = rootEntity.createChild("light_node"); + lightNode.addComponent(DirectLight).intensity = 0.6; + lightNode.transform.lookAt(new Vector3(0, 0, 1)); + lightNode.transform.rotate(new Vector3(0, 90, 0)); + + engine.resourceManager + .load({ + url: "https://gw.alipayobjects.com/mdn/rms_7c464e/afts/img/A*ArCHTbfVPXUAAAAAAAAAAAAAARQnAQ", + type: AssetType.Texture2D + }) + .then((texture: Texture2D) => { + const material = new BlinnPhongMaterial(engine); + material.renderFace = RenderFace.Double; + material.baseTexture = texture; + + const entity = rootEntity.createChild("mesh"); + const { transform } = entity; + transform.setPosition(0, 1, 0); + transform.setRotation(45, 45, 0); + const meshRenderer = entity.addComponent(MeshRenderer); + meshRenderer.mesh = PrimitiveMesh.createCapsule(engine, 0.5, 1, 24, 1); + meshRenderer.setMaterial(material); + + updateForE2E(engine); + const category = "Primitive"; + const name = "primitive-capsule"; + initScreenshot(category, name, engine, camera); + }); +}); diff --git a/e2e/case/primitive-cone.ts b/e2e/case/primitive-cone.ts new file mode 100644 index 0000000000..e6495229b2 --- /dev/null +++ b/e2e/case/primitive-cone.ts @@ -0,0 +1,61 @@ +/** + * @title PrimitiveMesh + * @category Primitive + */ +import { + AssetType, + BlinnPhongMaterial, + Camera, + DirectLight, + Logger, + MeshRenderer, + PrimitiveMesh, + RenderFace, + Texture2D, + Vector3, + WebGLEngine +} from "@galacean/engine"; +import { OrbitControl } from "@galacean/engine-toolkit"; +import { initScreenshot, updateForE2E } from "./.mockForE2E"; + +Logger.enable(); +WebGLEngine.create({ canvas: "canvas" }).then((engine) => { + engine.canvas.resizeByClientSize(2); + const scene = engine.sceneManager.activeScene; + const rootEntity = scene.createRootEntity(); + + // camera + const cameraEntity = rootEntity.createChild("camera_node"); + cameraEntity.transform.position = new Vector3(0, 1, 5); + const camera = cameraEntity.addComponent(Camera); + cameraEntity.addComponent(OrbitControl).target = new Vector3(0, 1, 0); + + const lightNode = rootEntity.createChild("light_node"); + lightNode.addComponent(DirectLight).intensity = 0.6; + lightNode.transform.lookAt(new Vector3(0, 0, 1)); + lightNode.transform.rotate(new Vector3(0, 90, 0)); + + engine.resourceManager + .load({ + url: "https://gw.alipayobjects.com/mdn/rms_7c464e/afts/img/A*ArCHTbfVPXUAAAAAAAAAAAAAARQnAQ", + type: AssetType.Texture2D + }) + .then((texture: Texture2D) => { + const material = new BlinnPhongMaterial(engine); + material.renderFace = RenderFace.Double; + material.baseTexture = texture; + + const entity = rootEntity.createChild("mesh"); + const { transform } = entity; + transform.setPosition(0, 1, 0); + transform.setRotation(45, 45, 0); + const meshRenderer = entity.addComponent(MeshRenderer); + meshRenderer.mesh = PrimitiveMesh.createCone(engine); + meshRenderer.setMaterial(material); + + updateForE2E(engine); + const category = "Primitive"; + const name = "primitive-cone"; + initScreenshot(category, name, engine, camera); + }); +}); diff --git a/e2e/case/primitive-cuboid.ts b/e2e/case/primitive-cuboid.ts new file mode 100644 index 0000000000..6ab3ba4402 --- /dev/null +++ b/e2e/case/primitive-cuboid.ts @@ -0,0 +1,61 @@ +/** + * @title PrimitiveMesh + * @category Primitive + */ +import { + AssetType, + BlinnPhongMaterial, + Camera, + DirectLight, + Logger, + MeshRenderer, + PrimitiveMesh, + RenderFace, + Texture2D, + Vector3, + WebGLEngine +} from "@galacean/engine"; +import { OrbitControl } from "@galacean/engine-toolkit"; +import { initScreenshot, updateForE2E } from "./.mockForE2E"; + +Logger.enable(); +WebGLEngine.create({ canvas: "canvas" }).then((engine) => { + engine.canvas.resizeByClientSize(2); + const scene = engine.sceneManager.activeScene; + const rootEntity = scene.createRootEntity(); + + // camera + const cameraEntity = rootEntity.createChild("camera_node"); + cameraEntity.transform.position = new Vector3(0, 1, 5); + const camera = cameraEntity.addComponent(Camera); + cameraEntity.addComponent(OrbitControl).target = new Vector3(0, 1, 0); + + const lightNode = rootEntity.createChild("light_node"); + lightNode.addComponent(DirectLight).intensity = 0.6; + lightNode.transform.lookAt(new Vector3(0, 0, 1)); + lightNode.transform.rotate(new Vector3(0, 90, 0)); + + engine.resourceManager + .load({ + url: "https://gw.alipayobjects.com/mdn/rms_7c464e/afts/img/A*ArCHTbfVPXUAAAAAAAAAAAAAARQnAQ", + type: AssetType.Texture2D + }) + .then((texture: Texture2D) => { + const material = new BlinnPhongMaterial(engine); + material.renderFace = RenderFace.Double; + material.baseTexture = texture; + + const entity = rootEntity.createChild("mesh"); + const { transform } = entity; + transform.setPosition(0, 1, 0); + transform.setRotation(45, 45, 0); + const meshRenderer = entity.addComponent(MeshRenderer); + meshRenderer.mesh = PrimitiveMesh.createCuboid(engine); + meshRenderer.setMaterial(material); + + updateForE2E(engine); + const category = "Primitive"; + const name = "primitive-cuboid"; + initScreenshot(category, name, engine, camera); + }); +}); diff --git a/e2e/case/primitive-cylinder.ts b/e2e/case/primitive-cylinder.ts new file mode 100644 index 0000000000..2160c681bd --- /dev/null +++ b/e2e/case/primitive-cylinder.ts @@ -0,0 +1,61 @@ +/** + * @title PrimitiveMesh + * @category Primitive + */ +import { + AssetType, + BlinnPhongMaterial, + Camera, + DirectLight, + Logger, + MeshRenderer, + PrimitiveMesh, + RenderFace, + Texture2D, + Vector3, + WebGLEngine +} from "@galacean/engine"; +import { OrbitControl } from "@galacean/engine-toolkit"; +import { initScreenshot, updateForE2E } from "./.mockForE2E"; + +Logger.enable(); +WebGLEngine.create({ canvas: "canvas" }).then((engine) => { + engine.canvas.resizeByClientSize(2); + const scene = engine.sceneManager.activeScene; + const rootEntity = scene.createRootEntity(); + + // camera + const cameraEntity = rootEntity.createChild("camera_node"); + cameraEntity.transform.position = new Vector3(0, 1, 5); + const camera = cameraEntity.addComponent(Camera); + cameraEntity.addComponent(OrbitControl).target = new Vector3(0, 1, 0); + + const lightNode = rootEntity.createChild("light_node"); + lightNode.addComponent(DirectLight).intensity = 0.6; + lightNode.transform.lookAt(new Vector3(0, 0, 1)); + lightNode.transform.rotate(new Vector3(0, 90, 0)); + + engine.resourceManager + .load({ + url: "https://gw.alipayobjects.com/mdn/rms_7c464e/afts/img/A*ArCHTbfVPXUAAAAAAAAAAAAAARQnAQ", + type: AssetType.Texture2D + }) + .then((texture: Texture2D) => { + const material = new BlinnPhongMaterial(engine); + material.renderFace = RenderFace.Double; + material.baseTexture = texture; + + const entity = rootEntity.createChild("mesh"); + const { transform } = entity; + transform.setPosition(0, 1, 0); + transform.setRotation(45, 45, 0); + const meshRenderer = entity.addComponent(MeshRenderer); + meshRenderer.mesh = PrimitiveMesh.createCylinder(engine); + meshRenderer.setMaterial(material); + + updateForE2E(engine); + const category = "Primitive"; + const name = "primitive-cylinder"; + initScreenshot(category, name, engine, camera); + }); +}); diff --git a/e2e/case/primitive-plane.ts b/e2e/case/primitive-plane.ts new file mode 100644 index 0000000000..94ae99303f --- /dev/null +++ b/e2e/case/primitive-plane.ts @@ -0,0 +1,61 @@ +/** + * @title PrimitiveMesh + * @category Primitive + */ +import { + AssetType, + BlinnPhongMaterial, + Camera, + DirectLight, + Logger, + MeshRenderer, + PrimitiveMesh, + RenderFace, + Texture2D, + Vector3, + WebGLEngine +} from "@galacean/engine"; +import { OrbitControl } from "@galacean/engine-toolkit"; +import { initScreenshot, updateForE2E } from "./.mockForE2E"; + +Logger.enable(); +WebGLEngine.create({ canvas: "canvas" }).then((engine) => { + engine.canvas.resizeByClientSize(2); + const scene = engine.sceneManager.activeScene; + const rootEntity = scene.createRootEntity(); + + // camera + const cameraEntity = rootEntity.createChild("camera_node"); + cameraEntity.transform.position = new Vector3(0, 1, 5); + const camera = cameraEntity.addComponent(Camera); + cameraEntity.addComponent(OrbitControl).target = new Vector3(0, 1, 0); + + const lightNode = rootEntity.createChild("light_node"); + lightNode.addComponent(DirectLight).intensity = 0.6; + lightNode.transform.lookAt(new Vector3(0, 0, 1)); + lightNode.transform.rotate(new Vector3(0, 90, 0)); + + engine.resourceManager + .load({ + url: "https://gw.alipayobjects.com/mdn/rms_7c464e/afts/img/A*ArCHTbfVPXUAAAAAAAAAAAAAARQnAQ", + type: AssetType.Texture2D + }) + .then((texture: Texture2D) => { + const material = new BlinnPhongMaterial(engine); + material.renderFace = RenderFace.Double; + material.baseTexture = texture; + + const entity = rootEntity.createChild("mesh"); + const { transform } = entity; + transform.setPosition(0, 1, 0); + transform.setRotation(45, -45, 0); + const meshRenderer = entity.addComponent(MeshRenderer); + meshRenderer.mesh = PrimitiveMesh.createPlane(engine); + meshRenderer.setMaterial(material); + + updateForE2E(engine); + const category = "Primitive"; + const name = "primitive-plane"; + initScreenshot(category, name, engine, camera); + }); +}); diff --git a/e2e/case/primitive-sphere.ts b/e2e/case/primitive-sphere.ts new file mode 100644 index 0000000000..ee54574e00 --- /dev/null +++ b/e2e/case/primitive-sphere.ts @@ -0,0 +1,61 @@ +/** + * @title PrimitiveMesh + * @category Primitive + */ +import { + AssetType, + BlinnPhongMaterial, + Camera, + DirectLight, + Logger, + MeshRenderer, + PrimitiveMesh, + RenderFace, + Texture2D, + Vector3, + WebGLEngine +} from "@galacean/engine"; +import { OrbitControl } from "@galacean/engine-toolkit"; +import { initScreenshot, updateForE2E } from "./.mockForE2E"; + +Logger.enable(); +WebGLEngine.create({ canvas: "canvas" }).then((engine) => { + engine.canvas.resizeByClientSize(2); + const scene = engine.sceneManager.activeScene; + const rootEntity = scene.createRootEntity(); + + // camera + const cameraEntity = rootEntity.createChild("camera_node"); + cameraEntity.transform.position = new Vector3(0, 1, 5); + const camera = cameraEntity.addComponent(Camera); + cameraEntity.addComponent(OrbitControl).target = new Vector3(0, 1, 0); + + const lightNode = rootEntity.createChild("light_node"); + lightNode.addComponent(DirectLight).intensity = 0.6; + lightNode.transform.lookAt(new Vector3(0, 0, 1)); + lightNode.transform.rotate(new Vector3(0, 90, 0)); + + engine.resourceManager + .load({ + url: "https://gw.alipayobjects.com/mdn/rms_7c464e/afts/img/A*ArCHTbfVPXUAAAAAAAAAAAAAARQnAQ", + type: AssetType.Texture2D + }) + .then((texture: Texture2D) => { + const material = new BlinnPhongMaterial(engine); + material.renderFace = RenderFace.Double; + material.baseTexture = texture; + + const entity = rootEntity.createChild("mesh"); + const { transform } = entity; + transform.setPosition(0, 1, 0); + transform.setRotation(45, 45, 0); + const meshRenderer = entity.addComponent(MeshRenderer); + meshRenderer.mesh = PrimitiveMesh.createSubdivisionSurfaceSphere(engine); + meshRenderer.setMaterial(material); + + updateForE2E(engine); + const category = "Primitive"; + const name = "primitive-sphere"; + initScreenshot(category, name, engine, camera); + }); +}); diff --git a/e2e/case/primitive-torus.ts b/e2e/case/primitive-torus.ts new file mode 100644 index 0000000000..611f7e9923 --- /dev/null +++ b/e2e/case/primitive-torus.ts @@ -0,0 +1,61 @@ +/** + * @title PrimitiveMesh + * @category Primitive + */ +import { + AssetType, + BlinnPhongMaterial, + Camera, + DirectLight, + Logger, + MeshRenderer, + PrimitiveMesh, + RenderFace, + Texture2D, + Vector3, + WebGLEngine +} from "@galacean/engine"; +import { OrbitControl } from "@galacean/engine-toolkit"; +import { initScreenshot, updateForE2E } from "./.mockForE2E"; + +Logger.enable(); +WebGLEngine.create({ canvas: "canvas" }).then((engine) => { + engine.canvas.resizeByClientSize(2); + const scene = engine.sceneManager.activeScene; + const rootEntity = scene.createRootEntity(); + + // camera + const cameraEntity = rootEntity.createChild("camera_node"); + cameraEntity.transform.position = new Vector3(0, 1, 5); + const camera = cameraEntity.addComponent(Camera); + cameraEntity.addComponent(OrbitControl).target = new Vector3(0, 1, 0); + + const lightNode = rootEntity.createChild("light_node"); + lightNode.addComponent(DirectLight).intensity = 0.6; + lightNode.transform.lookAt(new Vector3(0, 0, 1)); + lightNode.transform.rotate(new Vector3(0, 90, 0)); + + engine.resourceManager + .load({ + url: "https://gw.alipayobjects.com/mdn/rms_7c464e/afts/img/A*ArCHTbfVPXUAAAAAAAAAAAAAARQnAQ", + type: AssetType.Texture2D + }) + .then((texture: Texture2D) => { + const material = new BlinnPhongMaterial(engine); + material.renderFace = RenderFace.Double; + material.baseTexture = texture; + + const entity = rootEntity.createChild("mesh"); + const { transform } = entity; + transform.setPosition(0, 1, 0); + transform.setRotation(45, 45, 0); + const meshRenderer = entity.addComponent(MeshRenderer); + meshRenderer.mesh = PrimitiveMesh.createTorus(engine); + meshRenderer.setMaterial(material); + + updateForE2E(engine); + const category = "Primitive"; + const name = "primitive-torus"; + initScreenshot(category, name, engine, camera); + }); +}); diff --git a/e2e/fixtures/originImage/Primitive_primitive-capsule.jpg b/e2e/fixtures/originImage/Primitive_primitive-capsule.jpg new file mode 100644 index 0000000000..10a04f1b82 --- /dev/null +++ b/e2e/fixtures/originImage/Primitive_primitive-capsule.jpg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:79667bd6aacfc01d3a138852f50063949c614e39ff9d610f27557227586aad05 +size 82527 diff --git a/e2e/fixtures/originImage/Primitive_primitive-cone.jpg b/e2e/fixtures/originImage/Primitive_primitive-cone.jpg new file mode 100644 index 0000000000..0b31cfd905 --- /dev/null +++ b/e2e/fixtures/originImage/Primitive_primitive-cone.jpg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85386830b5e8edff4666c3d1bd4b8fa9b1354e14bec31230c40a6fc972b8562e +size 63343 diff --git a/e2e/fixtures/originImage/Primitive_primitive-cuboid.jpg b/e2e/fixtures/originImage/Primitive_primitive-cuboid.jpg new file mode 100644 index 0000000000..333da383fa --- /dev/null +++ b/e2e/fixtures/originImage/Primitive_primitive-cuboid.jpg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8207507dd8211887749dd67bb0857337c1357c71b95483f80307f9b81a58a383 +size 86226 diff --git a/e2e/fixtures/originImage/Primitive_primitive-cylinder.jpg b/e2e/fixtures/originImage/Primitive_primitive-cylinder.jpg new file mode 100644 index 0000000000..42bf5c8034 --- /dev/null +++ b/e2e/fixtures/originImage/Primitive_primitive-cylinder.jpg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:03526b30f2cb819481884fd7eef8dc60030bff9f764046966cf14ae0dba7fae0 +size 91010 diff --git a/e2e/fixtures/originImage/Primitive_primitive-plane.jpg b/e2e/fixtures/originImage/Primitive_primitive-plane.jpg new file mode 100644 index 0000000000..bd50844327 --- /dev/null +++ b/e2e/fixtures/originImage/Primitive_primitive-plane.jpg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:898e3f270af81343b9dd0a68b65683297154a827a1957db59a699bb64990bf41 +size 45281 diff --git a/e2e/fixtures/originImage/Primitive_primitive-sphere.jpg b/e2e/fixtures/originImage/Primitive_primitive-sphere.jpg new file mode 100644 index 0000000000..0969790fd7 --- /dev/null +++ b/e2e/fixtures/originImage/Primitive_primitive-sphere.jpg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d37df33fc84bf722272b5db6e30b8dd364d95613dd67afc2112fc57c4864008c +size 41544 diff --git a/e2e/fixtures/originImage/Primitive_primitive-torus.jpg b/e2e/fixtures/originImage/Primitive_primitive-torus.jpg new file mode 100644 index 0000000000..531d3efc4a --- /dev/null +++ b/e2e/fixtures/originImage/Primitive_primitive-torus.jpg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aaa9ec435436c104cdd9efe701676d0e504c0bc5fa847a01400f77dae7bcbb2d +size 43030 diff --git a/e2e/tests/primitive.cy.ts b/e2e/tests/primitive.cy.ts new file mode 100644 index 0000000000..7cbb4de9f2 --- /dev/null +++ b/e2e/tests/primitive.cy.ts @@ -0,0 +1,23 @@ +describe("Primitive", () => { + it("Primitive Sphere", () => { + cy.screenshotWithThreshold("Primitive", "primitive-sphere", 0.1); + }); + it("Primitive Cuboid", () => { + cy.screenshotWithThreshold("Primitive", "primitive-cuboid", 0.1); + }); + it("Primitive Plane", () => { + cy.screenshotWithThreshold("Primitive", "primitive-plane", 0.1); + }); + it("Primitive Cylinder", () => { + cy.screenshotWithThreshold("Primitive", "primitive-cylinder", 0.1); + }); + it("Primitive Torus", () => { + cy.screenshotWithThreshold("Primitive", "primitive-torus", 0.1); + }); + it("Primitive Cone", () => { + cy.screenshotWithThreshold("Primitive", "primitive-cone", 0.1); + }); + it("Primitive Capsule", () => { + cy.screenshotWithThreshold("Primitive", "primitive-capsule", 0.1); + }); +}); diff --git a/packages/core/src/mesh/PrimitiveMesh.ts b/packages/core/src/mesh/PrimitiveMesh.ts index 3d92a78a83..0cb1443268 100644 --- a/packages/core/src/mesh/PrimitiveMesh.ts +++ b/packages/core/src/mesh/PrimitiveMesh.ts @@ -1180,7 +1180,7 @@ export class PrimitiveMesh { const theta = thetaStart + u * thetaRange; const sinTheta = Math.sin(theta); const cosTheta = Math.cos(theta); - const curRadius = radius - y * radius; + const curRadius = radius - v * radius; let posX = curRadius * sinTheta; let posY = y * unitHeight - halfHeight; @@ -1360,6 +1360,7 @@ export class PrimitiveMesh { radius, height, radialSegments, + thetaStart, thetaRange, torsoVertexCount, 1, @@ -1372,6 +1373,7 @@ export class PrimitiveMesh { radius, height, radialSegments, + thetaStart, -thetaRange, torsoVertexCount + capVertexCount, -1, @@ -1439,7 +1441,8 @@ export class PrimitiveMesh { radius: number, height: number, radialSegments: number, - capAlphaRange: number, + thetaStart: number, + thetaRange: number, offset: number, posIndex: number, vertices: Float32Array, @@ -1459,13 +1462,13 @@ export class PrimitiveMesh { const y = (i * radialCountReciprocal) | 0; const u = x * radialSegmentsReciprocal; const v = y * radialSegmentsReciprocal; - const alphaDelta = u * capAlphaRange; - const thetaDelta = (v * Math.PI) / 2; - const sinTheta = Math.sin(thetaDelta); + const theta = thetaStart + u * thetaRange; + const alpha = v * Math.PI * 0.5; + const sinAlpha = Math.sin(alpha); - const posX = -radius * Math.cos(alphaDelta) * sinTheta; - const posY = radius * Math.cos(thetaDelta) * posIndex + halfHeight; - const posZ = radius * Math.sin(alphaDelta) * sinTheta; + const posX = radius * Math.sin(theta) * sinAlpha; + const posY = radius * Math.cos(alpha) * posIndex + halfHeight; + const posZ = radius * Math.cos(theta) * sinAlpha; let index = (i + offset) * vertexFloatCount; // Position From aa14cabf5444fb712f700a124f6b43bdd558f37f Mon Sep 17 00:00:00 2001 From: AZhan Date: Tue, 16 Jan 2024 17:49:59 +0800 Subject: [PATCH 04/21] Fix `ViewportToWorldPoint` error after modifying canvas width and height (#1971) * fix: `ViewportToWorldPoint` error after modifying canvas width and height --------- Co-authored-by: ChenMo --- packages/core/src/Camera.ts | 46 ++++++++++++++++++----------- packages/core/src/Canvas.ts | 45 ++++++++++++++++++++++++---- packages/core/src/index.ts | 2 +- packages/rhi-webgl/src/WebCanvas.ts | 42 ++++++-------------------- tests/src/core/Camera.test.ts | 18 ++++++++--- 5 files changed, 93 insertions(+), 60 deletions(-) diff --git a/packages/core/src/Camera.ts b/packages/core/src/Camera.ts index 6e40a9f9c6..4c3f6655a9 100644 --- a/packages/core/src/Camera.ts +++ b/packages/core/src/Camera.ts @@ -107,8 +107,6 @@ export class Camera extends Component { @deepClone private _inverseProjectionMatrix: Matrix = new Matrix(); @deepClone - private _lastAspectSize: Vector2 = new Vector2(0, 0); - @deepClone private _invViewProjMat: Matrix = new Matrix(); /** @@ -181,8 +179,6 @@ export class Camera extends Component { if (value !== this._viewport) { this._viewport.copyFrom(value); } - this._projMatChange(); - this._updatePixelViewport(); } /** @@ -261,18 +257,11 @@ export class Camera extends Component { get projectionMatrix(): Matrix { const virtualCamera = this._virtualCamera; const projectionMatrix = virtualCamera.projectionMatrix; - const canvas = this._entity.engine.canvas; - if ( - (!this._isProjectionDirty || this._isProjMatSetting) && - this._lastAspectSize.x === canvas.width && - this._lastAspectSize.y === canvas.height - ) { + if (!this._isProjectionDirty || this._isProjMatSetting) { return projectionMatrix; } this._isProjectionDirty = false; - this._lastAspectSize.x = canvas.width; - this._lastAspectSize.y = canvas.height; const aspectRatio = this.aspectRatio; if (!virtualCamera.isOrthographic) { Matrix.perspective( @@ -315,7 +304,7 @@ export class Camera extends Component { value?._addReferCount(1); this._renderTarget?._addReferCount(-1); this._renderTarget = value; - this._updatePixelViewport(); + this._onPixelViewportChanged(); } } @@ -333,6 +322,11 @@ export class Camera extends Component { this._renderPipeline = new BasicRenderPipeline(this); this.shaderData._addReferCount(1); this._updatePixelViewport(); + + this._onPixelViewportChanged = this._onPixelViewportChanged.bind(this); + //@ts-ignore + this._viewport._onValueChanged = this._onPixelViewportChanged; + this.engine.canvas._sizeUpdateFlagManager.addListener(this._onPixelViewportChanged); } /** @@ -592,6 +586,10 @@ export class Camera extends Component { this._isViewMatrixDirty.destroy(); this.shaderData._addReferCount(-1); + //@ts-ignore + this._viewport._onValueChanged = null; + this.engine.canvas._sizeUpdateFlagManager.removeListener(this._onPixelViewportChanged); + this._entity = null; this._globalShaderMacro = null; this._frustum = null; @@ -604,15 +602,23 @@ export class Camera extends Component { this._isInvViewProjDirty = null; this._viewport = null; this._inverseProjectionMatrix = null; - this._lastAspectSize = null; this._invViewProjMat = null; } private _updatePixelViewport(): void { - const viewport = this._viewport; - const width = this._renderTarget?.width ?? this.engine.canvas.width; - const height = this._renderTarget?.height ?? this.engine.canvas.height; + let width: number, height: number; + const renderTarget = this._renderTarget; + if (renderTarget) { + width = renderTarget.width; + height = renderTarget.height; + } else { + const canvas = this.engine.canvas; + width = canvas.width; + height = canvas.height; + } + + const viewport = this._viewport; this._pixelViewport.set(viewport.x * width, viewport.y * height, viewport.z * width, viewport.w * height); } @@ -668,4 +674,10 @@ export class Camera extends Component { } return this._inverseProjectionMatrix; } + + @ignoreClone + private _onPixelViewportChanged(): void { + this._updatePixelViewport(); + this._customAspectRatio ?? this._projMatChange(); + } } diff --git a/packages/core/src/Canvas.ts b/packages/core/src/Canvas.ts index 85d6eeaf0b..905c1ec6df 100644 --- a/packages/core/src/Canvas.ts +++ b/packages/core/src/Canvas.ts @@ -1,9 +1,44 @@ +import { UpdateFlagManager } from "./UpdateFlagManager"; + /** * Canvas. */ -export interface Canvas { - /** The width of the canvas. */ - width: number; - /** The height of the canvas. */ - height: number; +export abstract class Canvas { + /* @internal */ + _sizeUpdateFlagManager: UpdateFlagManager = new UpdateFlagManager(); + + private _width: number; + private _height: number; + + /** + * The width of the canvas. + */ + get width(): number { + return this._width; + } + + set width(value: number) { + if (this._width !== value) { + this._width = value; + this._sizeUpdateFlagManager.dispatch(); + this._onSizeChanged(value, this._width); + } + } + + /** + *The height of the canvas. + */ + get height(): number { + return this._height; + } + + set height(value: number) { + if (this._height !== value) { + this._height = value; + this._sizeUpdateFlagManager.dispatch(); + this._onSizeChanged(this._width, value); + } + } + + protected abstract _onSizeChanged(width: number, height: number): void; } diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 22b55ac522..99dc2ec6f1 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -1,7 +1,7 @@ export { Platform } from "./Platform"; export { Engine } from "./Engine"; export { SystemInfo } from "./SystemInfo"; -export type { Canvas } from "./Canvas"; +export { Canvas } from "./Canvas"; export { Scene } from "./Scene"; export { SceneManager } from "./SceneManager"; diff --git a/packages/rhi-webgl/src/WebCanvas.ts b/packages/rhi-webgl/src/WebCanvas.ts index f47d178486..5ea17d987c 100644 --- a/packages/rhi-webgl/src/WebCanvas.ts +++ b/packages/rhi-webgl/src/WebCanvas.ts @@ -6,41 +6,11 @@ type OffscreenCanvas = any; /** * The canvas used on the web, which can support HTMLCanvasElement and OffscreenCanvas. */ -export class WebCanvas implements Canvas { +export class WebCanvas extends Canvas { _webCanvas: HTMLCanvasElement | OffscreenCanvas; - private _width: number; - private _height: number; private _scale: Vector2 = new Vector2(); - /** - * @inheritdoc - */ - get width(): number { - return this._width; - } - - set width(value: number) { - if (this._width !== value) { - this._webCanvas.width = value; - this._width = value; - } - } - - /** - * @inheritdoc - */ - get height(): number { - return this._height; - } - - set height(value: number) { - if (this._height !== value) { - this._webCanvas.height = value; - this._height = value; - } - } - /** * The scale of canvas, the value is visible width/height divide the render width/height. * @remarks Need to re-assign after modification to ensure that the modification takes effect. @@ -81,11 +51,12 @@ export class WebCanvas implements Canvas { * @param webCanvas - Web native canvas */ constructor(webCanvas: HTMLCanvasElement | OffscreenCanvas) { + super(); const width = webCanvas.width; const height = webCanvas.height; this._webCanvas = webCanvas; - this._width = width; - this._height = height; + this.width = width; + this.height = height; } /** @@ -97,4 +68,9 @@ export class WebCanvas implements Canvas { this._scale.set(x, y); this.scale = this._scale; } + + protected override _onSizeChanged(width: number, height: number): void { + this._webCanvas.width = width; + this._webCanvas.height = height; + } } diff --git a/tests/src/core/Camera.test.ts b/tests/src/core/Camera.test.ts index 76b1f8b1d1..32aca607e2 100644 --- a/tests/src/core/Camera.test.ts +++ b/tests/src/core/Camera.test.ts @@ -6,12 +6,13 @@ import { expect } from "chai"; describe("camera test", function () { const canvasDOM = new OffscreenCanvas(256, 256); let rootEntity: Entity; + let engine: WebGLEngine; let camera: Camera; let identityMatrix: Matrix = new Matrix(); before(async function () { this.timeout(10000); - const engine = await WebGLEngine.create({ canvas: canvasDOM }); + engine = await WebGLEngine.create({ canvas: canvasDOM }); rootEntity = engine.sceneManager.scenes[0].createRootEntity(); camera = rootEntity.addComponent(Camera); }); @@ -20,7 +21,7 @@ describe("camera test", function () { // Test default values expect(camera.aspectRatio).to.eq(1); expect(camera.entity.transform.worldPosition).not.to.be.undefined; - expect(camera.viewport).to.deep.eq(new Vector4(0, 0, 1, 1)); + expect(camera.viewport).to.deep.include(new Vector4(0, 0, 1, 1).toJSON()); expect(camera.fieldOfView).to.eq(45); expect(camera.isOrthographic).to.eq(false); @@ -65,9 +66,9 @@ describe("camera test", function () { // Test viewport const originViewPort = new Vector4(0, 0, 1, 1); const expectedViewPort = new Vector4(0, 1, 0, 1); - expect(camera.viewport).to.deep.eq(originViewPort); + expect(camera.viewport).to.deep.include(originViewPort.toJSON()); camera.viewport = expectedViewPort; - expect(camera.viewport).to.deep.eq(expectedViewPort); + expect(camera.viewport).to.deep.include(expectedViewPort.toJSON()); camera.viewport = originViewPort; // Test orthographicSize @@ -147,6 +148,15 @@ describe("camera test", function () { const worldPoint = camera.viewportToWorldPoint(viewportPoint, new Vector3()); const expectedviewportPoint = camera.worldToViewportPoint(worldPoint, new Vector3()); expect(viewportPoint.z).to.be.closeTo(expectedviewportPoint.z, 0.1, "Result z should match expected value"); + + const webCanvas = engine.canvas; + webCanvas.width = 100; + webCanvas.height = 1000; + camera.viewportToWorldPoint(viewportPoint, worldPoint); + expect(worldPoint.x).to.be.closeTo(-1.73, 0.1, "Result x should match expected value"); + expect(worldPoint.y).to.be.closeTo(17.32, 0.1, "Result y should match expected value"); + expect(worldPoint.z).to.be.closeTo(-30, 0.1, "Result z should match expected value"); + webCanvas.width = webCanvas.height = 256; }); it("viewport to world point, while isOrthographic = true", () => { From 6ffee7804a3b5db7fce3d1dbc2dc9fe8490d29cb Mon Sep 17 00:00:00 2001 From: singlecoder Date: Thu, 18 Jan 2024 12:14:03 +0800 Subject: [PATCH 05/21] fix(2d): fix the mesh of 2d batcher error when call gc (#1977) --- packages/core/src/RenderPipeline/Basic2DBatcher.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/core/src/RenderPipeline/Basic2DBatcher.ts b/packages/core/src/RenderPipeline/Basic2DBatcher.ts index f5cdb073f4..d693b0d25c 100644 --- a/packages/core/src/RenderPipeline/Basic2DBatcher.ts +++ b/packages/core/src/RenderPipeline/Basic2DBatcher.ts @@ -121,7 +121,9 @@ export abstract class Basic2DBatcher { const { _meshes: meshes, _vertexBuffers: vertexBuffers, _indiceBuffers: indiceBuffers } = this; for (let i = 0, n = meshes.length; i < n; ++i) { - meshes[i].destroy(); + const mesh = meshes[i]; + mesh._addReferCount(-1); + mesh.destroy(); } this._meshes = null; @@ -149,7 +151,7 @@ export abstract class Basic2DBatcher { private _createMesh(engine: Engine, index: number): BufferMesh { const { MAX_VERTEX_COUNT } = Basic2DBatcher; const mesh = new BufferMesh(engine, `BufferMesh${index}`); - mesh.isGCIgnored = true; + mesh._addReferCount(1); const vertexElements: VertexElement[] = []; const vertexStride = this.createVertexElements(vertexElements); From 7c03bd70608dbb016f8d4c190028c76015296a55 Mon Sep 17 00:00:00 2001 From: GuoLei1990 Date: Thu, 18 Jan 2024 12:46:35 +0800 Subject: [PATCH 06/21] "v1.1.0-beta.40" --- packages/core/package.json | 2 +- packages/design/package.json | 2 +- packages/draco/package.json | 2 +- packages/galacean/package.json | 2 +- packages/loader/package.json | 2 +- packages/math/package.json | 2 +- packages/physics-lite/package.json | 2 +- packages/physics-physx/package.json | 2 +- packages/rhi-webgl/package.json | 2 +- packages/shader-lab/package.json | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index 27c043d9e3..31a61f6d6f 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-core", - "version": "1.1.0-beta.39", + "version": "1.1.0-beta.40", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/design/package.json b/packages/design/package.json index 9e1336ac4f..312ff66d51 100644 --- a/packages/design/package.json +++ b/packages/design/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-design", - "version": "1.1.0-beta.39", + "version": "1.1.0-beta.40", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/draco/package.json b/packages/draco/package.json index 0ecc7fc705..3e564ce3c9 100644 --- a/packages/draco/package.json +++ b/packages/draco/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-draco", - "version": "1.1.0-beta.39", + "version": "1.1.0-beta.40", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/galacean/package.json b/packages/galacean/package.json index 5cead45d8f..f878e4f055 100644 --- a/packages/galacean/package.json +++ b/packages/galacean/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine", - "version": "1.1.0-beta.39", + "version": "1.1.0-beta.40", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/loader/package.json b/packages/loader/package.json index c41ba06b9c..3919c935b7 100644 --- a/packages/loader/package.json +++ b/packages/loader/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-loader", - "version": "1.1.0-beta.39", + "version": "1.1.0-beta.40", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/math/package.json b/packages/math/package.json index ec1720124c..a9b5e28e10 100644 --- a/packages/math/package.json +++ b/packages/math/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-math", - "version": "1.1.0-beta.39", + "version": "1.1.0-beta.40", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/physics-lite/package.json b/packages/physics-lite/package.json index 25d2493bc4..374f9c6722 100644 --- a/packages/physics-lite/package.json +++ b/packages/physics-lite/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-physics-lite", - "version": "1.1.0-beta.39", + "version": "1.1.0-beta.40", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/physics-physx/package.json b/packages/physics-physx/package.json index 8e1248eb1a..cdaf6363a1 100644 --- a/packages/physics-physx/package.json +++ b/packages/physics-physx/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-physics-physx", - "version": "1.1.0-beta.39", + "version": "1.1.0-beta.40", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/rhi-webgl/package.json b/packages/rhi-webgl/package.json index cc57bcf357..f941a0698d 100644 --- a/packages/rhi-webgl/package.json +++ b/packages/rhi-webgl/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-rhi-webgl", - "version": "1.1.0-beta.39", + "version": "1.1.0-beta.40", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/shader-lab/package.json b/packages/shader-lab/package.json index eef26952cf..ab7295c14e 100644 --- a/packages/shader-lab/package.json +++ b/packages/shader-lab/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-shader-lab", - "version": "1.1.0-beta.39", + "version": "1.1.0-beta.40", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" From ce57b106ae7fb69ffc2f281e0884a1a23957d074 Mon Sep 17 00:00:00 2001 From: GuoLei1990 Date: Thu, 18 Jan 2024 12:51:13 +0800 Subject: [PATCH 07/21] "v1.1.0-beta.41" --- packages/core/package.json | 2 +- packages/design/package.json | 2 +- packages/draco/package.json | 2 +- packages/galacean/package.json | 2 +- packages/loader/package.json | 2 +- packages/math/package.json | 2 +- packages/physics-lite/package.json | 2 +- packages/physics-physx/package.json | 2 +- packages/rhi-webgl/package.json | 2 +- packages/shader-lab/package.json | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index 31a61f6d6f..b5a917d78e 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-core", - "version": "1.1.0-beta.40", + "version": "1.1.0-beta.41", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/design/package.json b/packages/design/package.json index 312ff66d51..338af73302 100644 --- a/packages/design/package.json +++ b/packages/design/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-design", - "version": "1.1.0-beta.40", + "version": "1.1.0-beta.41", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/draco/package.json b/packages/draco/package.json index 3e564ce3c9..5ef17a1734 100644 --- a/packages/draco/package.json +++ b/packages/draco/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-draco", - "version": "1.1.0-beta.40", + "version": "1.1.0-beta.41", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/galacean/package.json b/packages/galacean/package.json index f878e4f055..76f426d162 100644 --- a/packages/galacean/package.json +++ b/packages/galacean/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine", - "version": "1.1.0-beta.40", + "version": "1.1.0-beta.41", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/loader/package.json b/packages/loader/package.json index 3919c935b7..5af71d005b 100644 --- a/packages/loader/package.json +++ b/packages/loader/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-loader", - "version": "1.1.0-beta.40", + "version": "1.1.0-beta.41", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/math/package.json b/packages/math/package.json index a9b5e28e10..0284139977 100644 --- a/packages/math/package.json +++ b/packages/math/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-math", - "version": "1.1.0-beta.40", + "version": "1.1.0-beta.41", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/physics-lite/package.json b/packages/physics-lite/package.json index 374f9c6722..9486f26202 100644 --- a/packages/physics-lite/package.json +++ b/packages/physics-lite/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-physics-lite", - "version": "1.1.0-beta.40", + "version": "1.1.0-beta.41", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/physics-physx/package.json b/packages/physics-physx/package.json index cdaf6363a1..959d272922 100644 --- a/packages/physics-physx/package.json +++ b/packages/physics-physx/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-physics-physx", - "version": "1.1.0-beta.40", + "version": "1.1.0-beta.41", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/rhi-webgl/package.json b/packages/rhi-webgl/package.json index f941a0698d..b7d727b447 100644 --- a/packages/rhi-webgl/package.json +++ b/packages/rhi-webgl/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-rhi-webgl", - "version": "1.1.0-beta.40", + "version": "1.1.0-beta.41", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/shader-lab/package.json b/packages/shader-lab/package.json index ab7295c14e..43665383ad 100644 --- a/packages/shader-lab/package.json +++ b/packages/shader-lab/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-shader-lab", - "version": "1.1.0-beta.40", + "version": "1.1.0-beta.41", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" From c1f727fcece36bf25f131548b3a40baabc23f646 Mon Sep 17 00:00:00 2001 From: GuoLei1990 Date: Thu, 18 Jan 2024 12:54:15 +0800 Subject: [PATCH 08/21] "v1.1.0-beta.42" --- packages/core/package.json | 2 +- packages/design/package.json | 2 +- packages/draco/package.json | 2 +- packages/galacean/package.json | 2 +- packages/loader/package.json | 2 +- packages/math/package.json | 2 +- packages/physics-lite/package.json | 2 +- packages/physics-physx/package.json | 2 +- packages/rhi-webgl/package.json | 2 +- packages/shader-lab/package.json | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index b5a917d78e..4334faaf00 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-core", - "version": "1.1.0-beta.41", + "version": "1.1.0-beta.42", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/design/package.json b/packages/design/package.json index 338af73302..643fb238f6 100644 --- a/packages/design/package.json +++ b/packages/design/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-design", - "version": "1.1.0-beta.41", + "version": "1.1.0-beta.42", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/draco/package.json b/packages/draco/package.json index 5ef17a1734..9e806a2d30 100644 --- a/packages/draco/package.json +++ b/packages/draco/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-draco", - "version": "1.1.0-beta.41", + "version": "1.1.0-beta.42", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/galacean/package.json b/packages/galacean/package.json index 76f426d162..3faceabc68 100644 --- a/packages/galacean/package.json +++ b/packages/galacean/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine", - "version": "1.1.0-beta.41", + "version": "1.1.0-beta.42", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/loader/package.json b/packages/loader/package.json index 5af71d005b..c4c7457286 100644 --- a/packages/loader/package.json +++ b/packages/loader/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-loader", - "version": "1.1.0-beta.41", + "version": "1.1.0-beta.42", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/math/package.json b/packages/math/package.json index 0284139977..18b30ef11f 100644 --- a/packages/math/package.json +++ b/packages/math/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-math", - "version": "1.1.0-beta.41", + "version": "1.1.0-beta.42", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/physics-lite/package.json b/packages/physics-lite/package.json index 9486f26202..275dfbbd51 100644 --- a/packages/physics-lite/package.json +++ b/packages/physics-lite/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-physics-lite", - "version": "1.1.0-beta.41", + "version": "1.1.0-beta.42", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/physics-physx/package.json b/packages/physics-physx/package.json index 959d272922..0d5c73661a 100644 --- a/packages/physics-physx/package.json +++ b/packages/physics-physx/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-physics-physx", - "version": "1.1.0-beta.41", + "version": "1.1.0-beta.42", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/rhi-webgl/package.json b/packages/rhi-webgl/package.json index b7d727b447..d0559b1101 100644 --- a/packages/rhi-webgl/package.json +++ b/packages/rhi-webgl/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-rhi-webgl", - "version": "1.1.0-beta.41", + "version": "1.1.0-beta.42", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/shader-lab/package.json b/packages/shader-lab/package.json index 43665383ad..d2fd7375df 100644 --- a/packages/shader-lab/package.json +++ b/packages/shader-lab/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-shader-lab", - "version": "1.1.0-beta.41", + "version": "1.1.0-beta.42", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" From c6ee17e58236946b8948810d0b42a01d62c1d357 Mon Sep 17 00:00:00 2001 From: GuoLei1990 Date: Thu, 18 Jan 2024 12:56:28 +0800 Subject: [PATCH 09/21] "v1.1.0-beta.43" --- packages/core/package.json | 2 +- packages/design/package.json | 2 +- packages/draco/package.json | 2 +- packages/galacean/package.json | 2 +- packages/loader/package.json | 2 +- packages/math/package.json | 2 +- packages/physics-lite/package.json | 2 +- packages/physics-physx/package.json | 2 +- packages/rhi-webgl/package.json | 2 +- packages/shader-lab/package.json | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index 4334faaf00..54b3f9bd28 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-core", - "version": "1.1.0-beta.42", + "version": "1.1.0-beta.43", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/design/package.json b/packages/design/package.json index 643fb238f6..dcd0d97281 100644 --- a/packages/design/package.json +++ b/packages/design/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-design", - "version": "1.1.0-beta.42", + "version": "1.1.0-beta.43", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/draco/package.json b/packages/draco/package.json index 9e806a2d30..c58a7eb914 100644 --- a/packages/draco/package.json +++ b/packages/draco/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-draco", - "version": "1.1.0-beta.42", + "version": "1.1.0-beta.43", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/galacean/package.json b/packages/galacean/package.json index 3faceabc68..8040a57d0c 100644 --- a/packages/galacean/package.json +++ b/packages/galacean/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine", - "version": "1.1.0-beta.42", + "version": "1.1.0-beta.43", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/loader/package.json b/packages/loader/package.json index c4c7457286..0dff9d57f2 100644 --- a/packages/loader/package.json +++ b/packages/loader/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-loader", - "version": "1.1.0-beta.42", + "version": "1.1.0-beta.43", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/math/package.json b/packages/math/package.json index 18b30ef11f..2f0bad431e 100644 --- a/packages/math/package.json +++ b/packages/math/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-math", - "version": "1.1.0-beta.42", + "version": "1.1.0-beta.43", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/physics-lite/package.json b/packages/physics-lite/package.json index 275dfbbd51..eec5f493c7 100644 --- a/packages/physics-lite/package.json +++ b/packages/physics-lite/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-physics-lite", - "version": "1.1.0-beta.42", + "version": "1.1.0-beta.43", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/physics-physx/package.json b/packages/physics-physx/package.json index 0d5c73661a..e67ffd3e3a 100644 --- a/packages/physics-physx/package.json +++ b/packages/physics-physx/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-physics-physx", - "version": "1.1.0-beta.42", + "version": "1.1.0-beta.43", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/rhi-webgl/package.json b/packages/rhi-webgl/package.json index d0559b1101..cab4dbeaaa 100644 --- a/packages/rhi-webgl/package.json +++ b/packages/rhi-webgl/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-rhi-webgl", - "version": "1.1.0-beta.42", + "version": "1.1.0-beta.43", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/shader-lab/package.json b/packages/shader-lab/package.json index d2fd7375df..7cc08f88db 100644 --- a/packages/shader-lab/package.json +++ b/packages/shader-lab/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-shader-lab", - "version": "1.1.0-beta.42", + "version": "1.1.0-beta.43", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" From e798fae4bc478615047ce8268ba824781d29bd78 Mon Sep 17 00:00:00 2001 From: AZhan Date: Tue, 23 Jan 2024 16:24:06 +0800 Subject: [PATCH 10/21] Fix the problem of resetting `HtmlCanvas.ClientXXX` when call `canvas.resizeByClientSize()` (#1984) * fix: canvas set size bug --- packages/core/src/Canvas.ts | 8 +++++--- packages/rhi-webgl/src/WebCanvas.ts | 9 ++++++--- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/packages/core/src/Canvas.ts b/packages/core/src/Canvas.ts index 905c1ec6df..6fc64dc2cf 100644 --- a/packages/core/src/Canvas.ts +++ b/packages/core/src/Canvas.ts @@ -20,8 +20,8 @@ export abstract class Canvas { set width(value: number) { if (this._width !== value) { this._width = value; + this._onWidthChanged(value); this._sizeUpdateFlagManager.dispatch(); - this._onSizeChanged(value, this._width); } } @@ -35,10 +35,12 @@ export abstract class Canvas { set height(value: number) { if (this._height !== value) { this._height = value; + this._onHeightChange(value); this._sizeUpdateFlagManager.dispatch(); - this._onSizeChanged(this._width, value); } } - protected abstract _onSizeChanged(width: number, height: number): void; + protected abstract _onWidthChanged(value: number): void; + + protected abstract _onHeightChange(value: number): void; } diff --git a/packages/rhi-webgl/src/WebCanvas.ts b/packages/rhi-webgl/src/WebCanvas.ts index 5ea17d987c..8a28de6248 100644 --- a/packages/rhi-webgl/src/WebCanvas.ts +++ b/packages/rhi-webgl/src/WebCanvas.ts @@ -69,8 +69,11 @@ export class WebCanvas extends Canvas { this.scale = this._scale; } - protected override _onSizeChanged(width: number, height: number): void { - this._webCanvas.width = width; - this._webCanvas.height = height; + protected override _onWidthChanged(value: number): void { + this._webCanvas.width = value; + } + + protected override _onHeightChange(value: number): void { + this._webCanvas.height = value; } } From 59a9559cab5d2ba40e1c9378fa6fb747dd5ad4bb Mon Sep 17 00:00:00 2001 From: GuoLei1990 Date: Tue, 23 Jan 2024 16:32:59 +0800 Subject: [PATCH 11/21] "v1.1.0-beta.44" --- packages/core/package.json | 2 +- packages/design/package.json | 2 +- packages/draco/package.json | 2 +- packages/galacean/package.json | 2 +- packages/loader/package.json | 2 +- packages/math/package.json | 2 +- packages/physics-lite/package.json | 2 +- packages/physics-physx/package.json | 2 +- packages/rhi-webgl/package.json | 2 +- packages/shader-lab/package.json | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index 54b3f9bd28..569c70cc4b 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-core", - "version": "1.1.0-beta.43", + "version": "1.1.0-beta.44", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/design/package.json b/packages/design/package.json index dcd0d97281..6eb705b420 100644 --- a/packages/design/package.json +++ b/packages/design/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-design", - "version": "1.1.0-beta.43", + "version": "1.1.0-beta.44", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/draco/package.json b/packages/draco/package.json index c58a7eb914..91399af551 100644 --- a/packages/draco/package.json +++ b/packages/draco/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-draco", - "version": "1.1.0-beta.43", + "version": "1.1.0-beta.44", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/galacean/package.json b/packages/galacean/package.json index 8040a57d0c..8dba92329d 100644 --- a/packages/galacean/package.json +++ b/packages/galacean/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine", - "version": "1.1.0-beta.43", + "version": "1.1.0-beta.44", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/loader/package.json b/packages/loader/package.json index 0dff9d57f2..6eeed0681b 100644 --- a/packages/loader/package.json +++ b/packages/loader/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-loader", - "version": "1.1.0-beta.43", + "version": "1.1.0-beta.44", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/math/package.json b/packages/math/package.json index 2f0bad431e..a4dea5d62a 100644 --- a/packages/math/package.json +++ b/packages/math/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-math", - "version": "1.1.0-beta.43", + "version": "1.1.0-beta.44", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/physics-lite/package.json b/packages/physics-lite/package.json index eec5f493c7..7d1b286628 100644 --- a/packages/physics-lite/package.json +++ b/packages/physics-lite/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-physics-lite", - "version": "1.1.0-beta.43", + "version": "1.1.0-beta.44", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/physics-physx/package.json b/packages/physics-physx/package.json index e67ffd3e3a..11fcb3f039 100644 --- a/packages/physics-physx/package.json +++ b/packages/physics-physx/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-physics-physx", - "version": "1.1.0-beta.43", + "version": "1.1.0-beta.44", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/rhi-webgl/package.json b/packages/rhi-webgl/package.json index cab4dbeaaa..2693498c35 100644 --- a/packages/rhi-webgl/package.json +++ b/packages/rhi-webgl/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-rhi-webgl", - "version": "1.1.0-beta.43", + "version": "1.1.0-beta.44", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/shader-lab/package.json b/packages/shader-lab/package.json index 7cc08f88db..4e984d00d4 100644 --- a/packages/shader-lab/package.json +++ b/packages/shader-lab/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-shader-lab", - "version": "1.1.0-beta.43", + "version": "1.1.0-beta.44", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" From b4c6bf6d30353711e46a1b9363991b5adc4dcfc4 Mon Sep 17 00:00:00 2001 From: GuoLei1990 Date: Tue, 23 Jan 2024 16:36:19 +0800 Subject: [PATCH 12/21] "v1.1.0-beta.45" --- packages/core/package.json | 2 +- packages/design/package.json | 2 +- packages/draco/package.json | 2 +- packages/galacean/package.json | 2 +- packages/loader/package.json | 2 +- packages/math/package.json | 2 +- packages/physics-lite/package.json | 2 +- packages/physics-physx/package.json | 2 +- packages/rhi-webgl/package.json | 2 +- packages/shader-lab/package.json | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index 569c70cc4b..e0a1665265 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-core", - "version": "1.1.0-beta.44", + "version": "1.1.0-beta.45", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/design/package.json b/packages/design/package.json index 6eb705b420..48dcc53e3e 100644 --- a/packages/design/package.json +++ b/packages/design/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-design", - "version": "1.1.0-beta.44", + "version": "1.1.0-beta.45", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/draco/package.json b/packages/draco/package.json index 91399af551..85e69e6634 100644 --- a/packages/draco/package.json +++ b/packages/draco/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-draco", - "version": "1.1.0-beta.44", + "version": "1.1.0-beta.45", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/galacean/package.json b/packages/galacean/package.json index 8dba92329d..2900123100 100644 --- a/packages/galacean/package.json +++ b/packages/galacean/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine", - "version": "1.1.0-beta.44", + "version": "1.1.0-beta.45", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/loader/package.json b/packages/loader/package.json index 6eeed0681b..3045e6c1f2 100644 --- a/packages/loader/package.json +++ b/packages/loader/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-loader", - "version": "1.1.0-beta.44", + "version": "1.1.0-beta.45", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/math/package.json b/packages/math/package.json index a4dea5d62a..0fd247d552 100644 --- a/packages/math/package.json +++ b/packages/math/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-math", - "version": "1.1.0-beta.44", + "version": "1.1.0-beta.45", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/physics-lite/package.json b/packages/physics-lite/package.json index 7d1b286628..3f9ff3445a 100644 --- a/packages/physics-lite/package.json +++ b/packages/physics-lite/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-physics-lite", - "version": "1.1.0-beta.44", + "version": "1.1.0-beta.45", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/physics-physx/package.json b/packages/physics-physx/package.json index 11fcb3f039..6a87f8589e 100644 --- a/packages/physics-physx/package.json +++ b/packages/physics-physx/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-physics-physx", - "version": "1.1.0-beta.44", + "version": "1.1.0-beta.45", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/rhi-webgl/package.json b/packages/rhi-webgl/package.json index 2693498c35..39a4061c15 100644 --- a/packages/rhi-webgl/package.json +++ b/packages/rhi-webgl/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-rhi-webgl", - "version": "1.1.0-beta.44", + "version": "1.1.0-beta.45", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/shader-lab/package.json b/packages/shader-lab/package.json index 4e984d00d4..06f76a5140 100644 --- a/packages/shader-lab/package.json +++ b/packages/shader-lab/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-shader-lab", - "version": "1.1.0-beta.44", + "version": "1.1.0-beta.45", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" From 3eae1d170e65dc2403c1e9ca871cda8034d2ca7f Mon Sep 17 00:00:00 2001 From: Hu Song Date: Wed, 24 Jan 2024 17:29:50 +0800 Subject: [PATCH 13/21] Fix query path error (#1986) * fix: query path --- packages/core/src/asset/ResourceManager.ts | 18 ++++++++++--- .../src/core/resource/ResourceManager.test.ts | 25 +++++++++++++++++++ 2 files changed, 39 insertions(+), 4 deletions(-) diff --git a/packages/core/src/asset/ResourceManager.ts b/packages/core/src/asset/ResourceManager.ts index 3dfb944992..fa5d2ded2c 100644 --- a/packages/core/src/asset/ResourceManager.ts +++ b/packages/core/src/asset/ResourceManager.ts @@ -430,10 +430,20 @@ export class ResourceManager { private _parseURL(path: string): { assetBaseURL: string; queryPath: string } { const [baseUrl, searchStr] = path.split("?"); - const searchParams = new URLSearchParams(searchStr); - const queryPath = searchParams.get("q"); - searchParams.delete("q"); - const assetBaseURL = searchParams.size > 0 ? baseUrl + "?" + searchParams.toString() : baseUrl; + let queryPath = undefined; + let assetBaseURL = baseUrl; + if (searchStr) { + const params = searchStr.split("&"); + for (let i = 0; i < params.length; i++) { + const param = params[i]; + if (param.startsWith(`q=`)) { + queryPath = decodeURIComponent(param.split("=")[1]); + params.splice(i, 1); + break; + } + } + assetBaseURL = params.length > 0 ? baseUrl + "?" + params.join("&") : baseUrl; + } return { assetBaseURL, queryPath }; } diff --git a/tests/src/core/resource/ResourceManager.test.ts b/tests/src/core/resource/ResourceManager.test.ts index caceda62bb..3cfca56c9d 100644 --- a/tests/src/core/resource/ResourceManager.test.ts +++ b/tests/src/core/resource/ResourceManager.test.ts @@ -35,4 +35,29 @@ describe("ResourceManager", () => { expect(textures.length).equal(4); }); }); + + describe("queryPath", () => { + it("no encode", () => { + // @ts-ignore + const { assetBaseURL } = engine.resourceManager._parseURL( + "https://cdn.ali.com/inner.jpg?x-oss-process=image/resize,l_1024" + ); + expect(assetBaseURL).equal("https://cdn.ali.com/inner.jpg?x-oss-process=image/resize,l_1024"); + }); + + it("encode", () => { + // @ts-ignore + const { assetBaseURL } = engine.resourceManager._parseURL( + "https://cdn.ali.com/inner.jpg?x-oss-process=image%25resize,l_1024" + ); + expect(assetBaseURL).equal("https://cdn.ali.com/inner.jpg?x-oss-process=image%25resize,l_1024"); + }); + + it("query path", () => { + // @ts-ignore + const { assetBaseURL, queryPath } = engine.resourceManager._parseURL("https://cdn.ali.com/inner.jpg?q=abc"); + expect(assetBaseURL).equal("https://cdn.ali.com/inner.jpg"); + expect(queryPath).equal("abc"); + }); + }); }); From 5ae64a85ec44ada85dfcd7b4c8c7468c7e87bc54 Mon Sep 17 00:00:00 2001 From: GuoLei1990 Date: Thu, 25 Jan 2024 16:01:36 +0800 Subject: [PATCH 14/21] "v1.1.0-beta.46" --- packages/core/package.json | 2 +- packages/design/package.json | 2 +- packages/draco/package.json | 2 +- packages/galacean/package.json | 2 +- packages/loader/package.json | 2 +- packages/math/package.json | 2 +- packages/physics-lite/package.json | 2 +- packages/physics-physx/package.json | 2 +- packages/rhi-webgl/package.json | 2 +- packages/shader-lab/package.json | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index e0a1665265..4cce0cc06d 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-core", - "version": "1.1.0-beta.45", + "version": "1.1.0-beta.46", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/design/package.json b/packages/design/package.json index 48dcc53e3e..0972beb287 100644 --- a/packages/design/package.json +++ b/packages/design/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-design", - "version": "1.1.0-beta.45", + "version": "1.1.0-beta.46", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/draco/package.json b/packages/draco/package.json index 85e69e6634..6071eb7e98 100644 --- a/packages/draco/package.json +++ b/packages/draco/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-draco", - "version": "1.1.0-beta.45", + "version": "1.1.0-beta.46", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/galacean/package.json b/packages/galacean/package.json index 2900123100..b3dd6299aa 100644 --- a/packages/galacean/package.json +++ b/packages/galacean/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine", - "version": "1.1.0-beta.45", + "version": "1.1.0-beta.46", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/loader/package.json b/packages/loader/package.json index 3045e6c1f2..79cdd91643 100644 --- a/packages/loader/package.json +++ b/packages/loader/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-loader", - "version": "1.1.0-beta.45", + "version": "1.1.0-beta.46", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/math/package.json b/packages/math/package.json index 0fd247d552..517885d3fb 100644 --- a/packages/math/package.json +++ b/packages/math/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-math", - "version": "1.1.0-beta.45", + "version": "1.1.0-beta.46", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/physics-lite/package.json b/packages/physics-lite/package.json index 3f9ff3445a..52fe01452e 100644 --- a/packages/physics-lite/package.json +++ b/packages/physics-lite/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-physics-lite", - "version": "1.1.0-beta.45", + "version": "1.1.0-beta.46", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/physics-physx/package.json b/packages/physics-physx/package.json index 6a87f8589e..60227d7db2 100644 --- a/packages/physics-physx/package.json +++ b/packages/physics-physx/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-physics-physx", - "version": "1.1.0-beta.45", + "version": "1.1.0-beta.46", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/rhi-webgl/package.json b/packages/rhi-webgl/package.json index 39a4061c15..1fe1310a94 100644 --- a/packages/rhi-webgl/package.json +++ b/packages/rhi-webgl/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-rhi-webgl", - "version": "1.1.0-beta.45", + "version": "1.1.0-beta.46", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/shader-lab/package.json b/packages/shader-lab/package.json index 06f76a5140..b63ecd5cab 100644 --- a/packages/shader-lab/package.json +++ b/packages/shader-lab/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-shader-lab", - "version": "1.1.0-beta.45", + "version": "1.1.0-beta.46", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" From e0258b034366cf8f1ad52b9d1f1727f18df95d29 Mon Sep 17 00:00:00 2001 From: Hu Song Date: Fri, 2 Feb 2024 18:27:34 +0800 Subject: [PATCH 15/21] Fix glb/gltf use extension parse (#1992) * fix: glb/gltf use extension parse --- packages/loader/src/gltf/GLTFUtils.ts | 16 ++++---- .../src/gltf/parser/GLTFSchemaParser.ts | 40 ++++++++----------- 2 files changed, 24 insertions(+), 32 deletions(-) diff --git a/packages/loader/src/gltf/GLTFUtils.ts b/packages/loader/src/gltf/GLTFUtils.ts index 174dbcae33..0d8e3f7b9b 100644 --- a/packages/loader/src/gltf/GLTFUtils.ts +++ b/packages/loader/src/gltf/GLTFUtils.ts @@ -419,17 +419,18 @@ export class GLTFUtils { */ static parseGLB( context: GLTFParserContext, - glb: ArrayBuffer + originBuffer: ArrayBuffer ): { - glTF: IGLTF; - buffers: ArrayBuffer[]; + glTF?: IGLTF; + buffers?: ArrayBuffer[]; + originBuffer?: ArrayBuffer; } { const UINT32_LENGTH = 4; const GLB_HEADER_MAGIC = 0x46546c67; // 'glTF' const GLB_HEADER_LENGTH = 12; const GLB_CHUNK_TYPES = { JSON: 0x4e4f534a, BIN: 0x004e4942 }; - const dataView = new DataView(glb); + const dataView = new DataView(originBuffer); // read header const header = { @@ -439,8 +440,7 @@ export class GLTFUtils { }; if (header.magic !== GLB_HEADER_MAGIC) { - console.error("Invalid glb magic number. Expected 0x46546C67, found 0x" + header.magic.toString(16)); - return null; + return { originBuffer }; } // read main data @@ -453,7 +453,7 @@ export class GLTFUtils { return null; } - const glTFData = new Uint8Array(glb, GLB_HEADER_LENGTH + 2 * UINT32_LENGTH, chunkLength); + const glTFData = new Uint8Array(originBuffer, GLB_HEADER_LENGTH + 2 * UINT32_LENGTH, chunkLength); const glTF: IGLTF = JSON.parse(Utils.decodeText(glTFData)); // read all buffers @@ -471,7 +471,7 @@ export class GLTFUtils { } const currentOffset = byteOffset + 2 * UINT32_LENGTH; - const buffer = glb.slice(currentOffset, currentOffset + chunkLength); + const buffer = originBuffer.slice(currentOffset, currentOffset + chunkLength); buffers.push(buffer); restoreGLBBufferSlice.push(new Vector2(currentOffset, chunkLength)); diff --git a/packages/loader/src/gltf/parser/GLTFSchemaParser.ts b/packages/loader/src/gltf/parser/GLTFSchemaParser.ts index 3dd55e85db..51d4ece355 100644 --- a/packages/loader/src/gltf/parser/GLTFSchemaParser.ts +++ b/packages/loader/src/gltf/parser/GLTFSchemaParser.ts @@ -1,4 +1,4 @@ -import { AssetPromise, request } from "@galacean/engine-core"; +import { Utils, request } from "@galacean/engine-core"; import { RequestConfig } from "@galacean/engine-core/types/asset/request"; import { BufferRequestInfo } from "../../GLTFContentRestorer"; import { IGLTF } from "../GLTFSchema"; @@ -13,28 +13,20 @@ export class GLTFSchemaParser extends GLTFParser { const url = glTFResource.url; const restoreBufferRequests = contentRestorer.bufferRequests; const requestConfig = { type: "arraybuffer" }; - const isGLB = this._isGLB(url); - - contentRestorer.isGLB = isGLB; - const promise: AssetPromise = isGLB - ? request(url, requestConfig) - .then((glb) => { - restoreBufferRequests.push(new BufferRequestInfo(url, requestConfig)); - return GLTFUtils.parseGLB(context, glb); - }) - .then(({ glTF, buffers }) => { - context.buffers = buffers; - return glTF; - }) - : request(url, { - type: "json" - }); - - return promise; - } - - private _isGLB(url: string): boolean { - const index = url.lastIndexOf("."); - return url.substring(index + 1, index + 4) === "glb"; + return request(url, requestConfig) + .then((buffer) => { + restoreBufferRequests.push(new BufferRequestInfo(url, requestConfig)); + return GLTFUtils.parseGLB(context, buffer); + }) + .then((result) => { + if (result?.glTF) { + contentRestorer.isGLB = true; + context.buffers = result.buffers; + return result.glTF; + } else { + contentRestorer.isGLB = false; + return JSON.parse(Utils.decodeText(new Uint8Array(result.originBuffer))); + } + }); } } From 065e810490e48524e55ba29c74d28496c8192c7d Mon Sep 17 00:00:00 2001 From: susiwen8 Date: Fri, 16 Feb 2024 21:21:42 +0800 Subject: [PATCH 16/21] Fix`gl.MIN` and `gl.MAX` doesn't exist in `webgl1` (#1990) * fix: `gl.MIN` and `gl.MAX` doesn't exist in `webgl1` --- packages/rhi-webgl/src/GLCapability.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/rhi-webgl/src/GLCapability.ts b/packages/rhi-webgl/src/GLCapability.ts index 84c957648a..a74cc49da5 100644 --- a/packages/rhi-webgl/src/GLCapability.ts +++ b/packages/rhi-webgl/src/GLCapability.ts @@ -154,6 +154,7 @@ export class GLCapability { instancedArrays, multipleSample, drawBuffers, + blendMinMax, astc, astc_webkit, @@ -185,6 +186,7 @@ export class GLCapability { cap.set(instancedArrays, isWebGL2 || !!requireExtension(instancedArrays)); cap.set(multipleSample, isWebGL2); cap.set(drawBuffers, isWebGL2 || !!requireExtension(drawBuffers)); + cap.set(blendMinMax, isWebGL2 || !!requireExtension(blendMinMax)); cap.set(textureFloat, isWebGL2 || !!requireExtension(textureFloat)); cap.set(textureHalfFloat, isWebGL2 || !!requireExtension(textureHalfFloat)); cap.set(textureFloatLinear, !!requireExtension(textureFloatLinear)); @@ -244,11 +246,16 @@ export class GLCapability { textureFilterAnisotropic, textureHalfFloat, colorBufferHalfFloat, - WEBGL_colorBufferFloat + WEBGL_colorBufferFloat, + blendMinMax } = GLCapabilityType; const { isWebGL2 } = this.rhi; if (!isWebGL2) { + this._compatibleInterface(blendMinMax, { + MIN: "MIN_EXT", + MAX: "MAX_EXT" + }); this._compatibleInterface(depthTexture, { UNSIGNED_INT_24_8: "UNSIGNED_INT_24_8_WEBGL" }); From b78eb70cbfaa65bc614e71e4a89cfc26b5c58f9e Mon Sep 17 00:00:00 2001 From: GuoLei1990 Date: Mon, 19 Feb 2024 17:18:45 +0800 Subject: [PATCH 17/21] "v1.1.0-beta.47" --- packages/core/package.json | 2 +- packages/design/package.json | 2 +- packages/draco/package.json | 2 +- packages/galacean/package.json | 2 +- packages/loader/package.json | 2 +- packages/math/package.json | 2 +- packages/physics-lite/package.json | 2 +- packages/physics-physx/package.json | 2 +- packages/rhi-webgl/package.json | 2 +- packages/shader-lab/package.json | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index 4cce0cc06d..f37bcb4d08 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-core", - "version": "1.1.0-beta.46", + "version": "1.1.0-beta.47", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/design/package.json b/packages/design/package.json index 0972beb287..d7fec9f284 100644 --- a/packages/design/package.json +++ b/packages/design/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-design", - "version": "1.1.0-beta.46", + "version": "1.1.0-beta.47", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/draco/package.json b/packages/draco/package.json index 6071eb7e98..fe3ba19cda 100644 --- a/packages/draco/package.json +++ b/packages/draco/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-draco", - "version": "1.1.0-beta.46", + "version": "1.1.0-beta.47", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/galacean/package.json b/packages/galacean/package.json index b3dd6299aa..63623bb295 100644 --- a/packages/galacean/package.json +++ b/packages/galacean/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine", - "version": "1.1.0-beta.46", + "version": "1.1.0-beta.47", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/loader/package.json b/packages/loader/package.json index 79cdd91643..be200291d2 100644 --- a/packages/loader/package.json +++ b/packages/loader/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-loader", - "version": "1.1.0-beta.46", + "version": "1.1.0-beta.47", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/math/package.json b/packages/math/package.json index 517885d3fb..2298370a25 100644 --- a/packages/math/package.json +++ b/packages/math/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-math", - "version": "1.1.0-beta.46", + "version": "1.1.0-beta.47", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/physics-lite/package.json b/packages/physics-lite/package.json index 52fe01452e..9930ae42ad 100644 --- a/packages/physics-lite/package.json +++ b/packages/physics-lite/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-physics-lite", - "version": "1.1.0-beta.46", + "version": "1.1.0-beta.47", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/physics-physx/package.json b/packages/physics-physx/package.json index 60227d7db2..2cc93ba564 100644 --- a/packages/physics-physx/package.json +++ b/packages/physics-physx/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-physics-physx", - "version": "1.1.0-beta.46", + "version": "1.1.0-beta.47", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/rhi-webgl/package.json b/packages/rhi-webgl/package.json index 1fe1310a94..f78560d315 100644 --- a/packages/rhi-webgl/package.json +++ b/packages/rhi-webgl/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-rhi-webgl", - "version": "1.1.0-beta.46", + "version": "1.1.0-beta.47", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/shader-lab/package.json b/packages/shader-lab/package.json index b63ecd5cab..3546df3bd0 100644 --- a/packages/shader-lab/package.json +++ b/packages/shader-lab/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-shader-lab", - "version": "1.1.0-beta.46", + "version": "1.1.0-beta.47", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" From 95a3b054e9e4677cf62068cc1a9fe3d095bd6c63 Mon Sep 17 00:00:00 2001 From: singlecoder Date: Wed, 21 Feb 2024 11:35:40 +0800 Subject: [PATCH 18/21] refactor(render-sort-compare): opt compare code (#2002) --- packages/core/src/RenderPipeline/RenderQueue.ts | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/packages/core/src/RenderPipeline/RenderQueue.ts b/packages/core/src/RenderPipeline/RenderQueue.ts index 40537b3651..6a795c37ca 100644 --- a/packages/core/src/RenderPipeline/RenderQueue.ts +++ b/packages/core/src/RenderPipeline/RenderQueue.ts @@ -25,9 +25,7 @@ export class RenderQueue { } // make suer from the same renderer. if (componentA.instanceId === componentB.instanceId) { - return ( - dataA.material._priority - dataB.material._priority || componentA._distanceForSort - componentB._distanceForSort - ); + return dataA.material._priority - dataB.material._priority; } else { const distanceDiff = componentA._distanceForSort - componentB._distanceForSort; if (distanceDiff === 0) { @@ -52,9 +50,7 @@ export class RenderQueue { } // make suer from the same renderer. if (componentA.instanceId === componentB.instanceId) { - return ( - dataA.material._priority - dataB.material._priority || componentB._distanceForSort - componentA._distanceForSort - ); + return dataA.material._priority - dataB.material._priority; } else { const distanceDiff = componentB._distanceForSort - componentA._distanceForSort; if (distanceDiff === 0) { From ebd903681045bf1701b07fb3b496f730b9ec0ce3 Mon Sep 17 00:00:00 2001 From: luzhuang <364439895@qq.com> Date: Thu, 22 Feb 2024 16:20:57 +0800 Subject: [PATCH 19/21] Physics raycast hitResult add shape (#2004) * feat: hitResult add shape --- packages/core/src/physics/HitResult.ts | 3 +++ packages/core/src/physics/PhysicsScene.ts | 5 ++++- tests/src/core/physics/PhysicsManager.test.ts | 4 ++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/core/src/physics/HitResult.ts b/packages/core/src/physics/HitResult.ts index 148563d925..e5dcbb8daa 100644 --- a/packages/core/src/physics/HitResult.ts +++ b/packages/core/src/physics/HitResult.ts @@ -1,5 +1,6 @@ import { Entity } from "../Entity"; import { Vector3 } from "@galacean/engine-math"; +import { ColliderShape } from "./shape"; /** * Structure used to get information back from a raycast or a sweep. @@ -13,4 +14,6 @@ export class HitResult { point: Vector3 = new Vector3(); /** The normal of the surface the ray hit. */ normal: Vector3 = new Vector3(); + /** The shape of the collider that was hit. */ + shape: ColliderShape = null; } diff --git a/packages/core/src/physics/PhysicsScene.ts b/packages/core/src/physics/PhysicsScene.ts index 90cfdad394..c1c1b442f2 100644 --- a/packages/core/src/physics/PhysicsScene.ts +++ b/packages/core/src/physics/PhysicsScene.ts @@ -315,7 +315,9 @@ export class PhysicsScene { if (hitResult != undefined) { const result = this._nativePhysicsScene.raycast(ray, distance, onRaycast, (idx, distance, position, normal) => { - hitResult.entity = this._scene.engine._physicalObjectsMap[idx]._collider.entity; + const hitShape = this._scene.engine._physicalObjectsMap[idx]; + hitResult.entity = hitShape._collider.entity; + hitResult.shape = hitShape; hitResult.distance = distance; hitResult.normal.copyFrom(normal); hitResult.point.copyFrom(position); @@ -325,6 +327,7 @@ export class PhysicsScene { return true; } else { hitResult.entity = null; + hitResult.shape = null; hitResult.distance = 0; hitResult.point.set(0, 0, 0); hitResult.normal.set(0, 0, 0); diff --git a/tests/src/core/physics/PhysicsManager.test.ts b/tests/src/core/physics/PhysicsManager.test.ts index d8d02fa173..422767344d 100644 --- a/tests/src/core/physics/PhysicsManager.test.ts +++ b/tests/src/core/physics/PhysicsManager.test.ts @@ -190,6 +190,7 @@ describe("Physics Test", () => { expect(outHitResult.point.z).to.be.closeTo(0.5, 0.01); expect(outHitResult.normal).to.be.deep.include({ x: 0, y: 0, z: 0 }); expect(outHitResult.entity).to.be.eq(raycastTestRoot); + expect(outHitResult.shape).to.be.eq(box); // Test that raycast with outHitResult works correctly. expect(engineLite.physicsManager.raycast(ray, Number.MAX_VALUE, outHitResult)).to.eq(true); @@ -199,6 +200,7 @@ describe("Physics Test", () => { expect(outHitResult.point.z).to.be.closeTo(0.5, 0.01); expect(outHitResult.normal).to.be.deep.include({ x: 0, y: 0, z: 0 }); expect(outHitResult.entity).to.be.eq(raycastTestRoot); + expect(outHitResult.shape).to.be.eq(box); // Test that raycast nothing if layer is not match. expect(engineLite.physicsManager.raycast(ray, Number.MAX_VALUE, Layer.Layer1, outHitResult)).to.eq(false); @@ -206,6 +208,7 @@ describe("Physics Test", () => { expect(outHitResult.point).to.be.deep.include({ x: 0, y: 0, z: 0 }); expect(outHitResult.normal).to.be.deep.include({ x: 0, y: 0, z: 0 }); expect(outHitResult.entity).to.be.null; + expect(outHitResult.shape).to.be.null; // Test that return origin point if origin is inside collider. ray = new Ray(new Vector3(0.25, -0.5, 0.5), new Vector3(0, -1, 0)); @@ -213,6 +216,7 @@ describe("Physics Test", () => { expect(outHitResult.distance).to.be.eq(0); expect(outHitResult.point).to.be.deep.include({ x: 0.25, y: -0.5, z: 0.5 }); expect(outHitResult.entity).to.be.eq(raycastTestRoot); + expect(outHitResult.shape).to.be.eq(box); // Test that raycast nothing if distance is less than distance of origin to detected collider. expect(engineLite.physicsManager.raycast(ray, 0, Layer.Everything, outHitResult)).to.eq(true); From ade32b0f0d4bd59130eb4dfd1cee135f9c743bbc Mon Sep 17 00:00:00 2001 From: GuoLei1990 Date: Thu, 22 Feb 2024 16:22:48 +0800 Subject: [PATCH 20/21] "v1.1.0-beta.48" --- packages/core/package.json | 2 +- packages/design/package.json | 2 +- packages/draco/package.json | 2 +- packages/galacean/package.json | 2 +- packages/loader/package.json | 2 +- packages/math/package.json | 2 +- packages/physics-lite/package.json | 2 +- packages/physics-physx/package.json | 2 +- packages/rhi-webgl/package.json | 2 +- packages/shader-lab/package.json | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index f37bcb4d08..31b05c8315 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-core", - "version": "1.1.0-beta.47", + "version": "1.1.0-beta.48", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/design/package.json b/packages/design/package.json index d7fec9f284..272e7ce931 100644 --- a/packages/design/package.json +++ b/packages/design/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-design", - "version": "1.1.0-beta.47", + "version": "1.1.0-beta.48", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/draco/package.json b/packages/draco/package.json index fe3ba19cda..111921d1bf 100644 --- a/packages/draco/package.json +++ b/packages/draco/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-draco", - "version": "1.1.0-beta.47", + "version": "1.1.0-beta.48", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/galacean/package.json b/packages/galacean/package.json index 63623bb295..69fa910479 100644 --- a/packages/galacean/package.json +++ b/packages/galacean/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine", - "version": "1.1.0-beta.47", + "version": "1.1.0-beta.48", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/loader/package.json b/packages/loader/package.json index be200291d2..90ea9ba118 100644 --- a/packages/loader/package.json +++ b/packages/loader/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-loader", - "version": "1.1.0-beta.47", + "version": "1.1.0-beta.48", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/math/package.json b/packages/math/package.json index 2298370a25..5952b9cfb9 100644 --- a/packages/math/package.json +++ b/packages/math/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-math", - "version": "1.1.0-beta.47", + "version": "1.1.0-beta.48", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/physics-lite/package.json b/packages/physics-lite/package.json index 9930ae42ad..095544ba99 100644 --- a/packages/physics-lite/package.json +++ b/packages/physics-lite/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-physics-lite", - "version": "1.1.0-beta.47", + "version": "1.1.0-beta.48", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/physics-physx/package.json b/packages/physics-physx/package.json index 2cc93ba564..03e865d2ad 100644 --- a/packages/physics-physx/package.json +++ b/packages/physics-physx/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-physics-physx", - "version": "1.1.0-beta.47", + "version": "1.1.0-beta.48", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/rhi-webgl/package.json b/packages/rhi-webgl/package.json index f78560d315..b121a1e459 100644 --- a/packages/rhi-webgl/package.json +++ b/packages/rhi-webgl/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-rhi-webgl", - "version": "1.1.0-beta.47", + "version": "1.1.0-beta.48", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/shader-lab/package.json b/packages/shader-lab/package.json index 3546df3bd0..ce1b8d5f1b 100644 --- a/packages/shader-lab/package.json +++ b/packages/shader-lab/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-shader-lab", - "version": "1.1.0-beta.47", + "version": "1.1.0-beta.48", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" From 3a93929dd3afeffa592f39a7b3fd34a36d0290d8 Mon Sep 17 00:00:00 2001 From: GuoLei1990 Date: Thu, 22 Feb 2024 16:29:09 +0800 Subject: [PATCH 21/21] "v1.1.0-beta.49" --- packages/core/package.json | 2 +- packages/design/package.json | 2 +- packages/draco/package.json | 2 +- packages/galacean/package.json | 2 +- packages/loader/package.json | 2 +- packages/math/package.json | 2 +- packages/physics-lite/package.json | 2 +- packages/physics-physx/package.json | 2 +- packages/rhi-webgl/package.json | 2 +- packages/shader-lab/package.json | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index 31b05c8315..8ccd89b90b 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-core", - "version": "1.1.0-beta.48", + "version": "1.1.0-beta.49", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/design/package.json b/packages/design/package.json index 272e7ce931..a938f546a1 100644 --- a/packages/design/package.json +++ b/packages/design/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-design", - "version": "1.1.0-beta.48", + "version": "1.1.0-beta.49", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/draco/package.json b/packages/draco/package.json index 111921d1bf..0c3e975b60 100644 --- a/packages/draco/package.json +++ b/packages/draco/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-draco", - "version": "1.1.0-beta.48", + "version": "1.1.0-beta.49", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/galacean/package.json b/packages/galacean/package.json index 69fa910479..29312dffff 100644 --- a/packages/galacean/package.json +++ b/packages/galacean/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine", - "version": "1.1.0-beta.48", + "version": "1.1.0-beta.49", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/loader/package.json b/packages/loader/package.json index 90ea9ba118..e22ed338e8 100644 --- a/packages/loader/package.json +++ b/packages/loader/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-loader", - "version": "1.1.0-beta.48", + "version": "1.1.0-beta.49", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/math/package.json b/packages/math/package.json index 5952b9cfb9..f225b88667 100644 --- a/packages/math/package.json +++ b/packages/math/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-math", - "version": "1.1.0-beta.48", + "version": "1.1.0-beta.49", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/physics-lite/package.json b/packages/physics-lite/package.json index 095544ba99..c9dedfc70e 100644 --- a/packages/physics-lite/package.json +++ b/packages/physics-lite/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-physics-lite", - "version": "1.1.0-beta.48", + "version": "1.1.0-beta.49", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/physics-physx/package.json b/packages/physics-physx/package.json index 03e865d2ad..13911a8ae4 100644 --- a/packages/physics-physx/package.json +++ b/packages/physics-physx/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-physics-physx", - "version": "1.1.0-beta.48", + "version": "1.1.0-beta.49", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/rhi-webgl/package.json b/packages/rhi-webgl/package.json index b121a1e459..3a47bc964f 100644 --- a/packages/rhi-webgl/package.json +++ b/packages/rhi-webgl/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-rhi-webgl", - "version": "1.1.0-beta.48", + "version": "1.1.0-beta.49", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/shader-lab/package.json b/packages/shader-lab/package.json index ce1b8d5f1b..d7ed39e3ef 100644 --- a/packages/shader-lab/package.json +++ b/packages/shader-lab/package.json @@ -1,6 +1,6 @@ { "name": "@galacean/engine-shader-lab", - "version": "1.1.0-beta.48", + "version": "1.1.0-beta.49", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org"