Merge pull request #23742 from JFonS/fix_23698
Use hint_color when getting shader default params
This commit is contained in:
commit
60ee61c7ff
4 changed files with 13 additions and 7 deletions
|
@ -1497,8 +1497,9 @@ Variant RasterizerStorageGLES2::material_get_param_default(RID p_material, const
|
||||||
|
|
||||||
if (material->shader) {
|
if (material->shader) {
|
||||||
if (material->shader->uniforms.has(p_param)) {
|
if (material->shader->uniforms.has(p_param)) {
|
||||||
Vector<ShaderLanguage::ConstantNode::Value> default_value = material->shader->uniforms[p_param].default_value;
|
ShaderLanguage::ShaderNode::Uniform uniform = material->shader->uniforms[p_param];
|
||||||
return ShaderLanguage::constant_value_to_variant(default_value, material->shader->uniforms[p_param].type);
|
Vector<ShaderLanguage::ConstantNode::Value> default_value = uniform.default_value;
|
||||||
|
return ShaderLanguage::constant_value_to_variant(default_value, uniform.type, uniform.hint);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return Variant();
|
return Variant();
|
||||||
|
|
|
@ -2253,8 +2253,9 @@ Variant RasterizerStorageGLES3::material_get_param_default(RID p_material, const
|
||||||
|
|
||||||
if (material->shader) {
|
if (material->shader) {
|
||||||
if (material->shader->uniforms.has(p_param)) {
|
if (material->shader->uniforms.has(p_param)) {
|
||||||
Vector<ShaderLanguage::ConstantNode::Value> default_value = material->shader->uniforms[p_param].default_value;
|
ShaderLanguage::ShaderNode::Uniform uniform = material->shader->uniforms[p_param];
|
||||||
return ShaderLanguage::constant_value_to_variant(default_value, material->shader->uniforms[p_param].type);
|
Vector<ShaderLanguage::ConstantNode::Value> default_value = uniform.default_value;
|
||||||
|
return ShaderLanguage::constant_value_to_variant(default_value, uniform.type, uniform.hint);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return Variant();
|
return Variant();
|
||||||
|
|
|
@ -2353,7 +2353,7 @@ bool ShaderLanguage::is_sampler_type(DataType p_type) {
|
||||||
p_type == TYPE_SAMPLERCUBE;
|
p_type == TYPE_SAMPLERCUBE;
|
||||||
}
|
}
|
||||||
|
|
||||||
Variant ShaderLanguage::constant_value_to_variant(const Vector<ShaderLanguage::ConstantNode::Value> &p_value, DataType p_type) {
|
Variant ShaderLanguage::constant_value_to_variant(const Vector<ShaderLanguage::ConstantNode::Value> &p_value, DataType p_type, ShaderLanguage::ShaderNode::Uniform::Hint p_hint) {
|
||||||
if (p_value.size() > 0) {
|
if (p_value.size() > 0) {
|
||||||
Variant value;
|
Variant value;
|
||||||
switch (p_type) {
|
switch (p_type) {
|
||||||
|
@ -2397,7 +2397,11 @@ Variant ShaderLanguage::constant_value_to_variant(const Vector<ShaderLanguage::C
|
||||||
value = Variant(Vector3(p_value[0].real, p_value[1].real, p_value[2].real));
|
value = Variant(Vector3(p_value[0].real, p_value[1].real, p_value[2].real));
|
||||||
break;
|
break;
|
||||||
case ShaderLanguage::TYPE_VEC4:
|
case ShaderLanguage::TYPE_VEC4:
|
||||||
|
if (p_hint == ShaderLanguage::ShaderNode::Uniform::HINT_COLOR) {
|
||||||
|
value = Variant(Color(p_value[0].real, p_value[1].real, p_value[2].real, p_value[3].real));
|
||||||
|
} else {
|
||||||
value = Variant(Plane(p_value[0].real, p_value[1].real, p_value[2].real, p_value[3].real));
|
value = Variant(Plane(p_value[0].real, p_value[1].real, p_value[2].real, p_value[3].real));
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case ShaderLanguage::TYPE_MAT2:
|
case ShaderLanguage::TYPE_MAT2:
|
||||||
value = Variant(Transform2D(p_value[0].real, p_value[2].real, p_value[1].real, p_value[3].real, 0.0, 0.0));
|
value = Variant(Transform2D(p_value[0].real, p_value[2].real, p_value[1].real, p_value[3].real, 0.0, 0.0));
|
||||||
|
|
|
@ -550,7 +550,7 @@ public:
|
||||||
static int get_cardinality(DataType p_type);
|
static int get_cardinality(DataType p_type);
|
||||||
static bool is_scalar_type(DataType p_type);
|
static bool is_scalar_type(DataType p_type);
|
||||||
static bool is_sampler_type(DataType p_type);
|
static bool is_sampler_type(DataType p_type);
|
||||||
static Variant constant_value_to_variant(const Vector<ShaderLanguage::ConstantNode::Value> &p_value, DataType p_type);
|
static Variant constant_value_to_variant(const Vector<ShaderLanguage::ConstantNode::Value> &p_value, DataType p_type, ShaderLanguage::ShaderNode::Uniform::Hint p_hint = ShaderLanguage::ShaderNode::Uniform::HINT_NONE);
|
||||||
|
|
||||||
static void get_keyword_list(List<String> *r_keywords);
|
static void get_keyword_list(List<String> *r_keywords);
|
||||||
static void get_builtin_funcs(List<String> *r_keywords);
|
static void get_builtin_funcs(List<String> *r_keywords);
|
||||||
|
|
Loading…
Add table
Reference in a new issue