Skip to content

MeshBasicNodeMaterial: Refactor env map support.#28798

Merged
Mugen87 merged 8 commits intomrdoob:devfrom
Mugen87:dev72
Jul 5, 2024
Merged

MeshBasicNodeMaterial: Refactor env map support.#28798
Mugen87 merged 8 commits intomrdoob:devfrom
Mugen87:dev72

Conversation

@Mugen87
Copy link
Copy Markdown
Collaborator

@Mugen87 Mugen87 commented Jul 3, 2024

Related issue: #28795, #28785

Description

This is a more generic solution for #28795 which also covers MeshLambertMaterial and MeshPhongMaterial.

Comment thread src/nodes/materials/NodeMaterial.js Outdated
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Jul 3, 2024

📦 Bundle size

Full ESM build, minified and gzipped.

Filesize dev Filesize PR Diff
683.5 kB (169.2 kB) 683.5 kB (169.2 kB) +0 B

🌳 Bundle size after tree-shaking

Minimal build including a renderer, camera, empty scene, and dependencies.

Filesize dev Filesize PR Diff
460.6 kB (111.1 kB) 460.6 kB (111.1 kB) +0 B

Comment thread src/nodes/materials/NodeMaterial.js Outdated

// ENV MAP

if ( this.environment === false ) {
Copy link
Copy Markdown
Collaborator

@sunag sunag Jul 4, 2024

Choose a reason for hiding this comment

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

I think we could add this operation in BasicLighthingModel removing this.environment, and extends PhongLightingModel from BasicLightingModel

Copy link
Copy Markdown
Collaborator Author

@Mugen87 Mugen87 Jul 4, 2024

Choose a reason for hiding this comment

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

Okay, I rewritten the code like that!

One thing that can be optimized though (ideally with a different PR) is that NodeMaterial.setupLights() should only add an instance of EnvironmentNode for PBR materials. All other materials which do not support PMREM are incompatible with that type of node. Imo, it seems more clean if this node isn't created for that materials in the first place.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I made a small revision. The idea of ​​the LightingModel parameters would be equivalent to the defines that enable the specific modules of the light model, normally boolean, since we could access the material in the setup process.

Still, I have to do another review, ideally we should have a node like EnvironmentNode to handle this.

Copy link
Copy Markdown
Collaborator Author

@Mugen87 Mugen87 Jul 4, 2024

Choose a reason for hiding this comment

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

Awesome, that looks much cleaner now!

Besides, I love these kind of reviews. They are ideal to learn the details of the new system^^.

Copy link
Copy Markdown
Collaborator Author

@Mugen87 Mugen87 Jul 4, 2024

Choose a reason for hiding this comment

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

ideally we should have a node like EnvironmentNode to handle this.

Indeed. It would be nice if NodeMaterial could somehow setup a different type of EnvironmentNode depending on the type of material. That would automatically solve #28798 (comment).

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Still, I have to do another review, ideally we should have a node like EnvironmentNode to handle this.

I done this part! :)

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Great! Let's merge the current state. We can add more revisions in other PRs.

@Mugen87 Mugen87 added this to the r167 milestone Jul 4, 2024
Comment thread src/nodes/materials/MeshLambertNodeMaterial.js Outdated
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.

3 participants