Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix Sprite can't batch bug caused by material instance #1830

Merged
merged 3 commits into from
Oct 30, 2023

Conversation

cptbtptpbcptdtptp
Copy link
Collaborator

It will invalidate the batch.

import {
  SpriteMaskInteraction,
  SpriteRenderer,
  WebGLEngine,
} from "@galacean/engine";

// Create engine object.
WebGLEngine.create({ canvas: "canvas" }).then((engine) => {
  const entity = engine.sceneManager.activeScene
    .createRootEntity()
    .createChild("sprite");
  const renderer = entity.addComponent(SpriteRenderer);
  const beforeMat = renderer.getMaterial();
  renderer.maskInteraction = SpriteMaskInteraction.VisibleInsideMask;
  renderer.maskInteraction = SpriteMaskInteraction.None;
  const afterMat = renderer.getMaterial();
  console.log("material", beforeMat === afterMat);
});

@cptbtptpbcptdtptp cptbtptpbcptdtptp added bug Something isn't working sprite 2D Sprite labels Oct 23, 2023
@cptbtptpbcptdtptp cptbtptpbcptdtptp requested review from singlecoder and GuoLei1990 and removed request for singlecoder October 23, 2023 10:53
@cptbtptpbcptdtptp cptbtptpbcptdtptp self-assigned this Oct 23, 2023
@codecov
Copy link

codecov bot commented Oct 23, 2023

Codecov Report

Attention: 55 lines in your changes are missing coverage. Please review.

Comparison is base (25d010d) 64.99% compared to head (8aa3f38) 66.78%.
Report is 16 commits behind head on main.

❗ Current head 8aa3f38 differs from pull request most recent head e6d861a. Consider uploading reports for the commit e6d861a to get more accurate results

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1830      +/-   ##
==========================================
+ Coverage   64.99%   66.78%   +1.78%     
==========================================
  Files         473      472       -1     
  Lines       23749    23719      -30     
  Branches     3366     3377      +11     
==========================================
+ Hits        15436    15841     +405     
+ Misses       7110     6682     -428     
+ Partials     1203     1196       -7     
Files Coverage Δ
packages/core/src/2d/sprite/SpriteRenderer.ts 90.47% <100.00%> (+0.05%) ⬆️
packages/core/src/Engine.ts 87.53% <100.00%> (+0.49%) ⬆️
packages/core/src/asset/ResourceManager.ts 60.09% <100.00%> (ø)
packages/core/src/clone/CloneManager.ts 78.84% <100.00%> (+0.84%) ⬆️
packages/core/src/clone/ComponentCloner.ts 85.71% <ø> (ø)
packages/core/src/mesh/SkinnedMeshRenderer.ts 64.37% <100.00%> (ø)
packages/core/src/shader/Shader.ts 15.83% <ø> (ø)
packages/shader-lab/src/AstNodeUtils.ts 78.26% <ø> (-0.47%) ⬇️
packages/shader-lab/src/ShaderLab.ts 100.00% <100.00%> (ø)
packages/shader-lab/src/ShaderVisitor.ts 89.14% <100.00%> (+1.64%) ⬆️
... and 12 more

... and 43 files with indirect coverage changes

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@GuoLei1990 GuoLei1990 changed the title Fix sprite material not need clone every time Fix Sprite can't batch bug caused by material instance Oct 26, 2023
@@ -81,6 +83,8 @@ export class Engine extends EventDispatcher {

/* @internal */
_spriteDefaultMaterial: Material;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This maybe delete

@GuoLei1990 GuoLei1990 merged commit 46397db into galacean:main Oct 30, 2023
5 checks passed
GuoLei1990 added a commit that referenced this pull request Nov 1, 2023
* main: (29 commits)
  Fix(ShaderLab): make `UsePass` directive compatible with all builtin shader names (#1855)
  feat: ParticleGenerator support simulationSpeed (#1854)
  fix: sprite destroy (#1852)
  "v1.1.0-beta.18"
  Fix quaternion to euler bug (#1851)
  Fix ColorOverLifetimeModule mode invalid bug (#1850)
  fix: no autoplay when set animatorController after enable (#1843)
  Fix material destoroy bug (#1847)
  Fix Sprite can't batch bug caused by material instance (#1830)
  "v1.1.0-beta.17"
  fix: glTF animation parse bug (#1845)
  fix: mesh decoder (#1844)
  "v1.1.0-beta.16"
  Fix blendShape crossFade bug (#1841)
  fix: ignore ambient in 2d template (#1836)
  "v1.1.0-beta.15"
  Fix blendShapeAnimation crossFade bug (#1840)
  fix: ignore case of asset url (#1809)
  `Shaderlab` remove editor properties (#1825)
  fix: ktx2 texture support (#1829)
  ...

# Conflicts:
#	packages/core/src/particle/ParticleRenderer.ts
zhuxudong added a commit to zhuxudong/engine that referenced this pull request Nov 7, 2023
* dev/1.2: (31 commits)
  Add sunSource (galacean#1823)
  Fix(ShaderLab): make `UsePass` directive compatible with all builtin shader names (galacean#1855)
  feat: ParticleGenerator support simulationSpeed (galacean#1854)
  fix: sprite destroy (galacean#1852)
  "v1.1.0-beta.18"
  Fix quaternion to euler bug (galacean#1851)
  Fix ColorOverLifetimeModule mode invalid bug (galacean#1850)
  fix: no autoplay when set animatorController after enable (galacean#1843)
  Refactor `glTFResource` (galacean#1831)
  Fix material destoroy bug (galacean#1847)
  Fix Sprite can't batch bug caused by material instance (galacean#1830)
  "v1.1.0-beta.17"
  fix: glTF animation parse bug (galacean#1845)
  fix: mesh decoder (galacean#1844)
  "v1.1.0-beta.16"
  Fix blendShape crossFade bug (galacean#1841)
  fix: ignore ambient in 2d template (galacean#1836)
  "v1.1.0-beta.15"
  Fix blendShapeAnimation crossFade bug (galacean#1840)
  fix: ignore case of asset url (galacean#1809)
  ...

# Conflicts:
#	packages/loader/src/gltf/parser/GLTFParserContext.ts
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working sprite 2D Sprite
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants