# Environment has too strong reflection on objects

**URL:** <https://forum.babylonjs.com/t/environment-has-too-strong-reflection-on-objects/51939>\
**Category:** Questions\
**Tags:** environment\
**Created:** [July 9, 2024, 6:50am UTC](https://forum.babylonjs.com/t/environment-has-too-strong-reflection-on-objects/51939 "2024-07-09T06:50:41Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![brightMoon](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/brightmoon/32/9959_2.png) [@brightMoon](https://forum.babylonjs.com/u/brightMoon)\
**Post date:** [July 9, 2024, 6:50am UTC](https://forum.babylonjs.com/t/environment-has-too-strong-reflection-on-objects/51939/1 "2024-07-09T06:50:41Z")

</div>

Strong reflection, for glass mirrors, direct reflection,  
The effect is not very good.

This is the effect in Sandbox.PG example:  
[sandboxExample](https://sandbox.babylonjs.com/?assetUrl=https://raw.githubusercontent.com/Jeggery/storageResources/master/models/glb/car/car1.glb&environment=https://raw.githubusercontent.com/google/model-viewer/master/packages/shared-assets/environments/neutral.hdr&skybox=false)

 ![image](https://us1.discourse-cdn.com/flex024/uploads/babylonjs/original/3X/2/0/203fc281c43480ad9395a79fc2b7a3e05f34fab9.jpeg)

![image](https://us1.discourse-cdn.com/flex024/uploads/babylonjs/original/3X/7/c/7c4b7f81ed017e63eab373209ed4dab26a0eff05.jpeg)

--------------------------------------------------Divider-------------------------------------------------------------

I placed it in the modelviewer, and the reflection of light is very soft.

> **[﹤model-viewer﹥ Editor - Edit your asset files for 3D & AR](https://modelviewer.dev/editor/)**
>
> A tool to edit glTF and glb files ✏️, and configure them to use the ﹤model-viewer﹥ 3D & AR web component 🌐

![image](https://us1.discourse-cdn.com/flex024/uploads/babylonjs/original/3X/0/2/02bbac0a761c4f01730ad494775d5a2754d028c7.jpeg)

 ![image](https://us1.discourse-cdn.com/flex024/uploads/babylonjs/original/3X/4/e/4e8ff9e51432eefb27cd149a87809dca063b1192.jpeg)

I want to know how to adjust the bbl to make the reflection softer.

Note: I am using the same environment ball for both of them. The name is neutral. hdr

---

<div class="post-metadata">

**Author:** ![Tricotou](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/tricotou/32/5844_2.png) [@Tricotou](https://forum.babylonjs.com/u/Tricotou)\
**Post date:** [July 9, 2024, 9:05am UTC](https://forum.babylonjs.com/t/environment-has-too-strong-reflection-on-objects/51939/2 "2024-07-09T09:05:17Z")

</div>

Hello 🙂

Your sandbox link won’t load on my side.  
Did you try to tweek `mesh.material.environmentIntensity` ?

---

<div class="post-metadata">

**Author:** ![brightMoon](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/brightmoon/32/9959_2.png) [@brightMoon](https://forum.babylonjs.com/u/brightMoon)\
**Post date:** [July 9, 2024, 9:20am UTC](https://forum.babylonjs.com/t/environment-has-too-strong-reflection-on-objects/51939/3 "2024-07-09T09:20:05Z")

</div>

hi， Sorry, it’s possible that the rich text escaped the link. I adjusted it again and the link address can be previewed now.

---

<div class="post-metadata">

**Author:** ![Tricotou](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/tricotou/32/5844_2.png) [@Tricotou](https://forum.babylonjs.com/u/Tricotou)\
**Post date:** [July 9, 2024, 9:30am UTC](https://forum.babylonjs.com/t/environment-has-too-strong-reflection-on-objects/51939/4 "2024-07-09T09:30:13Z")

</div>

Ok, as I said I would advice to tweek `environmentIntensity` on the `glass`  
Material, (which is `LEVELS --> Environment` in the Inspector)  
 ![Screencast from 09-07-2024 11:28:54](https://us1.discourse-cdn.com/flex024/uploads/babylonjs/original/3X/9/f/9fb34de95e70f2c0a584b637b867f72bd7514389.gif)

---

<div class="post-metadata">

**Author:** ![brightMoon](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/brightmoon/32/9959_2.png) [@brightMoon](https://forum.babylonjs.com/u/brightMoon)\
**Post date:** [July 9, 2024, 9:40am UTC](https://forum.babylonjs.com/t/environment-has-too-strong-reflection-on-objects/51939/5 "2024-07-09T09:40:48Z")

</div>

Why do other engine not need to be adjusted? Is it because BJS’s rendering algorithm is different

---

<div class="post-metadata">

**Author:** ![Tricotou](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/tricotou/32/5844_2.png) [@Tricotou](https://forum.babylonjs.com/u/Tricotou)\
**Post date:** [July 9, 2024, 9:45am UTC](https://forum.babylonjs.com/t/environment-has-too-strong-reflection-on-objects/51939/6 "2024-07-09T09:45:56Z")

</div>

I would say it’s not exactly a matter of algorithm. Rendering is a thing, lighting is another.

Here in the Sandbox there is an Environment by default. Maybe when you do final usage of your mesh you will add another environment with another lighting intensity, maybe you will add some more lights or whatever. Here comparing the default scene (and its lights) of two viewers (BJS Sandbox, and ModelViewer) does not really make sense to me. At least I would say the difference comes from the lights, more than the rendering pipeline 🙂

---

<div class="post-metadata">

**Author:** ![brightMoon](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/brightmoon/32/9959_2.png) [@brightMoon](https://forum.babylonjs.com/u/brightMoon)\
**Post date:** [July 9, 2024, 9:59am UTC](https://forum.babylonjs.com/t/environment-has-too-strong-reflection-on-objects/51939/7 "2024-07-09T09:59:44Z")

</div>

In both of the above environments, I used the same HDR. I just want to see the difference in effect. That’s why there are doubts

---

<div class="post-metadata">

**Author:** ![Tricotou](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/tricotou/32/5844_2.png) [@Tricotou](https://forum.babylonjs.com/u/Tricotou)\
**Post date:** [July 9, 2024, 10:00am UTC](https://forum.babylonjs.com/t/environment-has-too-strong-reflection-on-objects/51939/8 "2024-07-09T10:00:57Z")

</div>

> [@brightMoon](#):
>
> In both of the above environments, I used the same HDR

Ah ok, missed that sorry. I thought you was just pushing the .glb file containing meshes alone

---

<div class="post-metadata">

**Author:** ![Deltakosh](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/deltakosh/32/26635_2.png) [@Deltakosh](https://forum.babylonjs.com/u/Deltakosh)\
**Post date:** [July 9, 2024, 5:10pm UTC](https://forum.babylonjs.com/t/environment-has-too-strong-reflection-on-objects/51939/10 "2024-07-09T17:10:25Z")

</div>

adding @bghgary to check if this is not a problem in our gltf loader not taking in account something

---

<div class="post-metadata">

**Author:** ![bghgary](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/bghgary/32/48532_2.png) [@bghgary](https://forum.babylonjs.com/u/bghgary)\
**Post date:** [July 9, 2024, 7:23pm UTC](https://forum.babylonjs.com/t/environment-has-too-strong-reflection-on-objects/51939/11 "2024-07-09T19:23:11Z")

</div>

There are multiple reasons why Babylon.js sandbox is different. The primary reason is because we don’t follow the glTF spec for alpha coverage because almost everyone is trying to use it for glass. If it’s glass, Babylon’s rendering is more accurate to what should happen. If you want it to behave completely to spec, then you can use [3dcommerce.babylonjs.com](https://3dcommerce.babylonjs.com/?assetUrl=https://raw.githubusercontent.com/Jeggery/storageResources/master/models/glb/car/car1.glb&environment=https://raw.githubusercontent.com/google/model-viewer/master/packages/shared-assets/environments/neutral.hdr&skybox=false). Newer models should use the [KHR\_materials\_transmission](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_materials_transmission/README.md) to handle glass which should render consistently across implementations.

It is also brighter in Babylon.js because no tone mapping is applied by default whereas ModelViewer has a tone mapper on by default. You can enable it by clicking on Scene in the inspector and enabling the Khronos PBR Neutral tone mapper which is the same as ModelViewer’s default. We are probably going to enable this tone mapper by default in the 3dcommerce mode.

![image](https://us1.discourse-cdn.com/flex024/uploads/babylonjs/original/3X/1/c/1c39bdc23ff3d8a91dc2079f2680a232a15d2371.png)

In the screenshot below, I also changed the background to white. This should look much closer to ModelViewer’s settings.

 ![image](https://us1.discourse-cdn.com/flex024/uploads/babylonjs/original/3X/7/6/76c5665199ed797892b00bc4ffc5d2cfa691e184.jpeg)

---

<div class="post-metadata">

**Author:** ![brightMoon](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/brightmoon/32/9959_2.png) [@brightMoon](https://forum.babylonjs.com/u/brightMoon)\
**Post date:** [July 10, 2024, 8:37am UTC](https://forum.babylonjs.com/t/environment-has-too-strong-reflection-on-objects/51939/12 "2024-07-10T08:37:07Z")

</div>

Thank you, buddy. Your answer was fantastic.

---

<div class="post-metadata">

**Author:** ![brightMoon](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/brightmoon/32/9959_2.png) [@brightMoon](https://forum.babylonjs.com/u/brightMoon)\
**Post date:** [July 10, 2024, 8:37am UTC](https://forum.babylonjs.com/t/environment-has-too-strong-reflection-on-objects/51939/13 "2024-07-10T08:37:19Z")

</div>

Should we need to enable PBR Neutral for PBR realistic rendering?

---

<div class="post-metadata">

**Author:** ![bghgary](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/bghgary/32/48532_2.png) [@bghgary](https://forum.babylonjs.com/u/bghgary)\
**Post date:** [July 10, 2024, 3:36pm UTC](https://forum.babylonjs.com/t/environment-has-too-strong-reflection-on-objects/51939/14 "2024-07-10T15:36:20Z")

</div>

It depends. Emmett, the driver of the PBR Neutral tone mapper, has [an article](https://modelviewer.dev/examples/tone-mapping.html) describing the use cases. This is a complex subject and depends on what you are trying to do.

---

<div class="post-metadata">

**Author:** ![brightMoon](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/brightmoon/32/9959_2.png) [@brightMoon](https://forum.babylonjs.com/u/brightMoon)\
**Post date:** [July 11, 2024, 2:28am UTC](https://forum.babylonjs.com/t/environment-has-too-strong-reflection-on-objects/51939/15 "2024-07-11T02:28:20Z")

</div>

Thanks, I’ll go read and learn

---

<div class="post-metadata">

**Author:** ![brightMoon](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/brightmoon/32/9959_2.png) [@brightMoon](https://forum.babylonjs.com/u/brightMoon)\
**Post date:** [October 29, 2024, 2:42am UTC](https://forum.babylonjs.com/t/environment-has-too-strong-reflection-on-objects/51939/16 "2024-10-29T02:42:48Z")

</div>

After several months, I discovered the reason for the strong reflection of glass: the useRadianceOverAlpha attribute.  
For the glass of my car, setting useRadianceOverAlpha to false would appear more normal Of course, other engines such as Threejs and PlanCanvas will not display such strong glass reflections BJS provides more options for adaptation, but familiarity with BJS’s PBRMaterial documentation is necessary to solve the problem.

> [@Visible reflections despite opacity information in base texture in PBR material](https://forum.babylonjs.com/t/visible-reflections-despite-opacity-information-in-base-texture-in-pbr-material/37832/2):
>
> It depends slight_smile most surfaces you can see through will retain reflection which is why it is our default mode. You can prevent them by setting useRadianceOverAlpha and useSpecularOverAlpha to false

Another question is why BJS defaults the useRadianceOverAlpha of PBRMaterial to true?

---

<div class="post-metadata">

**Author:** ![mawa](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/mawa/32/12384_2.png) [@mawa](https://forum.babylonjs.com/u/mawa)\
**Post date:** [October 29, 2024, 10:30am UTC](https://forum.babylonjs.com/t/environment-has-too-strong-reflection-on-objects/51939/17 "2024-10-29T10:30:43Z")

</div>

> [@brightMoon](#):
>
> BJS provides more options for adaptation, but familiarity with BJS’s PBRMaterial documentation is necessary to solve the problem.

Indeed. But I’m not sure having everything in the doc would really help. In the end, nobody would read it (I wouldn’t). The versatility of the engine is an asset but does add complexity towards all what you can do and combine. Typically, in this case, I believe you could have ‘solved’ this high reflection using a number of other approaches and twists. Clone the reflection texture (or env) and change its levels. Part of it might also come from the light. Change directLight intensity. Add an emissiveTexture and change its color and levels… and likely many others. 😵  
Though, I would agree with you that (if by any means possible without removing the specificities, versatility and capacity of the engine) we would have a more ‘normalized’ default for I.E. PBR materials, would likely be a good thing (in my opinion). But that’s likely quite a bit of work and a fair chance to face issues that will (again) require some sort of ‘compromise’. 🤔

---

<div class="post-metadata">

**Author:** ![Deltakosh](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/deltakosh/32/26635_2.png) [@Deltakosh](https://forum.babylonjs.com/u/Deltakosh)\
**Post date:** [October 29, 2024, 3:21pm UTC](https://forum.babylonjs.com/t/environment-has-too-strong-reflection-on-objects/51939/18 "2024-10-29T15:21:26Z")

</div>

cc @sebavan

---

<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:** [October 29, 2024, 3:58pm UTC](https://forum.babylonjs.com/t/environment-has-too-strong-reflection-on-objects/51939/19 "2024-10-29T15:58:15Z")

</div>

How often a material is used with transparency in PBR to not represent plastic/glass or a highly reflective surface which normally should use some kind of transmission ? I would think a lot of time but impossible to quantify.

In those case think about any bright reflection on a glass (help signal, tv on window…), you would not be able to see what is behind but only the reflection. This is why the mode is added by default as it is the most common one but I agree it might be hard to discover and I am game for anybody willing to improve the doc and make it more visible.

---

<div class="post-metadata">

**Author:** ![bghgary](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/bghgary/32/48532_2.png) [@bghgary](https://forum.babylonjs.com/u/bghgary)\
**Post date:** [October 29, 2024, 7:42pm UTC](https://forum.babylonjs.com/t/environment-has-too-strong-reflection-on-objects/51939/20 "2024-10-29T19:42:01Z")

</div>

> [@brightMoon](#):
>
> I discovered the reason for the strong reflection of glass: the useRadianceOverAlpha attribute

Using the 3dcommerce site will disable `useRadianceOverAlpha` so that it conforms to glTF spec. If you want to do this in your own code, you can set [`transparencyAsCoverage`](https://doc.babylonjs.com/typedoc/classes/BABYLON.GLTFFileLoader#transparencyAsCoverage) to `true` in the glTF loader.

---

<div class="post-metadata">

**Author:** ![brightMoon](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/brightmoon/32/9959_2.png) [@brightMoon](https://forum.babylonjs.com/u/brightMoon)\
**Post date:** [October 30, 2024, 1:55am UTC](https://forum.babylonjs.com/t/environment-has-too-strong-reflection-on-objects/51939/21 "2024-10-30T01:55:47Z")

</div>

> [@bghgary](#):
>
> `useRadianceOverAlpha` so that it conforms to glTF spec

Can you send me a reference for this transparent GLTF specification to read

[Next page](https://forum.babylonjs.com/t/environment-has-too-strong-reflection-on-objects/51939.md?page=2)
