summaryrefslogtreecommitdiff
path: root/servers/visual
diff options
context:
space:
mode:
Diffstat (limited to 'servers/visual')
-rw-r--r--servers/visual/shader_language.cpp58
-rw-r--r--servers/visual/visual_server_canvas.cpp60
-rw-r--r--servers/visual/visual_server_raster.cpp4
-rw-r--r--servers/visual/visual_server_raster.h2
-rw-r--r--servers/visual/visual_server_scene.h28
-rw-r--r--servers/visual/visual_server_wrap_mt.cpp10
-rw-r--r--servers/visual/visual_server_wrap_mt.h6
7 files changed, 23 insertions, 145 deletions
diff --git a/servers/visual/shader_language.cpp b/servers/visual/shader_language.cpp
index c69bbb9343..834505df9a 100644
--- a/servers/visual/shader_language.cpp
+++ b/servers/visual/shader_language.cpp
@@ -1897,62 +1897,6 @@ bool ShaderLanguage::_validate_function_call(BlockNode *p_block, OperatorNode *p
return false;
}
-#if 0
- if (found_builtin) {
-
- if (p_func->op==OP_CONSTRUCT && all_const) {
-
-
- Vector<float> cdata;
- for(int i=0;i<argcount;i++) {
-
- Variant v = static_cast<ConstantNode*>(p_func->arguments[i+1])->value;
- switch(v.get_type()) {
-
- case Variant::REAL: cdata.push_back(v); break;
- case Variant::INT: cdata.push_back(v); break;
- case Variant::VECTOR2: { Vector2 v2=v; cdata.push_back(v2.x); cdata.push_back(v2.y); } break;
- case Variant::VECTOR3: { Vector3 v3=v; cdata.push_back(v3.x); cdata.push_back(v3.y); cdata.push_back(v3.z);} break;
- case Variant::PLANE: { Plane v4=v; cdata.push_back(v4.normal.x); cdata.push_back(v4.normal.y); cdata.push_back(v4.normal.z); cdata.push_back(v4.d); } break;
- default: ERR_FAIL_V(NULL);
-
- }
-
- }
-
- ConstantNode *cn = parser.create_node<ConstantNode>(p_func->parent);
- Variant data;
- switch(p_func->return_cache) {
- case TYPE_FLOAT: data = cdata[0]; break;
- case TYPE_VEC2:
- if (cdata.size()==1)
- data = Vector2(cdata[0],cdata[0]);
- else
- data = Vector2(cdata[0],cdata[1]);
-
- break;
- case TYPE_VEC3:
- if (cdata.size()==1)
- data = Vector3(cdata[0],cdata[0],cdata[0]);
- else
- data = Vector3(cdata[0],cdata[1],cdata[2]);
- break;
- case TYPE_VEC4:
- if (cdata.size()==1)
- data = Plane(cdata[0],cdata[0],cdata[0],cdata[0]);
- else
- data = Plane(cdata[0],cdata[1],cdata[2],cdata[3]);
- break;
- }
-
- cn->datatype=p_func->return_cache;
- cn->value=data;
- return cn;
-
- }
- return p_func;
- }
-#endif
// try existing functions..
StringName exclude_function;
@@ -3426,7 +3370,7 @@ Error ShaderLanguage::_parse_block(BlockNode *p_block, const Map<StringName, Bui
}
BlockNode *block = alloc_node<BlockNode>();
- block->parent_block = p_block;
+ block->parent_block = init_block;
cf->blocks.push_back(block);
p_block->statements.push_back(cf);
diff --git a/servers/visual/visual_server_canvas.cpp b/servers/visual/visual_server_canvas.cpp
index 0fed9cc961..532546c5fa 100644
--- a/servers/visual/visual_server_canvas.cpp
+++ b/servers/visual/visual_server_canvas.cpp
@@ -499,7 +499,6 @@ void VisualServerCanvas::canvas_item_add_multiline(RID p_item, const Vector<Poin
pline->antialiased = false; //todo
pline->multiline = true;
- // if (p_width <= 1) {
pline->lines = p_points;
pline->line_colors = p_colors;
if (pline->line_colors.size() == 0) {
@@ -507,66 +506,7 @@ void VisualServerCanvas::canvas_item_add_multiline(RID p_item, const Vector<Poin
} else if (pline->line_colors.size() > 1 && pline->line_colors.size() != pline->lines.size()) {
pline->line_colors.resize(1);
}
-#if 0
-//width not yet
- } else {
- //make a trianglestrip for drawing the line...
- Vector2 prev_t;
- pline->triangles.resize(p_points.size() * 2);
- if (p_antialiased) {
- pline->lines.resize(p_points.size() * 2);
- }
- if (p_colors.size() == 0) {
- pline->triangle_colors.push_back(Color(1, 1, 1, 1));
- if (p_antialiased) {
- pline->line_colors.push_back(Color(1, 1, 1, 1));
- }
- }
- if (p_colors.size() == 1) {
- pline->triangle_colors = p_colors;
- pline->line_colors = p_colors;
- } else {
- pline->triangle_colors.resize(pline->triangles.size());
- pline->line_colors.resize(pline->lines.size());
- }
-
- for (int i = 0; i < p_points.size(); i++) {
-
- Vector2 t;
- if (i == p_points.size() - 1) {
- t = prev_t;
- } else {
- t = (p_points[i + 1] - p_points[i]).normalized().tangent();
- if (i == 0) {
- prev_t = t;
- }
- }
-
- Vector2 tangent = ((t + prev_t).normalized()) * p_width * 0.5;
-
- if (p_antialiased) {
- pline->lines[i] = p_points[i] + tangent;
- pline->lines[p_points.size() * 2 - i - 1] = p_points[i] - tangent;
- if (pline->line_colors.size() > 1) {
- pline->line_colors[i] = p_colors[i];
- pline->line_colors[p_points.size() * 2 - i - 1] = p_colors[i];
- }
- }
-
- pline->triangles[i * 2 + 0] = p_points[i] + tangent;
- pline->triangles[i * 2 + 1] = p_points[i] - tangent;
-
- if (pline->triangle_colors.size() > 1) {
-
- pline->triangle_colors[i * 2 + 0] = p_colors[i];
- pline->triangle_colors[i * 2 + 1] = p_colors[i];
- }
-
- prev_t = t;
- }
- }
-#endif
canvas_item->rect_dirty = true;
canvas_item->commands.push_back(pline);
}
diff --git a/servers/visual/visual_server_raster.cpp b/servers/visual/visual_server_raster.cpp
index 6b527b5cd1..7bb7d04fcd 100644
--- a/servers/visual/visual_server_raster.cpp
+++ b/servers/visual/visual_server_raster.cpp
@@ -181,6 +181,10 @@ void VisualServerRaster::set_debug_generate_wireframes(bool p_generate) {
VSG::storage->set_debug_generate_wireframes(p_generate);
}
+void VisualServerRaster::call_set_use_vsync(bool p_enable) {
+ OS::get_singleton()->_set_use_vsync(p_enable);
+}
+
VisualServerRaster::VisualServerRaster() {
VSG::canvas = memnew(VisualServerCanvas);
diff --git a/servers/visual/visual_server_raster.h b/servers/visual/visual_server_raster.h
index a0e79e9d3e..716c1754e1 100644
--- a/servers/visual/visual_server_raster.h
+++ b/servers/visual/visual_server_raster.h
@@ -668,6 +668,8 @@ public:
virtual bool has_os_feature(const String &p_feature) const;
virtual void set_debug_generate_wireframes(bool p_generate);
+ virtual void call_set_use_vsync(bool p_enable);
+
VisualServerRaster();
~VisualServerRaster();
diff --git a/servers/visual/visual_server_scene.h b/servers/visual/visual_server_scene.h
index 4b0c4af09d..689e06de93 100644
--- a/servers/visual/visual_server_scene.h
+++ b/servers/visual/visual_server_scene.h
@@ -69,34 +69,6 @@ public:
Portal() { enabled=true; disable_distance=50; disable_color=Color(); connect_range=0.8; }
};
-
- struct BakedLight {
-
- Rasterizer::BakedLightData data;
- PoolVector<int> sampler;
- AABB octree_aabb;
- Size2i octree_tex_size;
- Size2i light_tex_size;
-
- };
-
- struct BakedLightSampler {
-
- float params[BAKED_LIGHT_SAMPLER_MAX];
- int resolution;
- Vector<Vector3> dp_cache;
-
- BakedLightSampler() {
- params[BAKED_LIGHT_SAMPLER_STRENGTH]=1.0;
- params[BAKED_LIGHT_SAMPLER_ATTENUATION]=1.0;
- params[BAKED_LIGHT_SAMPLER_RADIUS]=1.0;
- params[BAKED_LIGHT_SAMPLER_DETAIL_RATIO]=0.1;
- resolution=16;
- }
- };
-
- void _update_baked_light_sampler_dp_cache(BakedLightSampler * blsamp);
-
#endif
/* CAMERA API */
diff --git a/servers/visual/visual_server_wrap_mt.cpp b/servers/visual/visual_server_wrap_mt.cpp
index b86a0ae3f6..e55b7a9309 100644
--- a/servers/visual/visual_server_wrap_mt.cpp
+++ b/servers/visual/visual_server_wrap_mt.cpp
@@ -158,9 +158,19 @@ void VisualServerWrapMT::finish() {
canvas_occluder_polygon_free_cached_ids();
}
+void VisualServerWrapMT::set_use_vsync_callback(bool p_enable) {
+
+ singleton_mt->call_set_use_vsync(p_enable);
+}
+
+VisualServerWrapMT *VisualServerWrapMT::singleton_mt = NULL;
+
VisualServerWrapMT::VisualServerWrapMT(VisualServer *p_contained, bool p_create_thread) :
command_queue(p_create_thread) {
+ singleton_mt = this;
+ OS::switch_vsync_function = set_use_vsync_callback; //as this goes to another thread, make sure it goes properly
+
visual_server = p_contained;
create_thread = p_create_thread;
thread = NULL;
diff --git a/servers/visual/visual_server_wrap_mt.h b/servers/visual/visual_server_wrap_mt.h
index cb6f67474e..0f24521f5d 100644
--- a/servers/visual/visual_server_wrap_mt.h
+++ b/servers/visual/visual_server_wrap_mt.h
@@ -64,6 +64,8 @@ class VisualServerWrapMT : public VisualServer {
//#define DEBUG_SYNC
+ static VisualServerWrapMT *singleton_mt;
+
#ifdef DEBUG_SYNC
#define SYNC_DEBUG print_line("sync on: " + String(__FUNCTION__));
#else
@@ -584,6 +586,10 @@ public:
virtual bool has_feature(Features p_feature) const { return visual_server->has_feature(p_feature); }
virtual bool has_os_feature(const String &p_feature) const { return visual_server->has_os_feature(p_feature); }
+ FUNC1(call_set_use_vsync, bool)
+
+ static void set_use_vsync_callback(bool p_enable);
+
VisualServerWrapMT(VisualServer *p_contained, bool p_create_thread);
~VisualServerWrapMT();