Commit: 11275b736366f6df9b8314b65940001c57736523 Author: Omar Emara Date: Wed Nov 23 13:26:46 2022 +0200 Branches: master https://developer.blender.org/rB11275b736366f6df9b8314b65940001c57736523
Realtime Compositor: Extend option to enable compositor This patch turns the checkbox option to enable the viewport compositor into a 3-option enum that allows: - Disabled. - Enabled. - Enabled only in camera view. See T102353. Differential Revision: https://developer.blender.org/D16509 Reviewed By: Clement Foucault =================================================================== M release/scripts/startup/bl_ui/space_view3d.py M source/blender/draw/intern/draw_manager.c M source/blender/makesdna/DNA_view3d_types.h M source/blender/makesrna/intern/rna_space.c =================================================================== diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py index 38b277a1337..dda5e8beb10 100644 --- a/release/scripts/startup/bl_ui/space_view3d.py +++ b/release/scripts/startup/bl_ui/space_view3d.py @@ -6211,8 +6211,8 @@ class VIEW3D_PT_shading_compositor(Panel): def draw(self, context): shading = context.space_data.shading - layout = self.layout - layout.prop(shading, "use_compositor") + row = self.layout.row() + row.prop(shading, "use_compositor", expand=True) class VIEW3D_PT_gizmo_display(Panel): diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c index 5e87751a9d4..b4c4c5c8d47 100644 --- a/source/blender/draw/intern/draw_manager.c +++ b/source/blender/draw/intern/draw_manager.c @@ -45,6 +45,7 @@ #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_userdef_types.h" +#include "DNA_view3d_types.h" #include "DNA_world_types.h" #include "ED_gpencil.h" @@ -1247,7 +1248,7 @@ static bool is_compositor_enabled(void) return false; } - if (!(DST.draw_ctx.v3d->shading.flag & V3D_SHADING_COMPOSITOR)) { + if (DST.draw_ctx.v3d->shading.use_compositor == V3D_SHADING_USE_COMPOSITOR_DISABLED) { return false; } @@ -1263,6 +1264,11 @@ static bool is_compositor_enabled(void) return false; } + if (DST.draw_ctx.v3d->shading.use_compositor == V3D_SHADING_USE_COMPOSITOR_CAMERA && + DST.draw_ctx.rv3d->persp != RV3D_CAMOB) { + return false; + } + return true; } diff --git a/source/blender/makesdna/DNA_view3d_types.h b/source/blender/makesdna/DNA_view3d_types.h index f3e56ba7039..c09868b44fb 100644 --- a/source/blender/makesdna/DNA_view3d_types.h +++ b/source/blender/makesdna/DNA_view3d_types.h @@ -147,7 +147,11 @@ typedef struct View3DShading { char background_type; char cavity_type; char wire_color_type; - char _pad[2]; + + /** When to preview the compositor output in the viewport. View3DShadingUseCompositor. */ + char use_compositor; + + char _pad; /** FILE_MAXFILE. */ char studio_light[256]; @@ -491,7 +495,6 @@ enum { V3D_SHADING_SCENE_LIGHTS_RENDER = (1 << 12), V3D_SHADING_SCENE_WORLD_RENDER = (1 << 13), V3D_SHADING_STUDIOLIGHT_VIEW_ROTATION = (1 << 14), - V3D_SHADING_COMPOSITOR = (1 << 15), }; /** #View3D.debug_flag */ @@ -516,6 +519,15 @@ enum { V3D_SHADING_CAVITY_BOTH = 2, }; +/** #View3DShading.use_compositor */ +typedef enum View3DShadingUseCompositor { + V3D_SHADING_USE_COMPOSITOR_DISABLED = 0, + /** The compositor is enabled only in camera view. */ + V3D_SHADING_USE_COMPOSITOR_CAMERA = 1, + /** The compositor is always enabled regardless of the view. */ + V3D_SHADING_USE_COMPOSITOR_ALWAYS = 2, +} View3DShadingUseCompositor; + /** #View3DOverlay.flag */ enum { V3D_OVERLAY_FACE_ORIENTATION = (1 << 0), diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index e0341e76667..17c373f2924 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -3959,6 +3959,25 @@ static void rna_def_space_view3d_shading(BlenderRNA *brna) {0, NULL, 0, NULL, NULL}, }; + static const EnumPropertyItem use_compositor_items[] = { + {V3D_SHADING_USE_COMPOSITOR_DISABLED, + "DISABLED", + 0, + "Disabled", + "The compositor is disabled"}, + {V3D_SHADING_USE_COMPOSITOR_CAMERA, + "CAMERA", + 0, + "Camera", + "The compositor is enabled only in camera view"}, + {V3D_SHADING_USE_COMPOSITOR_ALWAYS, + "ALWAYS", + 0, + "Always", + "The compositor is always enabled regardless of the view"}, + {0, NULL, 0, NULL, NULL}, + }; + /* Note these settings are used for both 3D viewport and the OpenGL render * engine in the scene, so can't assume to always be part of a screen. */ srna = RNA_def_struct(brna, "View3DShading", NULL); @@ -4245,12 +4264,12 @@ static void rna_def_space_view3d_shading(BlenderRNA *brna) RNA_def_property_flag(prop, PROP_HIDDEN); RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL); - prop = RNA_def_property(srna, "use_compositor", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", V3D_SHADING_COMPOSITOR); + prop = RNA_def_property(srna, "use_compositor", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "use_compositor"); + RNA_def_property_enum_items(prop, use_compositor_items); RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); - RNA_def_property_boolean_default(prop, false); RNA_def_property_ui_text( - prop, "Compositor", "Preview the compositor output inside the viewport"); + prop, "Compositor", "When to preview the compositor output inside the viewport"); RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D | NS_VIEW3D_SHADING, NULL); } _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs