Repository: godotengine/godot (language: cpp)

Issue:
`bvec` uniform default values aren't propagated to the inspector
### Tested versions

- Reproducible in: 4.3.stable, 4.4.1.stable, 4.5.dev [97241ffea]

### System information

Ubuntu 22.04

### Issue description

in a `.gdshader`:

```
uniform bvec4 b4 = bvec4(true, true, true, true);
```

In the inspector, only x is checked, and the underlying value is just a `bool` that's `true`.

![Image](https://github.com/user-attachments/assets/b5424731-1ec6-4af8-9002-fb0a0341334f)

Editing the value from the inspector here seems to work fine, but changing it back manually to `bvec4(true, false, false, false)` still shows the arrow to revert back to the default value. In this state, the underlying value is properly an `int`.

![Image](https://github.com/user-attachments/assets/534ca3f7-5b75-4c92-8af0-ddefe54f767d)

The same applies to `bvec2` and `bvec3`.

### Steps to reproduce

Create a `uniform bvec` in a .gdshader file:

```
uniform bvec4 b4 = bvec4(true, true, true, true);
```

Attach it to a shader material, and check its value in the inspector.

### Minimal reproduction project (MRP)

[bvec.zip](https://github.com/user-attachments/files/19543767/bvec.zip)


Discussion / hints:

Fix patch:
diff --git a/servers/rendering/shader_language.cpp b/servers/rendering/shader_language.cpp
index 6748689b2e8e..fa8d5a946848 100644
--- a/servers/rendering/shader_language.cpp
+++ b/servers/rendering/shader_language.cpp
@@ -4222,7 +4222,7 @@ Variant ShaderLanguage::constant_value_to_variant(const Vector<Scalar> &p_value,
 					}
 					value = Variant(array);
 				} else {
-					value = Variant(p_value[0].boolean);
+					value = Variant(p_value[0].sint | (p_value[1].sint << 1));
 				}
 				break;
 			case ShaderLanguage::TYPE_BVEC3:
@@ -4235,7 +4235,7 @@ Variant ShaderLanguage::constant_value_to_variant(const Vector<Scalar> &p_value,
 					}
 					value = Variant(array);
 				} else {
-					value = Variant(p_value[0].boolean);
+					value = Variant(p_value[0].sint | (p_value[1].sint << 1) | (p_value[2].sint << 2));
 				}
 				break;
 			case ShaderLanguage::TYPE_BVEC4:
@@ -4248,7 +4248,7 @@ Variant ShaderLanguage::constant_value_to_variant(const Vector<Scalar> &p_value,
 					}
 					value = Variant(array);
 				} else {
-					value = Variant(p_value[0].boolean);
+					value = Variant(p_value[0].sint | (p_value[1].sint << 1) | (p_value[2].sint << 2) | (p_value[3].sint << 3));
 				}
 				break;
 			case ShaderLanguage::TYPE_INT:


Test patch: