# Force No Reflections On PBRMaterial

**URL:** <https://forum.babylonjs.com/t/force-no-reflections-on-pbrmaterial/61866>\
**Category:** Questions\
**Created:** [December 20, 2025, 2:23pm UTC](https://forum.babylonjs.com/t/force-no-reflections-on-pbrmaterial/61866 "2025-12-20T14:23:41Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![MackeyK24](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/mackeyk24/32/3741_2.png) [@MackeyK24](https://forum.babylonjs.com/u/MackeyK24)\
**Post date:** [December 20, 2025, 2:23pm UTC](https://forum.babylonjs.com/t/force-no-reflections-on-pbrmaterial/61866/1 "2025-12-20T14:23:41Z")

</div>

Yo @sebavan or @Deltakosh

How can force no specular reflections on a material in a scene that has scene.environmentTexture.  
I was under the impression if you set the material.reflectionTexture = null it would fallback and use the scene.environmentTexture instead.

I need it to not use ANY reflectionTexture and I cannot just set material.environmentIntensity = 0.

I need the diffuse ibl, but I need to disable the specular reflections ?

---

<div class="post-metadata">

**Author:** ![simon](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/simon/32/45590_2.png) [@simon](https://forum.babylonjs.com/u/simon)\
**Post date:** [December 20, 2025, 2:57pm UTC](https://forum.babylonjs.com/t/force-no-reflections-on-pbrmaterial/61866/2 "2025-12-20T14:57:42Z")

</div>

Maybe something like that will work for you? Just use NodeMaterial and combine PBR outputs to fragment in a way you want to. Upload some IBL to see results

[https://playground.babylonjs.com/#50477C](https://playground.babylonjs.com/#50477C)

---

<div class="post-metadata">

**Author:** ![MackeyK24](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/mackeyk24/32/3741_2.png) [@MackeyK24](https://forum.babylonjs.com/u/MackeyK24)\
**Post date:** [December 20, 2025, 8:05pm UTC](https://forum.babylonjs.com/t/force-no-reflections-on-pbrmaterial/61866/3 "2025-12-20T20:05:25Z")

</div>

Not quite what i was looking for… I way so that NEITHER material.reflectionTexture or scene.environmentTexture contribute specular reflections.. for a **BABYLON.PBRMaterial**

---

<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:** [December 22, 2025, 9:33am UTC](https://forum.babylonjs.com/t/force-no-reflections-on-pbrmaterial/61866/4 "2025-12-22T09:33:36Z")

</div>

There’s no switch to disable the reflection texture in PBR materials.

What you can do:

- override `_getReflectionTexture()`:

```typescript
pbrMaterial._getReflectionTexture = () => null;

```

- set `MaterialFlags.ReflectionTextureEnabled = false`. This one will also disable the reflection texture for standard materials, though.

---

<div class="post-metadata">

**Author:** ![MackeyK24](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/mackeyk24/32/3741_2.png) [@MackeyK24](https://forum.babylonjs.com/u/MackeyK24)\
**Post date:** [December 23, 2025, 9:23pm UTC](https://forum.babylonjs.com/t/force-no-reflections-on-pbrmaterial/61866/5 "2025-12-23T21:23:48Z")

</div>

I am actually trying to do the SPLIT IBL trick @sebavan talks about… except i am doing in in a shader plugin:

```auto
    public getCustomCode(shaderType: string, shaderLanguage: BABYLON.ShaderLanguage): any {
      if (!this.isEnabled) return null;
      const wgsl = shaderLanguage === BABYLON.ShaderLanguage.WGSL;
      if (shaderType === "fragment") {
        const iblScalingCode = wgsl
          ? `
            // Unity-Style IBL split scaling (WGSL)
            reflectionOut.environmentIrradiance *= uniforms.tkIblDiffuseScale;
            reflectionOut.environmentRadiance *= uniforms.tkIblSpecularScale; // adjust .rgb if it's a vec4
            `
          : `
            // Unity-Style IBL split scaling (GLSL)
            reflectionOut.environmentIrradiance *= tkIblDiffuseScale;
            reflectionOut.environmentRadiance.rgb *= tkIblSpecularScale;
            `;
        return {
          "CUSTOM_FRAGMENT_DEFINITIONS": this.fragmentDefinitions,
          "CUSTOM_FRAGMENT_BEFORE_LIGHTS": iblScalingCode
        };
      }

      return null;
    }

```

I dont want to have HACK the shader with regex for `finalIrradiance` and `finalRadiance` but i dont know how to get to FINALIRRADIANCE and FINALRADIANCE.

The shader code snippet above is where i left off and cant get to work…

So setting Specular IBL Slipt to ZERO should KILL the specular reflections with out HACKING the pbr.\_getReflectionTexture

Any ideal how to do that ? @Evgeni_Popov

---

<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:** [December 24, 2025, 10:59am UTC](https://forum.babylonjs.com/t/force-no-reflections-on-pbrmaterial/61866/6 "2025-12-24T10:59:25Z")

</div>

I think your code above should work? If you can setup a simple repro, we should be able to find why it doesn’t.

Also, you can access `finalRadianceScaled` (which is the very final radiance value that will be added to the pixel color) in the **CUSTOM\_FRAGMENT\_BEFORE\_FINALCOLORCOMPOSITION** point, if that can help.

---

<div class="post-metadata">

**Author:** ![MackeyK24](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/mackeyk24/32/3741_2.png) [@MackeyK24](https://forum.babylonjs.com/u/MackeyK24)\
**Post date:** [December 24, 2025, 12:45pm UTC](https://forum.babylonjs.com/t/force-no-reflections-on-pbrmaterial/61866/7 "2025-12-24T12:45:32Z")

</div>

Yeah, i figured that one out as well. My UnityStyleLightingPlugin does the IBL split for me. Now diffuseIBL wont contribute to my lightmapped textures, but Specular Reflections can contribute full (or even scaled up or down reflections… including passing 0 to the Specular IBL split to turn off reflections no matter if it has a reflectionTexture or getting reflections from the environment)

Works Beautiful:

```auto
    public getCustomCode(shaderType: string, shaderLanguage: BABYLON.ShaderLanguage): any {
      const wgsl = shaderLanguage === BABYLON.ShaderLanguage.WGSL;
      if (shaderType === "fragment") {
        const iblScalingCode = wgsl
          ? `
            // Unity-Style IBL split scaling (WGSL)
            #if defined(REFLECTION) && defined(UNITYSTYLELIGHTINGPLUGIN)
                finalIrradiance = finalIrradiance * uniforms.tkIblDiffuseScale;
                finalRadiance = finalRadiance * uniforms.tkIblSpecularScale;
                finalRadianceScaled = finalRadianceScaled * uniforms.tkIblSpecularScale;
            #endif
            `
          : `
            // Unity-Style IBL split scaling (GLSL)
            #if defined(REFLECTION) && defined(UNITYSTYLELIGHTINGPLUGIN)
                finalIrradiance = finalIrradiance * tkIblDiffuseScale;
                finalRadiance = finalRadiance * tkIblSpecularScale;
                finalRadianceScaled = finalRadianceScaled * tkIblSpecularScale;
            #endif
            `;
        return {
          CUSTOM_FRAGMENT_DEFINITIONS: this.fragmentDefinitions,
          CUSTOM_FRAGMENT_BEFORE_FINALCOLORCOMPOSITION: iblScalingCode
        };
      }
      return null;
    }

```
