# Differences in PBR Material Behavior Between Babylon 5 and 7

**URL:** <https://forum.babylonjs.com/t/differences-in-pbr-material-behavior-between-babylon-5-and-7/56585>\
**Category:** Bugs\
**Tags:** lighting, material\
**Created:** [February 14, 2025, 5:21pm UTC](https://forum.babylonjs.com/t/differences-in-pbr-material-behavior-between-babylon-5-and-7/56585 "2025-02-14T17:21:33Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![c.gianfrate](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/c.gianfrate/32/44762_2.png) [@c.gianfrate](https://forum.babylonjs.com/u/c.gianfrate)\
**Post date:** [February 14, 2025, 5:21pm UTC](https://forum.babylonjs.com/t/differences-in-pbr-material-behavior-between-babylon-5-and-7/56585/1 "2025-02-14T17:21:33Z")

</div>

Hi everyone,

I recently updated BabylonJS from version **5.57.1** to **7.47.2** for my project to take advantage of new features. However, I noticed that the PBR Material behavior has changed significantly between these versions.

I am using the exact same model, identical environment map, and the same scene material image processing settings. The IBL intensity is also unchanged. Despite this, the metallic/roughness workflow produces different results.

To ensure the issue wasn’t related to my implementation, I also tested the materials in the **BabylonJS Sandbox** , and the behavior is exactly the same as in my project. This confirms that the difference is coming from the rendering engine itself rather than any custom settings in my scene.

The model I am using for testing is available here:  
🔗 [**Suzanne Hi-Poly GLB Model**](https://ptb-assets-public.s3.eu-west-1.amazonaws.com/tk3d-ptb-dev/models/suzanne_hipoly/model.glb)

The environment map I am using is:  
🌍 [**Studio With Gradients .env Map**](https://ptb-assets-public.s3.eu-west-1.amazonaws.com/tk3d-ptb-dev/models/_shared/_envs/env04_studioWithGradients.env)

Here are some comparisons between Babylon 5.57.1 and 7.47.2 at the same metallic/roughness values:

- **5.57.1 left vs 7.47.2 right (Metallic: 0.75, Roughness: 0.75)**  

- **5.57.1 vs 7.47.2 (Metallic: 1, Roughness: 1)**  

To cross-check, I also tested a metallic/roughness workflow in Unity with the same env to get another reference, and it seems to me more similar to the Babylon 5 reference (ex. with metallic 1, roughness 1):

 ![Unity_Metallic1_Roughness1](https://us1.discourse-cdn.com/flex024/uploads/babylonjs/original/3X/3/5/35040387e9ea9366c44c0271c86b6d68daf200cb.png)

Have there been notable changes in the PBR Material rendering between BabylonJS 5.57.1 and 7.6.0? If so, is there any documentation or explanation for these differences?

Thanks in advance for your help!

---

<div class="post-metadata">

**Author:** ![alexchuber](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/alexchuber/32/52000_2.png) [@alexchuber](https://forum.babylonjs.com/u/alexchuber)\
**Post date:** [February 14, 2025, 7:50pm UTC](https://forum.babylonjs.com/t/differences-in-pbr-material-behavior-between-babylon-5-and-7/56585/2 "2025-02-14T19:50:23Z")

</div>

cc @PatrickRyan

Here’s some Sandbox links for the [before](https://sandbox.babylonjs.com/?version=5.57.1&environment=https://ptb-assets-public.s3.eu-west-1.amazonaws.com/tk3d-ptb-dev/models/_shared/_envs/env04_studioWithGradients.env&asset=https://ptb-assets-public.s3.eu-west-1.amazonaws.com/tk3d-ptb-dev/models/suzanne_hipoly/model.glb) vs [after](https://sandbox.babylonjs.com/?environment=https://ptb-assets-public.s3.eu-west-1.amazonaws.com/tk3d-ptb-dev/models/_shared/_envs/env04_studioWithGradients.env&asset=https://ptb-assets-public.s3.eu-west-1.amazonaws.com/tk3d-ptb-dev/models/suzanne_hipoly/model.glb).

---

<div class="post-metadata">

**Author:** ![alexchuber](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/alexchuber/32/52000_2.png) [@alexchuber](https://forum.babylonjs.com/u/alexchuber)\
**Post date:** [February 14, 2025, 7:56pm UTC](https://forum.babylonjs.com/t/differences-in-pbr-material-behavior-between-babylon-5-and-7/56585/3 "2025-02-14T19:56:51Z")

</div>

(P.S. Welcome to the forum! 🙂 )

---

<div class="post-metadata">

**Author:** ![PatrickRyan](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/patrickryan/32/3417_2.png) [@PatrickRyan](https://forum.babylonjs.com/u/PatrickRyan)\
**Post date:** [February 15, 2025, 12:03am UTC](https://forum.babylonjs.com/t/differences-in-pbr-material-behavior-between-babylon-5-and-7/56585/4 "2025-02-15T00:03:04Z")

</div>

@c.gianfrate, if I remember correctly between 5.5 and now, there was an update in the glTF spec because it was not handling energy conservation correctly, so we updated our implementation to correctly conserve energy. Basically, it means that under certain circumstances the energy reflected from the material surface was not equal to the amount of energy hitting it. I will try to track down the furnace test model we used to illustrate it, but the person who might know where the model lives is out of the office right now.

I don’t remember exactly when that update came into the engine, but I will say that the way we render now is more physically accurate. I don’t think there’s much in the way of documentation about the change because in essence it was a bug in the way we were rendering. However, @cx20 has a great resource for [comparing the different renderers](https://github.com/cx20/gltf-test?tab=readme-ov-file) to see where there may be differences. If you look at the PBR models, you can see that we have all snapped to the correct energy conservation now. I hope this helps explain the difference.

---

<div class="post-metadata">

**Author:** ![Evgeni\_Popov](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/evgeni_popov/32/4432_2.png) [@Evgeni\_Popov](https://forum.babylonjs.com/u/Evgeni_Popov)\
**Post date:** [February 17, 2025, 9:29am UTC](https://forum.babylonjs.com/t/differences-in-pbr-material-behavior-between-babylon-5-and-7/56585/5 "2025-02-17T09:29:59Z")

</div>

In fact, it is [this PR](https://github.com/BabylonJS/Babylon.js/pull/16063) (available since 7.45.0) that modifies the way in which models with high roughness are rendered, to be better aligned with raytraced ground truths.

Model in 7.44.1: [Babylon.js Sandbox - View glTF, glb, obj and babylon files](https://sandbox.babylonjs.com/?version=7.44.1&environment=https://ptb-assets-public.s3.eu-west-1.amazonaws.com/tk3d-ptb-dev/models/_shared/_envs/env04_studioWithGradients.env&asset=https://ptb-assets-public.s3.eu-west-1.amazonaws.com/tk3d-ptb-dev/models/suzanne_hipoly/model.glb)

Model in 7.45.0: [Babylon.js Sandbox - View glTF, glb, obj and babylon files](https://sandbox.babylonjs.com/?version=7.45.0&environment=https://ptb-assets-public.s3.eu-west-1.amazonaws.com/tk3d-ptb-dev/models/_shared/_envs/env04_studioWithGradients.env&asset=https://ptb-assets-public.s3.eu-west-1.amazonaws.com/tk3d-ptb-dev/models/suzanne_hipoly/model.glb)

---

<div class="post-metadata">

**Author:** ![sebavan](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/sebavan/32/57_2.png) [@sebavan](https://forum.babylonjs.com/u/sebavan)\
**Post date:** [February 18, 2025, 12:55am UTC](https://forum.babylonjs.com/t/differences-in-pbr-material-behavior-between-babylon-5-and-7/56585/6 "2025-02-18T00:55:40Z")

</div>

To go back to the previous version (less physically correct) in case you can not adapt your model, feel free to set DEFAULT\_MIX\_IBL\_RADIANCE\_WITH\_IRRADIANCE to false in BABYLON.PBRBRDFConfiguration

Here is how it improved for reference:  
[![](https://us1.discourse-cdn.com/flex024/uploads/babylonjs/original/3X/d/f/dfa187ae796323d76962b105979a85fdc3b52f1d.jpeg) ](https://us1.discourse-cdn.com/flex024/uploads/babylonjs/original/3X/d/f/dfa187ae796323d76962b105979a85fdc3b52f1d.jpeg)

---

<div class="post-metadata">

**Author:** ![kzhsw](https://avatars.discourse-cdn.com/v4/letter/k/848f3c/32.png) [@kzhsw](https://forum.babylonjs.com/u/kzhsw)\
**Post date:** [February 18, 2025, 6:40am UTC](https://forum.babylonjs.com/t/differences-in-pbr-material-behavior-between-babylon-5-and-7/56585/7 "2025-02-18T06:40:00Z")

</div>

Should this be part of the [breaking changes](https://doc.babylonjs.com/breaking-changes/) docs?

---

<div class="post-metadata">

**Author:** ![sebavan](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/sebavan/32/57_2.png) [@sebavan](https://forum.babylonjs.com/u/sebavan)\
**Post date:** [February 18, 2025, 10:23am UTC](https://forum.babylonjs.com/t/differences-in-pbr-material-behavior-between-babylon-5-and-7/56585/8 "2025-02-18T10:23:09Z")

</div>

I did not put it there cause it is more a bug fix but I can understand the concerns. @RaananW any easy way to add back a breaking change in the list ?

---

<div class="post-metadata">

**Author:** ![RaananW](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/raananw/32/28955_2.png) [@RaananW](https://forum.babylonjs.com/u/RaananW)\
**Post date:** [February 18, 2025, 3:33pm UTC](https://forum.babylonjs.com/t/differences-in-pbr-material-behavior-between-babylon-5-and-7/56585/9 "2025-02-18T15:33:24Z")

</div>

Of course, just edit this file - [Documentation/content/breaking-changes.md at master · BabylonJS/Documentation · GitHub](https://github.com/BabylonJS/Documentation/blob/master/content/breaking-changes.md)
