Skip to content

Commit 6ff6a11

Browse files
[Rendering] Add hints to some uniform PropertyInfos
* Enforce range on `int/uint` * Use flags for `bvec2/3/4` arrays
1 parent 34b5e8f commit 6ff6a11

File tree

1 file changed

+17
-1
lines changed

1 file changed

+17
-1
lines changed

servers/rendering/shader_language.cpp

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4076,13 +4076,17 @@ PropertyInfo ShaderLanguage::uniform_to_property_info(const ShaderNode::Uniform
40764076
case ShaderLanguage::TYPE_BOOL:
40774077
if (p_uniform.array_size > 0) {
40784078
pi.type = Variant::PACKED_INT32_ARRAY;
4079+
pi.hint = PROPERTY_HINT_TYPE_STRING;
4080+
pi.hint_string = itos(Variant::INT) + "/" + itos(PROPERTY_HINT_FLAGS) + ":" + RTR("On");
40794081
} else {
40804082
pi.type = Variant::BOOL;
40814083
}
40824084
break;
40834085
case ShaderLanguage::TYPE_BVEC2:
40844086
if (p_uniform.array_size > 0) {
40854087
pi.type = Variant::PACKED_INT32_ARRAY;
4088+
pi.hint = PROPERTY_HINT_TYPE_STRING;
4089+
pi.hint_string = itos(Variant::INT) + "/" + itos(PROPERTY_HINT_FLAGS) + ":x,y";
40864090
} else {
40874091
pi.type = Variant::INT;
40884092
pi.hint = PROPERTY_HINT_FLAGS;
@@ -4092,6 +4096,8 @@ PropertyInfo ShaderLanguage::uniform_to_property_info(const ShaderNode::Uniform
40924096
case ShaderLanguage::TYPE_BVEC3:
40934097
if (p_uniform.array_size > 0) {
40944098
pi.type = Variant::PACKED_INT32_ARRAY;
4099+
pi.hint = PROPERTY_HINT_TYPE_STRING;
4100+
pi.hint_string = itos(Variant::INT) + "/" + itos(PROPERTY_HINT_FLAGS) + ":x,y,z";
40954101
} else {
40964102
pi.type = Variant::INT;
40974103
pi.hint = PROPERTY_HINT_FLAGS;
@@ -4101,6 +4107,8 @@ PropertyInfo ShaderLanguage::uniform_to_property_info(const ShaderNode::Uniform
41014107
case ShaderLanguage::TYPE_BVEC4:
41024108
if (p_uniform.array_size > 0) {
41034109
pi.type = Variant::PACKED_INT32_ARRAY;
4110+
pi.hint = PROPERTY_HINT_TYPE_STRING;
4111+
pi.hint_string = itos(Variant::INT) + "/" + itos(PROPERTY_HINT_FLAGS) + ":x,y,z,w";
41044112
} else {
41054113
pi.type = Variant::INT;
41064114
pi.hint = PROPERTY_HINT_FLAGS;
@@ -4111,18 +4119,24 @@ PropertyInfo ShaderLanguage::uniform_to_property_info(const ShaderNode::Uniform
41114119
case ShaderLanguage::TYPE_INT: {
41124120
if (p_uniform.array_size > 0) {
41134121
pi.type = Variant::PACKED_INT32_ARRAY;
4122+
// TODO: Handle range and encoding for for unsigned values.
41144123
} else {
41154124
pi.type = Variant::INT;
4125+
pi.hint = PROPERTY_HINT_RANGE;
41164126
if (p_uniform.hint == ShaderLanguage::ShaderNode::Uniform::HINT_RANGE) {
4117-
pi.hint = PROPERTY_HINT_RANGE;
41184127
pi.hint_string = rtos(p_uniform.hint_range[0]) + "," + rtos(p_uniform.hint_range[1]) + "," + rtos(p_uniform.hint_range[2]);
4128+
} else if (p_uniform.type == ShaderLanguage::TYPE_UINT) {
4129+
pi.hint_string = "0," + itos(UINT32_MAX);
4130+
} else {
4131+
pi.hint_string = itos(INT32_MIN) + "," + itos(INT32_MAX);
41194132
}
41204133
}
41214134
} break;
41224135
case ShaderLanguage::TYPE_UVEC2:
41234136
case ShaderLanguage::TYPE_IVEC2: {
41244137
if (p_uniform.array_size > 0) {
41254138
pi.type = Variant::PACKED_INT32_ARRAY;
4139+
// TODO: Handle vector pairs?
41264140
} else {
41274141
pi.type = Variant::VECTOR2I;
41284142
}
@@ -4131,6 +4145,7 @@ PropertyInfo ShaderLanguage::uniform_to_property_info(const ShaderNode::Uniform
41314145
case ShaderLanguage::TYPE_IVEC3: {
41324146
if (p_uniform.array_size > 0) {
41334147
pi.type = Variant::PACKED_INT32_ARRAY;
4148+
// TODO: Handle vector pairs?
41344149
} else {
41354150
pi.type = Variant::VECTOR3I;
41364151
}
@@ -4139,6 +4154,7 @@ PropertyInfo ShaderLanguage::uniform_to_property_info(const ShaderNode::Uniform
41394154
case ShaderLanguage::TYPE_IVEC4: {
41404155
if (p_uniform.array_size > 0) {
41414156
pi.type = Variant::PACKED_INT32_ARRAY;
4157+
// TODO: Handle vector pairs?
41424158
} else {
41434159
pi.type = Variant::VECTOR4I;
41444160
}

0 commit comments

Comments
 (0)