Python API: add bl_use_stereo_viewport for RenderEngine

To indicate if the render engine supports rendering a stereo 3D viewport.
This is not currently supported for Cycles.

Fixes T62582
This commit is contained in:
Brecht Van Lommel 2020-03-20 16:05:55 +01:00
parent 6777956005
commit a696053545
Notes: blender-bot 2024-04-11 14:26:06 +02:00
Referenced by issue #74692, Sculpt Mode significantly laggy after the addition of Face Sets?
Referenced by issue #62582, Cycles viewport render stuck with stereoscopic viewport
Referenced by issue #109592, Viewport: Switching to anaglyph 3D viewing mode not possible with Cycles.
7 changed files with 16 additions and 4 deletions

View File

@ -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,

View File

@ -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,

View File

@ -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,

View File

@ -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,

View File

@ -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);
}

View File

@ -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

View File

@ -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;