Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2017-03-08 22:00:09 +0300
committerClément Foucault <foucault.clem@gmail.com>2017-03-09 03:30:26 +0300
commit3b91989a093aef874b601efcffd247cf61e73bad (patch)
treef5e8df6b3aad70c71e8002c0e3775b768dbd22fc /source/blender/editors
parentd9f42e5fab6a13ce200665b9a89291aa34ff6c09 (diff)
Draw Manager: structural change
All engines are now called by the draw manager. Engines are separate entities that cannot interfer with each others. Also separated draw_mode_pass.c into the mode engines.
Diffstat (limited to 'source/blender/editors')
-rw-r--r--source/blender/editors/space_view3d/CMakeLists.txt1
-rw-r--r--source/blender/editors/space_view3d/view3d_draw.c26
2 files changed, 6 insertions, 21 deletions
diff --git a/source/blender/editors/space_view3d/CMakeLists.txt b/source/blender/editors/space_view3d/CMakeLists.txt
index f6d5cf6e5d2..34b68a80a0f 100644
--- a/source/blender/editors/space_view3d/CMakeLists.txt
+++ b/source/blender/editors/space_view3d/CMakeLists.txt
@@ -25,6 +25,7 @@ set(INC
../../blenlib
../../blentranslation
../../bmesh
+ ../../draw
../../gpu
../../imbuf
../../makesdna
diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c
index f41d7d68288..21d07761cf5 100644
--- a/source/blender/editors/space_view3d/view3d_draw.c
+++ b/source/blender/editors/space_view3d/view3d_draw.c
@@ -60,6 +60,8 @@
#include "DNA_view3d_types.h"
#include "DNA_windowmanager_types.h"
+#include "DRW_engine.h"
+
#include "ED_keyframing.h"
#include "ED_armature.h"
#include "ED_keyframing.h"
@@ -2330,34 +2332,18 @@ static void view3d_draw_view(const bContext *C, ARegion *ar, DrawData *draw_data
#endif
}
-static void view3d_render_pass(const bContext *C, ARegion *UNUSED(ar))
-{
- Scene *scene = CTX_data_scene(C);
- RenderEngineType *type = RE_engines_find(scene->r.engine); /* In the future we should get that from Layers */
-
- if (type->flag & RE_USE_OGL_PIPELINE) {
- type->view_draw(NULL, C);
- }
- else {
- // Offline Render engine
- }
-}
-
static void view3d_draw_view_new(const bContext *C, ARegion *ar, DrawData *UNUSED(draw_data))
{
-
view3d_draw_setup_view(C, ar);
/* Only 100% compliant on new spec goes bellow */
- view3d_render_pass(C, ar);
+ DRW_draw_view(C);
}
-
void view3d_main_region_draw(const bContext *C, ARegion *ar)
{
Scene *scene = CTX_data_scene(C);
View3D *v3d = CTX_wm_view3d(C);
- int mode = CTX_data_mode_enum(C);
RegionView3D *rv3d = ar->regiondata;
/* TODO layers - In the future we should get RE from Layers */
RenderEngineType *type = RE_engines_find(scene->r.engine);
@@ -2370,21 +2356,19 @@ void view3d_main_region_draw(const bContext *C, ARegion *ar)
if (!rv3d->viewport)
rv3d->viewport = GPU_viewport_create();
- GPU_viewport_bind(rv3d->viewport, &ar->winrct, scene->r.engine, mode);
-
/* TODO viewport - there is so much to be done, in fact a lot will need to happen in the space_view3d.c
* before we even call the drawing routine, but let's move on for now (dfelinto)
* but this is a provisory way to start seeing things in the viewport */
DrawData draw_data;
view3d_draw_data_init(C, ar, rv3d, &draw_data);
+ GPU_viewport_bind(rv3d->viewport, &ar->winrct);
+
if (type->flag & RE_USE_OGL_PIPELINE)
view3d_draw_view_new(C, ar, &draw_data);
else
view3d_draw_view(C, ar, &draw_data);
- GPU_viewport_unbind(rv3d->viewport);
-
v3d->flag |= V3D_INVALID_BACKBUF;
}