mirror of
https://github.com/godotengine/godot.git
synced 2025-04-13 01:00:35 +08:00
Merge pull request #101642 from huwpascoe/fix_source_color
Shaders: Fix `source_color` default value
This commit is contained in:
commit
a9fa4fd7b9
@ -344,7 +344,7 @@ static void _fill_std140_variant_ubo_value(ShaderLanguage::DataType type, int p_
|
||||
}
|
||||
}
|
||||
|
||||
_FORCE_INLINE_ static void _fill_std140_ubo_value(ShaderLanguage::DataType type, const Vector<ShaderLanguage::Scalar> &value, uint8_t *data) {
|
||||
_FORCE_INLINE_ static void _fill_std140_ubo_value(ShaderLanguage::DataType type, const Vector<ShaderLanguage::Scalar> &value, uint8_t *data, bool p_use_linear_color) {
|
||||
switch (type) {
|
||||
case ShaderLanguage::TYPE_BOOL: {
|
||||
uint32_t *gui = (uint32_t *)data;
|
||||
@ -441,18 +441,28 @@ _FORCE_INLINE_ static void _fill_std140_ubo_value(ShaderLanguage::DataType type,
|
||||
|
||||
} break;
|
||||
case ShaderLanguage::TYPE_VEC3: {
|
||||
Color c = Color(value[0].real, value[1].real, value[2].real);
|
||||
if (p_use_linear_color) {
|
||||
c = c.srgb_to_linear();
|
||||
}
|
||||
|
||||
float *gui = reinterpret_cast<float *>(data);
|
||||
|
||||
for (int i = 0; i < 3; i++) {
|
||||
gui[i] = value[i].real;
|
||||
gui[i] = c.components[i];
|
||||
}
|
||||
|
||||
} break;
|
||||
case ShaderLanguage::TYPE_VEC4: {
|
||||
Color c = Color(value[0].real, value[1].real, value[2].real, value[3].real);
|
||||
if (p_use_linear_color) {
|
||||
c = c.srgb_to_linear();
|
||||
}
|
||||
|
||||
float *gui = reinterpret_cast<float *>(data);
|
||||
|
||||
for (int i = 0; i < 4; i++) {
|
||||
gui[i] = value[i].real;
|
||||
gui[i] = c.components[i];
|
||||
}
|
||||
} break;
|
||||
case ShaderLanguage::TYPE_MAT2: {
|
||||
@ -789,7 +799,7 @@ void MaterialStorage::MaterialData::update_uniform_buffer(const HashMap<StringNa
|
||||
|
||||
} else if (E.value.default_value.size()) {
|
||||
//default value
|
||||
_fill_std140_ubo_value(E.value.type, E.value.default_value, data);
|
||||
_fill_std140_ubo_value(E.value.type, E.value.default_value, data, p_use_linear_color);
|
||||
//value=E.value.default_value;
|
||||
} else {
|
||||
//zero because it was not provided
|
||||
|
Loading…
x
Reference in New Issue
Block a user