diff options
7 files changed, 16 insertions, 4 deletions
diff --git a/source/blender/draw/engines/eevee/eevee_engine.c b/source/blender/draw/engines/eevee/eevee_engine.c index 70933e21719..a1112eb92df 100644 --- a/source/blender/draw/engines/eevee/eevee_engine.c +++ b/source/blender/draw/engines/eevee/eevee_engine.c @@ -478,7 +478,7 @@ RenderEngineType DRW_engine_viewport_eevee_type = { NULL, EEVEE_ENGINE, N_("Eevee"), - RE_INTERNAL | RE_USE_PREVIEW, + RE_INTERNAL | RE_USE_PREVIEW | RE_USE_STEREO_VIEWPORT, NULL, &DRW_render_to_image, NULL, diff --git a/source/blender/draw/engines/external/external_engine.c b/source/blender/draw/engines/external/external_engine.c index f78826b2980..ee4bd58ab80 100644 --- a/source/blender/draw/engines/external/external_engine.c +++ b/source/blender/draw/engines/external/external_engine.c @@ -286,7 +286,7 @@ RenderEngineType DRW_engine_viewport_external_type = { NULL, EXTERNAL_ENGINE, N_("External"), - RE_INTERNAL, + RE_INTERNAL | RE_USE_STEREO_VIEWPORT, NULL, NULL, NULL, diff --git a/source/blender/draw/engines/select/select_engine.c b/source/blender/draw/engines/select/select_engine.c index f357beb0bd8..08ec0038755 100644 --- a/source/blender/draw/engines/select/select_engine.c +++ b/source/blender/draw/engines/select/select_engine.c @@ -381,7 +381,7 @@ RenderEngineType DRW_engine_viewport_select_type = { NULL, SELECT_ENGINE, N_("Select ID"), - RE_INTERNAL, + RE_INTERNAL | RE_USE_STEREO_VIEWPORT, NULL, NULL, NULL, diff --git a/source/blender/draw/engines/workbench/workbench_engine.c b/source/blender/draw/engines/workbench/workbench_engine.c index e9525af5682..c6c594dc04d 100644 --- a/source/blender/draw/engines/workbench/workbench_engine.c +++ b/source/blender/draw/engines/workbench/workbench_engine.c @@ -597,7 +597,7 @@ RenderEngineType DRW_engine_viewport_workbench_type = { NULL, WORKBENCH_ENGINE, N_("Workbench"), - RE_INTERNAL, + RE_INTERNAL | RE_USE_STEREO_VIEWPORT, NULL, &DRW_render_to_image, NULL, diff --git a/source/blender/makesrna/intern/rna_render.c b/source/blender/makesrna/intern/rna_render.c index 03c7ffb75b6..40a2aeb5bd5 100644 --- a/source/blender/makesrna/intern/rna_render.c +++ b/source/blender/makesrna/intern/rna_render.c @@ -885,6 +885,11 @@ static void rna_def_render_engine(BlenderRNA *brna) RNA_def_property_flag(prop, PROP_REGISTER_OPTIONAL); RNA_def_property_ui_text(prop, "Use Spherical Stereo", "Support spherical stereo camera models"); + prop = RNA_def_property(srna, "bl_use_stereo_viewport", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "type->flag", RE_USE_STEREO_VIEWPORT); + RNA_def_property_flag(prop, PROP_REGISTER_OPTIONAL); + RNA_def_property_ui_text(prop, "Use Stereo Viewport", "Support rendering stereo 3D viewport"); + RNA_define_verify_sdna(1); } diff --git a/source/blender/render/extern/include/RE_engine.h b/source/blender/render/extern/include/RE_engine.h index ac05c6c963c..0b5b62e2f08 100644 --- a/source/blender/render/extern/include/RE_engine.h +++ b/source/blender/render/extern/include/RE_engine.h @@ -59,6 +59,7 @@ struct bNodeTree; #define RE_USE_SAVE_BUFFERS 32 #define RE_USE_SHADING_NODES_CUSTOM 64 #define RE_USE_SPHERICAL_STEREO 128 +#define RE_USE_STEREO_VIEWPORT 256 /* RenderEngine.flag */ #define RE_ENGINE_ANIMATION 1 diff --git a/source/blender/windowmanager/intern/wm_draw.c b/source/blender/windowmanager/intern/wm_draw.c index b1cfb155df0..6df8440f90f 100644 --- a/source/blender/windowmanager/intern/wm_draw.c +++ b/source/blender/windowmanager/intern/wm_draw.c @@ -140,6 +140,12 @@ static bool wm_draw_region_stereo_set(Main *bmain, if (region->regiontype == RGN_TYPE_WINDOW) { View3D *v3d = sa->spacedata.first; if (v3d->camera && v3d->camera->type == OB_CAMERA) { + RegionView3D *rv3d = region->regiondata; + RenderEngine *engine = rv3d->render_engine; + if (engine && !(engine->type->flag & RE_USE_STEREO_VIEWPORT)) { + return false; + } + Camera *cam = v3d->camera->data; CameraBGImage *bgpic = cam->bg_images.first; v3d->multiview_eye = sview; |