diff options
Diffstat (limited to 'servers/visual/shader_language.cpp')
-rw-r--r-- | servers/visual/shader_language.cpp | 43 |
1 files changed, 41 insertions, 2 deletions
diff --git a/servers/visual/shader_language.cpp b/servers/visual/shader_language.cpp index 8fee6050a0..4de902af58 100644 --- a/servers/visual/shader_language.cpp +++ b/servers/visual/shader_language.cpp @@ -1352,15 +1352,54 @@ const ShaderLanguage::BuiltinFuncDef ShaderLanguage::builtin_func_defs[] = { //builtins - trigonometry { "sin", TYPE_FLOAT, { TYPE_FLOAT, TYPE_VOID } }, + { "sin", TYPE_VEC2, { TYPE_VEC2, TYPE_VOID } }, + { "sin", TYPE_VEC3, { TYPE_VEC3, TYPE_VOID } }, + { "sin", TYPE_VEC4, { TYPE_VEC4, TYPE_VOID } }, + { "cos", TYPE_FLOAT, { TYPE_FLOAT, TYPE_VOID } }, + { "cos", TYPE_VEC2, { TYPE_VEC2, TYPE_VOID } }, + { "cos", TYPE_VEC3, { TYPE_VEC3, TYPE_VOID } }, + { "cos", TYPE_VEC4, { TYPE_VEC4, TYPE_VOID } }, + { "tan", TYPE_FLOAT, { TYPE_FLOAT, TYPE_VOID } }, + { "tan", TYPE_VEC2, { TYPE_VEC2, TYPE_VOID } }, + { "tan", TYPE_VEC3, { TYPE_VEC3, TYPE_VOID } }, + { "tan", TYPE_VEC4, { TYPE_VEC4, TYPE_VOID } }, + { "asin", TYPE_FLOAT, { TYPE_FLOAT, TYPE_VOID } }, + { "asin", TYPE_VEC2, { TYPE_VEC2, TYPE_VOID } }, + { "asin", TYPE_VEC3, { TYPE_VEC3, TYPE_VOID } }, + { "asin", TYPE_VEC4, { TYPE_VEC4, TYPE_VOID } }, + { "acos", TYPE_FLOAT, { TYPE_FLOAT, TYPE_VOID } }, + { "acos", TYPE_VEC2, { TYPE_VEC2, TYPE_VOID } }, + { "acos", TYPE_VEC3, { TYPE_VEC3, TYPE_VOID } }, + { "acos", TYPE_VEC4, { TYPE_VEC4, TYPE_VOID } }, + { "atan", TYPE_FLOAT, { TYPE_FLOAT, TYPE_VOID } }, - { "atan2", TYPE_FLOAT, { TYPE_FLOAT, TYPE_FLOAT, TYPE_VOID } }, + { "atan", TYPE_VEC2, { TYPE_VEC2, TYPE_VOID } }, + { "atan", TYPE_VEC3, { TYPE_VEC3, TYPE_VOID } }, + { "atan", TYPE_VEC4, { TYPE_VEC4, TYPE_VOID } }, + { "atan", TYPE_FLOAT, { TYPE_FLOAT, TYPE_FLOAT, TYPE_VOID } }, + { "atan", TYPE_VEC2, { TYPE_VEC2, TYPE_VEC2, TYPE_VOID } }, + { "atan", TYPE_VEC3, { TYPE_VEC3, TYPE_VEC3, TYPE_VOID } }, + { "atan", TYPE_VEC4, { TYPE_VEC4, TYPE_VEC4, TYPE_VOID } }, + { "sinh", TYPE_FLOAT, { TYPE_FLOAT, TYPE_VOID } }, + { "sinh", TYPE_VEC2, { TYPE_VEC2, TYPE_VOID } }, + { "sinh", TYPE_VEC3, { TYPE_VEC3, TYPE_VOID } }, + { "sinh", TYPE_VEC4, { TYPE_VEC4, TYPE_VOID } }, + { "cosh", TYPE_FLOAT, { TYPE_FLOAT, TYPE_VOID } }, + { "cosh", TYPE_VEC2, { TYPE_VEC2, TYPE_VOID } }, + { "cosh", TYPE_VEC3, { TYPE_VEC3, TYPE_VOID } }, + { "cosh", TYPE_VEC4, { TYPE_VEC4, TYPE_VOID } }, + { "tanh", TYPE_FLOAT, { TYPE_FLOAT, TYPE_VOID } }, + { "tanh", TYPE_VEC2, { TYPE_VEC2, TYPE_VOID } }, + { "tanh", TYPE_VEC3, { TYPE_VEC3, TYPE_VOID } }, + { "tanh", TYPE_VEC4, { TYPE_VEC4, TYPE_VOID } }, + //builtins - exponential { "pow", TYPE_FLOAT, { TYPE_FLOAT, TYPE_FLOAT, TYPE_VOID } }, { "pow", TYPE_VEC2, { TYPE_VEC2, TYPE_VEC2, TYPE_VOID } }, @@ -3606,7 +3645,7 @@ Error ShaderLanguage::_parse_shader(const Map<StringName, FunctionInfo> &p_funct uniform.default_value.resize(cn->values.size()); - if (!convert_constant(cn, uniform.type, uniform.default_value.ptr())) { + if (!convert_constant(cn, uniform.type, uniform.default_value.ptrw())) { _set_error("Can't convert constant to " + get_datatype_name(uniform.type)); return ERR_PARSE_ERROR; } |