aboutsummaryrefslogtreecommitdiff
path: root/servers/visual/visual_server_viewport.cpp
diff options
context:
space:
mode:
authorJuan Linietsky2016-10-19 11:14:41 -0300
committerJuan Linietsky2016-10-19 11:14:41 -0300
commit4428115916144b45c4697cd65d9c8c093631bec6 (patch)
treeafff5350ae57ba65b190f16b27db892173d9f43f /servers/visual/visual_server_viewport.cpp
parent1527cf8c0d17891dd0ebf99d484f83daa46eba3c (diff)
downloadgodot-4428115916144b45c4697cd65d9c8c093631bec6.tar.gz
godot-4428115916144b45c4697cd65d9c8c093631bec6.tar.zst
godot-4428115916144b45c4697cd65d9c8c093631bec6.zip
Everything returning to normal in 3D, still a long way to go
-implemented the scene part of visual server and rasterizer, objects without lighting and material are rendererd only
Diffstat (limited to 'servers/visual/visual_server_viewport.cpp')
-rw-r--r--servers/visual/visual_server_viewport.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/servers/visual/visual_server_viewport.cpp b/servers/visual/visual_server_viewport.cpp
index baf18b7a5..583b42bfc 100644
--- a/servers/visual/visual_server_viewport.cpp
+++ b/servers/visual/visual_server_viewport.cpp
@@ -1,8 +1,11 @@
#include "visual_server_viewport.h"
#include "visual_server_global.h"
#include "visual_server_canvas.h"
+#include "visual_server_scene.h"
#include "globals.h"
+
+
void VisualServerViewport::_draw_viewport(Viewport *p_viewport) {
/* Camera should always be BEFORE any other 3D */
@@ -58,6 +61,12 @@ void VisualServerViewport::_draw_viewport(Viewport *p_viewport) {
}
}
+
+ if (!p_viewport->disable_3d && p_viewport->camera.is_valid()) {
+
+ VSG::scene->render_camera(p_viewport->camera,p_viewport->scenario,p_viewport->size);
+ }
+
if (!p_viewport->hide_canvas) {
int i=0;
@@ -248,6 +257,11 @@ void VisualServerViewport::draw_viewports() {
ERR_CONTINUE( !vp->render_target.is_valid() );
+ bool visible = vp->viewport_to_screen_rect!=Rect2() || vp->update_mode==VS::VIEWPORT_UPDATE_ALWAYS || vp->update_mode==VS::VIEWPORT_UPDATE_ONCE;
+
+ if (!visible)
+ continue;
+
VSG::rasterizer->set_current_render_target(vp->render_target);
_draw_viewport(vp);