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

Core: allow tree-shaking again for materials #24094

Merged
merged 8 commits into from
Jun 15, 2022

Conversation

marcofugaro
Copy link
Contributor

@marcofugaro marcofugaro commented May 20, 2022

Related issue: #23314 (comment) (why didn't you guys ping me 😅)

Description

Since #23314 materials have not been tree-shakeable (meaning if you don't use MeshPhysicalMaterial in your scene, it still stays in the final bundle).

This is the correct way to have a fromType() function is to put it in the class where it's needed. MaterialLoader is the place, since it already handles the creation of the materials.

This PR deprecates Material.fromType and replaces it with MaterialLoader.createMaterialFromType.

- const material = Material.fromType(type)
+ const material = MaterialLoader.createMaterialFromType(type)
Before this PR After this PR
image image

/cc @sunag

Comment on lines +327 to +346
const materialLib = {
ShadowMaterial,
SpriteMaterial,
RawShaderMaterial,
ShaderMaterial,
PointsMaterial,
MeshPhysicalMaterial,
MeshStandardMaterial,
MeshPhongMaterial,
MeshToonMaterial,
MeshNormalMaterial,
MeshLambertMaterial,
MeshDepthMaterial,
MeshDistanceMaterial,
MeshBasicMaterial,
MeshMatcapMaterial,
LineDashedMaterial,
LineBasicMaterial,
Material
};
Copy link
Contributor Author

Choose a reason for hiding this comment

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

This object can safely be in the function thanks to garbage collection.

@sunag
Copy link
Collaborator

sunag commented May 20, 2022

@marcofugaro I tried something similar here #22552 I don't know what @mrdoob would think about it now.

@mrdoob mrdoob added this to the r142 milestone Jun 15, 2022
@mrdoob mrdoob merged commit bff54c4 into mrdoob:dev Jun 15, 2022
@mrdoob
Copy link
Owner

mrdoob commented Jun 15, 2022

Thanks!

abernier pushed a commit to abernier/three.js that referenced this pull request Sep 16, 2022
* Core: Replace Materia.fromType with MaterialLoader.createMaterialFromType

* Remove unused import

* Add missing materialLib

* Add missing import

* Fix import

* Add missing SpriteNodeMaterial
snagy pushed a commit to snagy/three.js-1 that referenced this pull request Sep 21, 2022
* Core: Replace Materia.fromType with MaterialLoader.createMaterialFromType

* Remove unused import

* Add missing materialLib

* Add missing import

* Fix import

* Add missing SpriteNodeMaterial
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants