diff options
author | Juan Linietsky <reduzio@gmail.com> | 2017-06-09 00:23:50 -0300 |
---|---|---|
committer | Juan Linietsky <reduzio@gmail.com> | 2017-06-09 00:24:18 -0300 |
commit | 612ab8fcdb94bf0cd9d7b4a3006b4e4f76c9a13b (patch) | |
tree | 1e7b4fdb8154098319b0c44ee0289288610a77c3 /scene | |
parent | 01ed55987c4c044191e50ecc94c277b97962ffc7 (diff) |
-Restored multithread capability to VisualServer
-Restored resource previews!
Diffstat (limited to 'scene')
-rw-r--r-- | scene/main/viewport.cpp | 20 | ||||
-rw-r--r-- | scene/main/viewport.h | 15 | ||||
-rw-r--r-- | scene/resources/mesh.cpp | 1 | ||||
-rw-r--r-- | scene/resources/texture.cpp | 4 | ||||
-rw-r--r-- | scene/resources/texture.h | 2 |
5 files changed, 42 insertions, 0 deletions
diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp index ec36cf48bc..95fad83a28 100644 --- a/scene/main/viewport.cpp +++ b/scene/main/viewport.cpp @@ -117,7 +117,11 @@ bool ViewportTexture::has_alpha() const { return false; } +Ref<Image> ViewportTexture::get_data() const { + ERR_FAIL_COND_V(!vp, Ref<Image>()); + return VS::get_singleton()->texture_get_data(vp->texture_rid); +} void ViewportTexture::set_flags(uint32_t p_flags) { if (!vp) @@ -2516,6 +2520,16 @@ bool Viewport::get_hdr() const { return hdr; } +void Viewport::set_usage(Usage p_usage) { + + usage = p_usage; + VS::get_singleton()->viewport_set_usage(viewport, VS::ViewportUsage(p_usage)); +} + +Viewport::Usage Viewport::get_usage() const { + return usage; +} + void Viewport::_bind_methods() { ClassDB::bind_method(D_METHOD("set_size", "size"), &Viewport::set_size); @@ -2569,6 +2583,9 @@ void Viewport::_bind_methods() { ClassDB::bind_method(D_METHOD("set_hdr", "enable"), &Viewport::set_hdr); ClassDB::bind_method(D_METHOD("get_hdr"), &Viewport::get_hdr); + ClassDB::bind_method(D_METHOD("set_usage", "usage"), &Viewport::set_usage); + ClassDB::bind_method(D_METHOD("get_usage"), &Viewport::get_usage); + ClassDB::bind_method(D_METHOD("get_texture:ViewportTexture"), &Viewport::get_texture); ClassDB::bind_method(D_METHOD("set_physics_object_picking", "enable"), &Viewport::set_physics_object_picking); @@ -2622,6 +2639,7 @@ void Viewport::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::INT, "msaa", PROPERTY_HINT_ENUM, "Disabled,2x,4x,8x,16x"), "set_msaa", "get_msaa"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "hdr"), "set_hdr", "get_hdr"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "disable_3d"), "set_disable_3d", "is_3d_disabled"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "usage", PROPERTY_HINT_ENUM, "2D,2D No-Sampling,3D,3D No-Effects"), "set_usage", "get_usage"); ADD_GROUP("Render Target", "render_target_"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "render_target_v_flip"), "set_vflip", "get_vflip"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "render_target_clear_on_new_frame"), "set_clear_on_new_frame", "get_clear_on_new_frame"); @@ -2730,6 +2748,8 @@ Viewport::Viewport() { msaa = MSAA_DISABLED; hdr = false; + + usage = USAGE_3D; } Viewport::~Viewport() { diff --git a/scene/main/viewport.h b/scene/main/viewport.h index 7470cefb49..e619199424 100644 --- a/scene/main/viewport.h +++ b/scene/main/viewport.h @@ -77,6 +77,8 @@ public: virtual void set_flags(uint32_t p_flags); virtual uint32_t get_flags() const; + virtual Ref<Image> get_data() const; + ViewportTexture(); ~ViewportTexture(); }; @@ -113,6 +115,13 @@ public: MSAA_16X, }; + enum Usage { + USAGE_2D, + USAGE_2D_NO_SAMPLING, + USAGE_3D, + USAGE_3D_NO_EFFECTS, + }; + private: friend class ViewportTexture; @@ -195,6 +204,8 @@ private: RID texture_rid; uint32_t texture_flags; + Usage usage; + int shadow_atlas_size; ShadowAtlasQuadrantSubdiv shadow_atlas_quadrant_subdiv[4]; @@ -416,6 +427,9 @@ public: virtual String get_configuration_warning() const; + void set_usage(Usage p_usage); + Usage get_usage() const; + Viewport(); ~Viewport(); }; @@ -423,5 +437,6 @@ public: VARIANT_ENUM_CAST(Viewport::UpdateMode); VARIANT_ENUM_CAST(Viewport::ShadowAtlasQuadrantSubdiv); VARIANT_ENUM_CAST(Viewport::MSAA); +VARIANT_ENUM_CAST(Viewport::Usage); #endif diff --git a/scene/resources/mesh.cpp b/scene/resources/mesh.cpp index e2ede41290..7f3b4d2759 100644 --- a/scene/resources/mesh.cpp +++ b/scene/resources/mesh.cpp @@ -693,6 +693,7 @@ void ArrayMesh::add_surface(uint32_t p_format, PrimitiveType p_primitive, const Surface s; s.aabb = p_aabb; surfaces.push_back(s); + _recompute_aabb(); VisualServer::get_singleton()->mesh_add_surface(mesh, p_format, (VS::PrimitiveType)p_primitive, p_array, p_vertex_count, p_index_array, p_index_count, p_aabb, p_blend_shapes, p_bone_aabbs); } diff --git a/scene/resources/texture.cpp b/scene/resources/texture.cpp index a1e0c95dd9..0b8ad5536c 100644 --- a/scene/resources/texture.cpp +++ b/scene/resources/texture.cpp @@ -1781,6 +1781,10 @@ float GradientTexture::get_offset(int pos) const { return 0; //TODO: Maybe throw some error instead? } +Ref<Image> GradientTexture::get_data() const { + return VisualServer::get_singleton()->texture_get_data(texture); +} + void GradientTexture::set_color(int pos, const Color &color) { if (points.size() <= pos) { points.resize(pos + 1); diff --git a/scene/resources/texture.h b/scene/resources/texture.h index 07416529ae..9ee9588d2b 100644 --- a/scene/resources/texture.h +++ b/scene/resources/texture.h @@ -539,6 +539,8 @@ public: return pointFirst.color.linear_interpolate(pointSecond.color, (p_offset - pointFirst.offset) / (pointSecond.offset - pointFirst.offset)); } + virtual Ref<Image> get_data() const; + int get_points_count() const; GradientTexture(); |