mirror of
https://github.com/godotengine/godot.git
synced 2025-11-01 14:11:15 +00:00
[Rendering] Add hints to some uniform PropertyInfos
* Enforce range on `int/uint` * Use flags for `bvec2/3/4` arrays
This commit is contained in:
parent
34b5e8f55c
commit
6ff6a11424
1 changed files with 17 additions and 1 deletions
|
|
@ -4076,6 +4076,8 @@ PropertyInfo ShaderLanguage::uniform_to_property_info(const ShaderNode::Uniform
|
||||||
case ShaderLanguage::TYPE_BOOL:
|
case ShaderLanguage::TYPE_BOOL:
|
||||||
if (p_uniform.array_size > 0) {
|
if (p_uniform.array_size > 0) {
|
||||||
pi.type = Variant::PACKED_INT32_ARRAY;
|
pi.type = Variant::PACKED_INT32_ARRAY;
|
||||||
|
pi.hint = PROPERTY_HINT_TYPE_STRING;
|
||||||
|
pi.hint_string = itos(Variant::INT) + "/" + itos(PROPERTY_HINT_FLAGS) + ":" + RTR("On");
|
||||||
} else {
|
} else {
|
||||||
pi.type = Variant::BOOL;
|
pi.type = Variant::BOOL;
|
||||||
}
|
}
|
||||||
|
|
@ -4083,6 +4085,8 @@ PropertyInfo ShaderLanguage::uniform_to_property_info(const ShaderNode::Uniform
|
||||||
case ShaderLanguage::TYPE_BVEC2:
|
case ShaderLanguage::TYPE_BVEC2:
|
||||||
if (p_uniform.array_size > 0) {
|
if (p_uniform.array_size > 0) {
|
||||||
pi.type = Variant::PACKED_INT32_ARRAY;
|
pi.type = Variant::PACKED_INT32_ARRAY;
|
||||||
|
pi.hint = PROPERTY_HINT_TYPE_STRING;
|
||||||
|
pi.hint_string = itos(Variant::INT) + "/" + itos(PROPERTY_HINT_FLAGS) + ":x,y";
|
||||||
} else {
|
} else {
|
||||||
pi.type = Variant::INT;
|
pi.type = Variant::INT;
|
||||||
pi.hint = PROPERTY_HINT_FLAGS;
|
pi.hint = PROPERTY_HINT_FLAGS;
|
||||||
|
|
@ -4092,6 +4096,8 @@ PropertyInfo ShaderLanguage::uniform_to_property_info(const ShaderNode::Uniform
|
||||||
case ShaderLanguage::TYPE_BVEC3:
|
case ShaderLanguage::TYPE_BVEC3:
|
||||||
if (p_uniform.array_size > 0) {
|
if (p_uniform.array_size > 0) {
|
||||||
pi.type = Variant::PACKED_INT32_ARRAY;
|
pi.type = Variant::PACKED_INT32_ARRAY;
|
||||||
|
pi.hint = PROPERTY_HINT_TYPE_STRING;
|
||||||
|
pi.hint_string = itos(Variant::INT) + "/" + itos(PROPERTY_HINT_FLAGS) + ":x,y,z";
|
||||||
} else {
|
} else {
|
||||||
pi.type = Variant::INT;
|
pi.type = Variant::INT;
|
||||||
pi.hint = PROPERTY_HINT_FLAGS;
|
pi.hint = PROPERTY_HINT_FLAGS;
|
||||||
|
|
@ -4101,6 +4107,8 @@ PropertyInfo ShaderLanguage::uniform_to_property_info(const ShaderNode::Uniform
|
||||||
case ShaderLanguage::TYPE_BVEC4:
|
case ShaderLanguage::TYPE_BVEC4:
|
||||||
if (p_uniform.array_size > 0) {
|
if (p_uniform.array_size > 0) {
|
||||||
pi.type = Variant::PACKED_INT32_ARRAY;
|
pi.type = Variant::PACKED_INT32_ARRAY;
|
||||||
|
pi.hint = PROPERTY_HINT_TYPE_STRING;
|
||||||
|
pi.hint_string = itos(Variant::INT) + "/" + itos(PROPERTY_HINT_FLAGS) + ":x,y,z,w";
|
||||||
} else {
|
} else {
|
||||||
pi.type = Variant::INT;
|
pi.type = Variant::INT;
|
||||||
pi.hint = PROPERTY_HINT_FLAGS;
|
pi.hint = PROPERTY_HINT_FLAGS;
|
||||||
|
|
@ -4111,11 +4119,16 @@ PropertyInfo ShaderLanguage::uniform_to_property_info(const ShaderNode::Uniform
|
||||||
case ShaderLanguage::TYPE_INT: {
|
case ShaderLanguage::TYPE_INT: {
|
||||||
if (p_uniform.array_size > 0) {
|
if (p_uniform.array_size > 0) {
|
||||||
pi.type = Variant::PACKED_INT32_ARRAY;
|
pi.type = Variant::PACKED_INT32_ARRAY;
|
||||||
|
// TODO: Handle range and encoding for for unsigned values.
|
||||||
} else {
|
} else {
|
||||||
pi.type = Variant::INT;
|
pi.type = Variant::INT;
|
||||||
|
pi.hint = PROPERTY_HINT_RANGE;
|
||||||
if (p_uniform.hint == ShaderLanguage::ShaderNode::Uniform::HINT_RANGE) {
|
if (p_uniform.hint == ShaderLanguage::ShaderNode::Uniform::HINT_RANGE) {
|
||||||
pi.hint = PROPERTY_HINT_RANGE;
|
|
||||||
pi.hint_string = rtos(p_uniform.hint_range[0]) + "," + rtos(p_uniform.hint_range[1]) + "," + rtos(p_uniform.hint_range[2]);
|
pi.hint_string = rtos(p_uniform.hint_range[0]) + "," + rtos(p_uniform.hint_range[1]) + "," + rtos(p_uniform.hint_range[2]);
|
||||||
|
} else if (p_uniform.type == ShaderLanguage::TYPE_UINT) {
|
||||||
|
pi.hint_string = "0," + itos(UINT32_MAX);
|
||||||
|
} else {
|
||||||
|
pi.hint_string = itos(INT32_MIN) + "," + itos(INT32_MAX);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
|
|
@ -4123,6 +4136,7 @@ PropertyInfo ShaderLanguage::uniform_to_property_info(const ShaderNode::Uniform
|
||||||
case ShaderLanguage::TYPE_IVEC2: {
|
case ShaderLanguage::TYPE_IVEC2: {
|
||||||
if (p_uniform.array_size > 0) {
|
if (p_uniform.array_size > 0) {
|
||||||
pi.type = Variant::PACKED_INT32_ARRAY;
|
pi.type = Variant::PACKED_INT32_ARRAY;
|
||||||
|
// TODO: Handle vector pairs?
|
||||||
} else {
|
} else {
|
||||||
pi.type = Variant::VECTOR2I;
|
pi.type = Variant::VECTOR2I;
|
||||||
}
|
}
|
||||||
|
|
@ -4131,6 +4145,7 @@ PropertyInfo ShaderLanguage::uniform_to_property_info(const ShaderNode::Uniform
|
||||||
case ShaderLanguage::TYPE_IVEC3: {
|
case ShaderLanguage::TYPE_IVEC3: {
|
||||||
if (p_uniform.array_size > 0) {
|
if (p_uniform.array_size > 0) {
|
||||||
pi.type = Variant::PACKED_INT32_ARRAY;
|
pi.type = Variant::PACKED_INT32_ARRAY;
|
||||||
|
// TODO: Handle vector pairs?
|
||||||
} else {
|
} else {
|
||||||
pi.type = Variant::VECTOR3I;
|
pi.type = Variant::VECTOR3I;
|
||||||
}
|
}
|
||||||
|
|
@ -4139,6 +4154,7 @@ PropertyInfo ShaderLanguage::uniform_to_property_info(const ShaderNode::Uniform
|
||||||
case ShaderLanguage::TYPE_IVEC4: {
|
case ShaderLanguage::TYPE_IVEC4: {
|
||||||
if (p_uniform.array_size > 0) {
|
if (p_uniform.array_size > 0) {
|
||||||
pi.type = Variant::PACKED_INT32_ARRAY;
|
pi.type = Variant::PACKED_INT32_ARRAY;
|
||||||
|
// TODO: Handle vector pairs?
|
||||||
} else {
|
} else {
|
||||||
pi.type = Variant::VECTOR4I;
|
pi.type = Variant::VECTOR4I;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue