# No setBoolean for ShaderMaterial

**URL:** <https://forum.babylonjs.com/t/no-setboolean-for-shadermaterial/13240>\
**Category:** Questions\
**Tags:** material\
**Created:** [August 9, 2020, 9:47pm UTC](https://forum.babylonjs.com/t/no-setboolean-for-shadermaterial/13240 "2020-08-09T21:47:19Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![TheNosiriN](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/thenosirin/32/11803_2.png) [@TheNosiriN](https://forum.babylonjs.com/u/TheNosiriN)\
**Post date:** [August 9, 2020, 9:47pm UTC](https://forum.babylonjs.com/t/no-setboolean-for-shadermaterial/13240/1 "2020-08-09T21:47:19Z")

</div>

Just as the title says, there’s no setBool, is there another way around this.

 ![image](https://us1.discourse-cdn.com/flex024/uploads/babylonjs/original/2X/d/dee1f35fa423f7320bab352af494e0238bd711a7.png)

---

<div class="post-metadata">

**Author:** ![Pryme8](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/pryme8/32/7212_2.png) [@Pryme8](https://forum.babylonjs.com/u/Pryme8)\
**Post date:** [August 9, 2020, 9:49pm UTC](https://forum.babylonjs.com/t/no-setboolean-for-shadermaterial/13240/2 "2020-08-09T21:49:15Z")

</div>

Can you do it as a setInt and then in the shader cast it to a bool `bool(myIntUniform)`?

I know float(bool) works not sure if the other way around works though.

do you particularly need a boolean? or could you get away with an int, or even some #if defines?

---

<div class="post-metadata">

**Author:** ![TheNosiriN](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/thenosirin/32/11803_2.png) [@TheNosiriN](https://forum.babylonjs.com/u/TheNosiriN)\
**Post date:** [August 9, 2020, 9:51pm UTC](https://forum.babylonjs.com/t/no-setboolean-for-shadermaterial/13240/3 "2020-08-09T21:51:37Z")

</div>

I’ll try that.

---

<div class="post-metadata">

**Author:** ![TheNosiriN](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/thenosirin/32/11803_2.png) [@TheNosiriN](https://forum.babylonjs.com/u/TheNosiriN)\
**Post date:** [August 9, 2020, 9:53pm UTC](https://forum.babylonjs.com/t/no-setboolean-for-shadermaterial/13240/4 "2020-08-09T21:53:12Z")

</div>

It might not be hard to change but having it has boolean is easier to code.

---

<div class="post-metadata">

**Author:** ![Pryme8](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/pryme8/32/7212_2.png) [@Pryme8](https://forum.babylonjs.com/u/Pryme8)\
**Post date:** [August 9, 2020, 9:53pm UTC](https://forum.babylonjs.com/t/no-setboolean-for-shadermaterial/13240/5 "2020-08-09T21:53:37Z")

</div>

what about #define myBool bool(myUniformInt)

---

<div class="post-metadata">

**Author:** ![TheNosiriN](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/thenosirin/32/11803_2.png) [@TheNosiriN](https://forum.babylonjs.com/u/TheNosiriN)\
**Post date:** [August 9, 2020, 9:57pm UTC](https://forum.babylonjs.com/t/no-setboolean-for-shadermaterial/13240/6 "2020-08-09T21:57:49Z")

</div>

they are in structs like:

```
struct PointLight {
            bool enabled;
            vec3 position;
            vec3 irradiance;
            float const_atten;
            float linear_atten;
            float quad_atten;
    };

```

and I read in an earlier topic that to use structs I use it like `shdr.setVector3("pointLight.position", pos);`

---

<div class="post-metadata">

**Author:** ![TheNosiriN](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/thenosirin/32/11803_2.png) [@TheNosiriN](https://forum.babylonjs.com/u/TheNosiriN)\
**Post date:** [August 9, 2020, 10:23pm UTC](https://forum.babylonjs.com/t/no-setboolean-for-shadermaterial/13240/7 "2020-08-09T22:23:26Z")

</div>

Apparently this works: `shdr.setInt("pointLight.enabled", 1);`
