summaryrefslogtreecommitdiff
path: root/scene
diff options
context:
space:
mode:
authorJuan Linietsky <reduzio@gmail.com>2017-06-09 00:23:50 -0300
committerJuan Linietsky <reduzio@gmail.com>2017-06-09 00:24:18 -0300
commit612ab8fcdb94bf0cd9d7b4a3006b4e4f76c9a13b (patch)
tree1e7b4fdb8154098319b0c44ee0289288610a77c3 /scene
parent01ed55987c4c044191e50ecc94c277b97962ffc7 (diff)
-Restored multithread capability to VisualServer
-Restored resource previews!
Diffstat (limited to 'scene')
-rw-r--r--scene/main/viewport.cpp20
-rw-r--r--scene/main/viewport.h15
-rw-r--r--scene/resources/mesh.cpp1
-rw-r--r--scene/resources/texture.cpp4
-rw-r--r--scene/resources/texture.h2
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();