diff options
Diffstat (limited to 'servers/visual')
| -rw-r--r-- | servers/visual/rasterizer.cpp | 4 | ||||
| -rw-r--r-- | servers/visual/rasterizer.h | 5 | ||||
| -rw-r--r-- | servers/visual/shader_language.cpp | 88 | ||||
| -rw-r--r-- | servers/visual/shader_language.h | 13 | ||||
| -rw-r--r-- | servers/visual/shader_types.h | 2 | ||||
| -rw-r--r-- | servers/visual/visual_server_raster.cpp | 8 | ||||
| -rw-r--r-- | servers/visual/visual_server_raster.h | 5 | ||||
| -rw-r--r-- | servers/visual/visual_server_scene.cpp | 2 | ||||
| -rw-r--r-- | servers/visual/visual_server_scene.h | 12 | ||||
| -rw-r--r-- | servers/visual/visual_server_viewport.cpp | 4 | ||||
| -rw-r--r-- | servers/visual/visual_server_viewport.h | 2 | ||||
| -rw-r--r-- | servers/visual/visual_server_wrap_mt.cpp | 4 | ||||
| -rw-r--r-- | servers/visual/visual_server_wrap_mt.h | 5 |
13 files changed, 121 insertions, 33 deletions
diff --git a/servers/visual/rasterizer.cpp b/servers/visual/rasterizer.cpp index be46690e55..6c04d1de63 100644 --- a/servers/visual/rasterizer.cpp +++ b/servers/visual/rasterizer.cpp @@ -30,8 +30,8 @@ #include "rasterizer.h" -#include "os/os.h" -#include "print_string.h" +#include "core/os/os.h" +#include "core/print_string.h" Rasterizer *(*Rasterizer::_create_func)() = NULL; diff --git a/servers/visual/rasterizer.h b/servers/visual/rasterizer.h index 90f2972ddf..6eeaf12dfc 100644 --- a/servers/visual/rasterizer.h +++ b/servers/visual/rasterizer.h @@ -31,10 +31,10 @@ #ifndef RASTERIZER_H #define RASTERIZER_H -#include "camera_matrix.h" +#include "core/math/camera_matrix.h" #include "servers/visual_server.h" -#include "self_list.h" +#include "core/self_list.h" class RasterizerScene { public: @@ -249,6 +249,7 @@ public: virtual void material_set_param(RID p_material, const StringName &p_param, const Variant &p_value) = 0; virtual Variant material_get_param(RID p_material, const StringName &p_param) const = 0; + virtual Variant material_get_param_default(RID p_material, const StringName &p_param) const = 0; virtual void material_set_line_width(RID p_material, float p_width) = 0; diff --git a/servers/visual/shader_language.cpp b/servers/visual/shader_language.cpp index 9500f35732..35236b23f1 100644 --- a/servers/visual/shader_language.cpp +++ b/servers/visual/shader_language.cpp @@ -29,8 +29,8 @@ /*************************************************************************/ #include "shader_language.h" -#include "os/os.h" -#include "print_string.h" +#include "core/os/os.h" +#include "core/print_string.h" static bool _is_text_char(CharType c) { return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') || c == '_'; @@ -2273,6 +2273,90 @@ bool ShaderLanguage::is_sampler_type(DataType p_type) { p_type == TYPE_SAMPLERCUBE; } +Variant ShaderLanguage::constant_value_to_variant(const Vector<ShaderLanguage::ConstantNode::Value> &p_value, DataType p_type) { + if (p_value.size() > 0) { + Variant value; + switch (p_type) { + case ShaderLanguage::TYPE_BOOL: + value = Variant(p_value[0].boolean); + break; + case ShaderLanguage::TYPE_BVEC2: + case ShaderLanguage::TYPE_BVEC3: + case ShaderLanguage::TYPE_BVEC4: + case ShaderLanguage::TYPE_INT: + value = Variant(p_value[0].sint); + break; + case ShaderLanguage::TYPE_IVEC2: + value = Variant(Vector2(p_value[0].sint, p_value[1].sint)); + break; + case ShaderLanguage::TYPE_IVEC3: + value = Variant(Vector3(p_value[0].sint, p_value[1].sint, p_value[2].sint)); + break; + case ShaderLanguage::TYPE_IVEC4: + value = Variant(Plane(p_value[0].sint, p_value[1].sint, p_value[2].sint, p_value[3].sint)); + break; + case ShaderLanguage::TYPE_UINT: + value = Variant(p_value[0].uint); + break; + case ShaderLanguage::TYPE_UVEC2: + value = Variant(Vector2(p_value[0].uint, p_value[1].uint)); + break; + case ShaderLanguage::TYPE_UVEC3: + value = Variant(Vector3(p_value[0].uint, p_value[1].uint, p_value[2].uint)); + break; + case ShaderLanguage::TYPE_UVEC4: + value = Variant(Plane(p_value[0].uint, p_value[1].uint, p_value[2].uint, p_value[3].uint)); + break; + case ShaderLanguage::TYPE_FLOAT: + value = Variant(p_value[0].real); + break; + case ShaderLanguage::TYPE_VEC2: + value = Variant(Vector2(p_value[0].real, p_value[1].real)); + break; + case ShaderLanguage::TYPE_VEC3: + value = Variant(Vector3(p_value[0].real, p_value[1].real, p_value[2].real)); + break; + case ShaderLanguage::TYPE_VEC4: + value = Variant(Plane(p_value[0].real, p_value[1].real, p_value[2].real, p_value[3].real)); + break; + 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)); + break; + case ShaderLanguage::TYPE_MAT3: { + Basis p; + p[0][0] = p_value[0].real; + p[0][1] = p_value[1].real; + p[0][2] = p_value[2].real; + p[1][0] = p_value[3].real; + p[1][1] = p_value[4].real; + p[1][2] = p_value[5].real; + p[2][0] = p_value[6].real; + p[2][1] = p_value[7].real; + p[2][2] = p_value[8].real; + value = Variant(p); + break; + } + case ShaderLanguage::TYPE_MAT4: { + Basis p; + p[0][0] = p_value[0].real; + p[0][1] = p_value[1].real; + p[0][2] = p_value[2].real; + p[1][0] = p_value[4].real; + p[1][1] = p_value[5].real; + p[1][2] = p_value[6].real; + p[2][0] = p_value[8].real; + p[2][1] = p_value[9].real; + p[2][2] = p_value[10].real; + Transform t = Transform(p, Vector3(p_value[3].real, p_value[7].real, p_value[11].real)); + value = Variant(t); + break; + } + } + return value; + } + return Variant(); +} + void ShaderLanguage::get_keyword_list(List<String> *r_keywords) { Set<String> kws; diff --git a/servers/visual/shader_language.h b/servers/visual/shader_language.h index d68f233b2f..08c4d06992 100644 --- a/servers/visual/shader_language.h +++ b/servers/visual/shader_language.h @@ -31,12 +31,12 @@ #ifndef SHADER_LANGUAGE_H #define SHADER_LANGUAGE_H -#include "list.h" -#include "map.h" -#include "string_db.h" -#include "typedefs.h" -#include "ustring.h" -#include "variant.h" +#include "core/list.h" +#include "core/map.h" +#include "core/string_db.h" +#include "core/typedefs.h" +#include "core/ustring.h" +#include "core/variant.h" class ShaderLanguage { @@ -548,6 +548,7 @@ public: static int get_cardinality(DataType p_type); static bool is_scalar_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 void get_keyword_list(List<String> *r_keywords); static void get_builtin_funcs(List<String> *r_keywords); diff --git a/servers/visual/shader_types.h b/servers/visual/shader_types.h index 0680ec8242..e195b6ea20 100644 --- a/servers/visual/shader_types.h +++ b/servers/visual/shader_types.h @@ -31,7 +31,7 @@ #ifndef SHADERTYPES_H #define SHADERTYPES_H -#include "ordered_hash_map.h" +#include "core/ordered_hash_map.h" #include "servers/visual_server.h" #include "shader_language.h" diff --git a/servers/visual/visual_server_raster.cpp b/servers/visual/visual_server_raster.cpp index c7d33ec43c..ea63ae5013 100644 --- a/servers/visual/visual_server_raster.cpp +++ b/servers/visual/visual_server_raster.cpp @@ -30,11 +30,11 @@ #include "visual_server_raster.h" +#include "core/io/marshalls.h" +#include "core/os/os.h" +#include "core/project_settings.h" +#include "core/sort.h" #include "default_mouse_cursor.xpm" -#include "io/marshalls.h" -#include "os/os.h" -#include "project_settings.h" -#include "sort.h" #include "visual_server_canvas.h" #include "visual_server_global.h" #include "visual_server_scene.h" diff --git a/servers/visual/visual_server_raster.h b/servers/visual/visual_server_raster.h index 7960c5468b..b54e150656 100644 --- a/servers/visual/visual_server_raster.h +++ b/servers/visual/visual_server_raster.h @@ -31,8 +31,8 @@ #ifndef VISUAL_SERVER_RASTER_H #define VISUAL_SERVER_RASTER_H -#include "allocators.h" -#include "octree.h" +#include "core/allocators.h" +#include "core/math/octree.h" #include "servers/visual/rasterizer.h" #include "servers/visual_server.h" #include "visual_server_canvas.h" @@ -203,6 +203,7 @@ public: BIND3(material_set_param, RID, const StringName &, const Variant &) BIND2RC(Variant, material_get_param, RID, const StringName &) + BIND2RC(Variant, material_get_param_default, RID, const StringName &) BIND2(material_set_render_priority, RID, int) BIND2(material_set_line_width, RID, float) diff --git a/servers/visual/visual_server_scene.cpp b/servers/visual/visual_server_scene.cpp index 1e255591f0..eacb5f671c 100644 --- a/servers/visual/visual_server_scene.cpp +++ b/servers/visual/visual_server_scene.cpp @@ -29,7 +29,7 @@ /*************************************************************************/ #include "visual_server_scene.h" -#include "os/os.h" +#include "core/os/os.h" #include "visual_server_global.h" #include "visual_server_raster.h" /* CAMERA API */ diff --git a/servers/visual/visual_server_scene.h b/servers/visual/visual_server_scene.h index 12d732724a..87e19bc6b0 100644 --- a/servers/visual/visual_server_scene.h +++ b/servers/visual/visual_server_scene.h @@ -33,12 +33,12 @@ #include "servers/visual/rasterizer.h" -#include "allocators.h" -#include "geometry.h" -#include "octree.h" -#include "os/semaphore.h" -#include "os/thread.h" -#include "self_list.h" +#include "core/allocators.h" +#include "core/math/geometry.h" +#include "core/math/octree.h" +#include "core/os/semaphore.h" +#include "core/os/thread.h" +#include "core/self_list.h" #include "servers/arvr/arvr_interface.h" class VisualServerScene { diff --git a/servers/visual/visual_server_viewport.cpp b/servers/visual/visual_server_viewport.cpp index 90acba306a..b286533590 100644 --- a/servers/visual/visual_server_viewport.cpp +++ b/servers/visual/visual_server_viewport.cpp @@ -30,7 +30,7 @@ #include "visual_server_viewport.h" -#include "project_settings.h" +#include "core/project_settings.h" #include "visual_server_canvas.h" #include "visual_server_global.h" #include "visual_server_scene.h" @@ -294,7 +294,7 @@ void VisualServerViewport::draw_viewports() { arvr_interface->commit_for_eye(ARVRInterface::EYE_RIGHT, vp->render_target, vp->viewport_to_screen_rect); } - // and for our frame timing, mark when we've finished commiting our eyes + // and for our frame timing, mark when we've finished committing our eyes ARVRServer::get_singleton()->_mark_commit(); } else { VSG::rasterizer->set_current_render_target(vp->render_target); diff --git a/servers/visual/visual_server_viewport.h b/servers/visual/visual_server_viewport.h index f915e26b81..978d6ae4ae 100644 --- a/servers/visual/visual_server_viewport.h +++ b/servers/visual/visual_server_viewport.h @@ -31,8 +31,8 @@ #ifndef VISUALSERVERVIEWPORT_H #define VISUALSERVERVIEWPORT_H +#include "core/self_list.h" #include "rasterizer.h" -#include "self_list.h" #include "servers/arvr/arvr_interface.h" #include "servers/visual_server.h" diff --git a/servers/visual/visual_server_wrap_mt.cpp b/servers/visual/visual_server_wrap_mt.cpp index 1cafc47685..f59d8af9cb 100644 --- a/servers/visual/visual_server_wrap_mt.cpp +++ b/servers/visual/visual_server_wrap_mt.cpp @@ -29,8 +29,8 @@ /*************************************************************************/ #include "visual_server_wrap_mt.h" -#include "os/os.h" -#include "project_settings.h" +#include "core/os/os.h" +#include "core/project_settings.h" void VisualServerWrapMT::thread_exit() { diff --git a/servers/visual/visual_server_wrap_mt.h b/servers/visual/visual_server_wrap_mt.h index fcf9b08968..b8f86d7123 100644 --- a/servers/visual/visual_server_wrap_mt.h +++ b/servers/visual/visual_server_wrap_mt.h @@ -31,8 +31,8 @@ #ifndef VISUAL_SERVER_WRAP_MT_H #define VISUAL_SERVER_WRAP_MT_H -#include "command_queue_mt.h" -#include "os/thread.h" +#include "core/command_queue_mt.h" +#include "core/os/thread.h" #include "servers/visual_server.h" /** @@ -137,6 +137,7 @@ public: FUNC3(material_set_param, RID, const StringName &, const Variant &) FUNC2RC(Variant, material_get_param, RID, const StringName &) + FUNC2RC(Variant, material_get_param_default, RID, const StringName &) FUNC2(material_set_render_priority, RID, int) FUNC2(material_set_line_width, RID, float) |