diff options
76 files changed, 347 insertions, 625 deletions
diff --git a/release/scripts/freestyle/modules/parameter_editor.py b/release/scripts/freestyle/modules/parameter_editor.py index b00b30a9a21..2af6caac4f9 100644 --- a/release/scripts/freestyle/modules/parameter_editor.py +++ b/release/scripts/freestyle/modules/parameter_editor.py @@ -1538,7 +1538,7 @@ def process(layer_name, lineset_name): raise RuntimeError("No Thickness modifier with type", type(m), m) # -- Textures -- # has_tex = False - if scene.view_render.use_shading_nodes: + if scene.render.use_shading_nodes: if linestyle.use_nodes and linestyle.node_tree: shaders_list.append(BlenderTextureShader(linestyle.node_tree)) has_tex = True diff --git a/release/scripts/startup/bl_operators/object_quick_effects.py b/release/scripts/startup/bl_operators/object_quick_effects.py index 27cc118d99d..24323b1554e 100644 --- a/release/scripts/startup/bl_operators/object_quick_effects.py +++ b/release/scripts/startup/bl_operators/object_quick_effects.py @@ -365,7 +365,7 @@ class QuickSmoke(Operator): # Setup material # Cycles - if context.scene.view_render.use_shading_nodes or context.view_render.use_shading_nodes: + if context.scene.render.use_shading_nodes or context.render.use_shading_nodes: bpy.ops.object.material_slot_add() mat = bpy.data.materials.new("Smoke Domain Material") diff --git a/release/scripts/startup/bl_ui/properties_collection.py b/release/scripts/startup/bl_ui/properties_collection.py index 60f06b57f3c..e0ac7786b50 100644 --- a/release/scripts/startup/bl_ui/properties_collection.py +++ b/release/scripts/startup/bl_ui/properties_collection.py @@ -65,7 +65,7 @@ class COLLECTION_PT_clay_settings(CollectionButtonsPanel, Panel): @classmethod def poll(cls, context): - return context.view_render.engine in cls.COMPAT_ENGINES + return context.engine in cls.COMPAT_ENGINES def draw(self, context): layout = self.layout diff --git a/release/scripts/startup/bl_ui/properties_data_camera.py b/release/scripts/startup/bl_ui/properties_data_camera.py index bd80285515b..58cbcec25ca 100644 --- a/release/scripts/startup/bl_ui/properties_data_camera.py +++ b/release/scripts/startup/bl_ui/properties_data_camera.py @@ -147,11 +147,11 @@ class DATA_PT_camera_stereoscopy(CameraButtonsPanel, Panel): def draw(self, context): layout = self.layout - view_render = context.scene.view_render + render = context.scene.render st = context.camera.stereo cam = context.camera - is_spherical_stereo = cam.type != 'ORTHO' and view_render.use_spherical_stereo + is_spherical_stereo = cam.type != 'ORTHO' and render.use_spherical_stereo use_spherical_stereo = is_spherical_stereo and st.use_spherical_stereo col = layout.column() diff --git a/release/scripts/startup/bl_ui/properties_data_modifier.py b/release/scripts/startup/bl_ui/properties_data_modifier.py index 4c2e8e03641..6465f22901a 100644 --- a/release/scripts/startup/bl_ui/properties_data_modifier.py +++ b/release/scripts/startup/bl_ui/properties_data_modifier.py @@ -935,7 +935,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel): col = split.column() scene = context.scene - engine = scene.view_render.engine + engine = context.engine show_adaptive_options = ( engine == 'CYCLES' and md == ob.modifiers[-1] and scene.cycles.feature_set == 'EXPERIMENTAL' diff --git a/release/scripts/startup/bl_ui/properties_data_workspace.py b/release/scripts/startup/bl_ui/properties_data_workspace.py index c699fac7dd2..e6ac4ab7477 100644 --- a/release/scripts/startup/bl_ui/properties_data_workspace.py +++ b/release/scripts/startup/bl_ui/properties_data_workspace.py @@ -51,15 +51,11 @@ class WORKSPACE_PT_workspace(WorkSpaceButtonsPanel, Panel): window = context.window workspace = context.workspace scene = context.scene - view_render = workspace.view_render layout.enabled = not workspace.use_scene_settings layout.template_search(window, "view_layer", scene, "view_layers") - if view_render.has_multiple_engines: - layout.prop(view_render, "engine", text="") - class WORKSPACE_PT_owner_ids(WorkSpaceButtonsPanel, Panel): bl_label = "Workspace Add-ons" diff --git a/release/scripts/startup/bl_ui/properties_freestyle.py b/release/scripts/startup/bl_ui/properties_freestyle.py index d9f28040b16..b1992127932 100644 --- a/release/scripts/startup/bl_ui/properties_freestyle.py +++ b/release/scripts/startup/bl_ui/properties_freestyle.py @@ -33,7 +33,7 @@ class RenderFreestyleButtonsPanel: def poll(cls, context): scene = context.scene with_freestyle = bpy.app.build_options.freestyle - return scene and with_freestyle and(scene.view_render.engine in cls.COMPAT_ENGINES) + return scene and with_freestyle and(context.engine in cls.COMPAT_ENGINES) class RENDER_PT_freestyle(RenderFreestyleButtonsPanel, Panel): @@ -75,7 +75,7 @@ class ViewLayerFreestyleButtonsPanel: with_freestyle = bpy.app.build_options.freestyle return (scene and with_freestyle and rd.use_freestyle and - scene.view_layers.active and(scene.view_render.engine in cls.COMPAT_ENGINES)) + scene.view_layers.active and(context.engine in cls.COMPAT_ENGINES)) class ViewLayerFreestyleEditorButtonsPanel(ViewLayerFreestyleButtonsPanel): @@ -185,7 +185,6 @@ class VIEWLAYER_PT_freestyle_lineset(ViewLayerFreestyleEditorButtonsPanel, Panel scene = context.scene rd = scene.render - view_render = scene.view_render view_layer = scene.view_layers.active freestyle = view_layer.freestyle_settings @@ -782,7 +781,7 @@ class VIEWLAYER_PT_freestyle_linestyle(ViewLayerFreestyleEditorButtonsPanel, Pan layout.separator() row = layout.row() - if view_render.use_shading_nodes: + if scene.render.use_shading_nodes: row.prop(linestyle, "use_nodes") else: row.prop(linestyle, "use_texture") @@ -813,7 +812,7 @@ class MaterialFreestyleButtonsPanel: material = context.material with_freestyle = bpy.app.build_options.freestyle return with_freestyle and material and scene and scene.render.use_freestyle and \ - (scene.view_render.engine in cls.COMPAT_ENGINES) + (context.engine in cls.COMPAT_ENGINES) class MATERIAL_PT_freestyle_line(MaterialFreestyleButtonsPanel, Panel): diff --git a/release/scripts/startup/bl_ui/properties_material.py b/release/scripts/startup/bl_ui/properties_material.py index 5010ea1e096..233a1c4369e 100644 --- a/release/scripts/startup/bl_ui/properties_material.py +++ b/release/scripts/startup/bl_ui/properties_material.py @@ -82,7 +82,7 @@ class MATERIAL_UL_matslots(UIList): layout.prop(ma, "name", text="", emboss=False, icon_value=icon) else: layout.label(text="", icon_value=icon) - if ma and not context.view_render.use_shading_nodes: + if ma and not context.scene.render.use_shading_nodes: manode = ma.active_node_material if manode: layout.label(text=iface_("Node %s") % manode.name, translate=False, icon_value=layout.icon(manode)) diff --git a/release/scripts/startup/bl_ui/properties_physics_cloth.py b/release/scripts/startup/bl_ui/properties_physics_cloth.py index 351418c9d23..1528899a4de 100644 --- a/release/scripts/startup/bl_ui/properties_physics_cloth.py +++ b/release/scripts/startup/bl_ui/properties_physics_cloth.py @@ -45,8 +45,7 @@ class PhysicButtonsPanel: @classmethod def poll(cls, context): ob = context.object - view_render = context.scene.view_render - return (ob and ob.type == 'MESH') and (view_render.engine in cls.COMPAT_ENGINES) and (context.cloth) + return (ob and ob.type == 'MESH') and (context.engine in cls.COMPAT_ENGINES) and (context.cloth) class PHYSICS_PT_cloth(PhysicButtonsPanel, Panel): diff --git a/release/scripts/startup/bl_ui/properties_physics_common.py b/release/scripts/startup/bl_ui/properties_physics_common.py index 15c8bd68d10..3615f8be48c 100644 --- a/release/scripts/startup/bl_ui/properties_physics_common.py +++ b/release/scripts/startup/bl_ui/properties_physics_common.py @@ -30,8 +30,7 @@ class PhysicButtonsPanel: @classmethod def poll(cls, context): - view_render = context.scene.view_render - return (context.object) and view_render.engine in cls.COMPAT_ENGINES + return (context.object) and context.engine in cls.COMPAT_ENGINES def physics_add(self, layout, md, name, type, typeicon, toggles): diff --git a/release/scripts/startup/bl_ui/properties_physics_dynamicpaint.py b/release/scripts/startup/bl_ui/properties_physics_dynamicpaint.py index 7fc1c01279d..e1c0606c493 100644 --- a/release/scripts/startup/bl_ui/properties_physics_dynamicpaint.py +++ b/release/scripts/startup/bl_ui/properties_physics_dynamicpaint.py @@ -55,8 +55,7 @@ class PhysicButtonsPanel: @classmethod def poll(cls, context): ob = context.object - view_render = context.scene.view_render - return (ob and ob.type == 'MESH') and view_render.engine in cls.COMPAT_ENGINES and context.dynamic_paint + return (ob and ob.type == 'MESH') and context.engine in cls.COMPAT_ENGINES and context.dynamic_paint class PHYSICS_PT_dynamic_paint(PhysicButtonsPanel, Panel): @@ -109,7 +108,7 @@ class PHYSICS_PT_dynamic_paint(PhysicButtonsPanel, Panel): elif md.ui_type == 'BRUSH': brush = md.brush_settings - use_shading_nodes = context.view_render.use_shading_nodes + use_shading_nodes = context.scene.render.use_shading_nodes if brush is None: layout.operator("dpaint.type_toggle", text="Add Brush").type = 'BRUSH' @@ -143,8 +142,7 @@ class PHYSICS_PT_dp_advanced_canvas(PhysicButtonsPanel, Panel): @classmethod def poll(cls, context): md = context.dynamic_paint - view_render = context.scene.view_render - return md and md.ui_type == 'CANVAS' and md.canvas_settings and md.canvas_settings.canvas_surfaces.active and view_render.engine in cls.COMPAT_ENGINES + return md and md.ui_type == 'CANVAS' and md.canvas_settings and md.canvas_settings.canvas_surfaces.active and context.engine in cls.COMPAT_ENGINES def draw(self, context): layout = self.layout @@ -220,13 +218,12 @@ class PHYSICS_PT_dp_canvas_output(PhysicButtonsPanel, Panel): @classmethod def poll(cls, context): md = context.dynamic_paint - view_render = context.scene.view_render if not (md and md.ui_type == 'CANVAS' and md.canvas_settings): return 0 surface = context.dynamic_paint.canvas_settings.canvas_surfaces.active return (surface and (not (surface.surface_format == 'VERTEX' and (surface.surface_type in {'DISPLACE', 'WAVE'}))) and - (view_render.engine in cls.COMPAT_ENGINES)) + (context.engine in cls.COMPAT_ENGINES)) def draw(self, context): layout = self.layout @@ -314,11 +311,10 @@ class PHYSICS_PT_dp_canvas_initial_color(PhysicButtonsPanel, Panel): @classmethod def poll(cls, context): md = context.dynamic_paint - view_render = context.scene.view_render if not (md and md.ui_type == 'CANVAS' and md.canvas_settings): return 0 surface = context.dynamic_paint.canvas_settings.canvas_surfaces.active - return (surface and surface.surface_type == 'PAINT') and (view_render.engine in cls.COMPAT_ENGINES) + return (surface and surface.surface_type == 'PAINT') and (context.engine in cls.COMPAT_ENGINES) def draw(self, context): layout = self.layout @@ -351,11 +347,10 @@ class PHYSICS_PT_dp_effects(PhysicButtonsPanel, Panel): @classmethod def poll(cls, context): md = context.dynamic_paint - view_render = context.scene.view_render if not (md and md.ui_type == 'CANVAS' and md.canvas_settings): return False surface = context.dynamic_paint.canvas_settings.canvas_surfaces.active - return (surface and surface.surface_type == 'PAINT') and (view_render.engine in cls.COMPAT_ENGINES) + return (surface and surface.surface_type == 'PAINT') and (context.engine in cls.COMPAT_ENGINES) def draw(self, context): layout = self.layout @@ -401,13 +396,12 @@ class PHYSICS_PT_dp_cache(PhysicButtonsPanel, Panel): @classmethod def poll(cls, context): md = context.dynamic_paint - view_render = context.scene.view_render return (md and md.ui_type == 'CANVAS' and md.canvas_settings and md.canvas_settings.canvas_surfaces.active and md.canvas_settings.canvas_surfaces.active.is_cache_user and - (view_render.engine in cls.COMPAT_ENGINES)) + (context.engine in cls.COMPAT_ENGINES)) def draw(self, context): surface = context.dynamic_paint.canvas_settings.canvas_surfaces.active @@ -423,8 +417,7 @@ class PHYSICS_PT_dp_brush_source(PhysicButtonsPanel, Panel): @classmethod def poll(cls, context): md = context.dynamic_paint - view_render = context.scene.view_render - return md and md.ui_type == 'BRUSH' and md.brush_settings and (view_render.engine in cls.COMPAT_ENGINES) + return md and md.ui_type == 'BRUSH' and md.brush_settings and (context.engine in cls.COMPAT_ENGINES) def draw(self, context): layout = self.layout @@ -477,8 +470,7 @@ class PHYSICS_PT_dp_brush_velocity(PhysicButtonsPanel, Panel): @classmethod def poll(cls, context): md = context.dynamic_paint - view_render = context.scene.view_render - return md and md.ui_type == 'BRUSH' and md.brush_settings and (view_render.engine in cls.COMPAT_ENGINES) + return md and md.ui_type == 'BRUSH' and md.brush_settings and (context.engine in cls.COMPAT_ENGINES) def draw(self, context): layout = self.layout @@ -514,8 +506,7 @@ class PHYSICS_PT_dp_brush_wave(PhysicButtonsPanel, Panel): @classmethod def poll(cls, context): md = context.dynamic_paint - view_render = context.scene.view_render - return md and md.ui_type == 'BRUSH' and md.brush_settings and (view_render.engine in cls.COMPAT_ENGINES) + return md and md.ui_type == 'BRUSH' and md.brush_settings and (context.engine in cls.COMPAT_ENGINES) def draw(self, context): layout = self.layout diff --git a/release/scripts/startup/bl_ui/properties_physics_field.py b/release/scripts/startup/bl_ui/properties_physics_field.py index aee93f840be..3e3a2145682 100644 --- a/release/scripts/startup/bl_ui/properties_physics_field.py +++ b/release/scripts/startup/bl_ui/properties_physics_field.py @@ -33,8 +33,7 @@ class PhysicButtonsPanel: @classmethod def poll(cls, context): - view_render = context.scene.view_render - return (context.object) and (view_render.engine in cls.COMPAT_ENGINES) + return (context.object) and (context.engine in cls.COMPAT_ENGINES) class PHYSICS_PT_field(PhysicButtonsPanel, Panel): @@ -44,8 +43,7 @@ class PHYSICS_PT_field(PhysicButtonsPanel, Panel): @classmethod def poll(cls, context): ob = context.object - view_render = context.scene.view_render - return (view_render.engine in cls.COMPAT_ENGINES) and (ob.field) and (ob.field.type != 'NONE') + return (context.engine in cls.COMPAT_ENGINES) and (ob.field) and (ob.field.type != 'NONE') def draw(self, context): layout = self.layout @@ -182,8 +180,7 @@ class PHYSICS_PT_collision(PhysicButtonsPanel, Panel): @classmethod def poll(cls, context): ob = context.object - view_render = context.scene.view_render - return (ob and ob.type == 'MESH') and (view_render.engine in cls.COMPAT_ENGINES) and (context.collision) + return (ob and ob.type == 'MESH') and (context.engine in cls.COMPAT_ENGINES) and (context.collision) def draw(self, context): layout = self.layout diff --git a/release/scripts/startup/bl_ui/properties_physics_fluid.py b/release/scripts/startup/bl_ui/properties_physics_fluid.py index 61ca23be4bc..80ad9e358c3 100644 --- a/release/scripts/startup/bl_ui/properties_physics_fluid.py +++ b/release/scripts/startup/bl_ui/properties_physics_fluid.py @@ -37,8 +37,7 @@ class PhysicButtonsPanel: @classmethod def poll(cls, context): ob = context.object - view_render = context.scene.view_render - return (ob and ob.type == 'MESH') and view_render.engine in cls.COMPAT_ENGINES and (context.fluid) + return (ob and ob.type == 'MESH') and context.engine in cls.COMPAT_ENGINES and (context.fluid) class PHYSICS_PT_fluid(PhysicButtonsPanel, Panel): @@ -211,8 +210,7 @@ class PHYSICS_PT_domain_gravity(PhysicButtonsPanel, Panel): @classmethod def poll(cls, context): md = context.fluid - view_render = context.scene.view_render - return md and md.settings and (md.settings.type == 'DOMAIN') and view_render.engine in cls.COMPAT_ENGINES + return md and md.settings and (md.settings.type == 'DOMAIN') and context.engine in cls.COMPAT_ENGINES def draw(self, context): layout = self.layout @@ -265,8 +263,7 @@ class PHYSICS_PT_domain_boundary(PhysicButtonsPanel, Panel): @classmethod def poll(cls, context): md = context.fluid - view_render = context.scene.view_render - return md and md.settings and (md.settings.type == 'DOMAIN') and view_render.engine in cls.COMPAT_ENGINES + return md and md.settings and (md.settings.type == 'DOMAIN') and context.engine in cls.COMPAT_ENGINES def draw(self, context): layout = self.layout @@ -296,8 +293,7 @@ class PHYSICS_PT_domain_particles(PhysicButtonsPanel, Panel): @classmethod def poll(cls, context): md = context.fluid - view_render = context.scene.view_render - return md and md.settings and (md.settings.type == 'DOMAIN') and view_render.engine in cls.COMPAT_ENGINES + return md and md.settings and (md.settings.type == 'DOMAIN') and context.engine in cls.COMPAT_ENGINES def draw(self, context): layout = self.layout diff --git a/release/scripts/startup/bl_ui/properties_physics_rigidbody_constraint.py b/release/scripts/startup/bl_ui/properties_physics_rigidbody_constraint.py index a9b30c3b388..90d3b3da057 100644 --- a/release/scripts/startup/bl_ui/properties_physics_rigidbody_constraint.py +++ b/release/scripts/startup/bl_ui/properties_physics_rigidbody_constraint.py @@ -34,8 +34,7 @@ class PHYSICS_PT_rigid_body_constraint(PHYSICS_PT_rigidbody_constraint_panel, Pa @classmethod def poll(cls, context): ob = context.object - view_render = context.scene.view_render - return (ob and ob.rigid_body_constraint and view_render.engine in cls.COMPAT_ENGINES) + return (ob and ob.rigid_body_constraint and context.engine in cls.COMPAT_ENGINES) def draw(self, context): layout = self.layout diff --git a/release/scripts/startup/bl_ui/properties_physics_smoke.py b/release/scripts/startup/bl_ui/properties_physics_smoke.py index 9e6e73a4b1c..ddb898c7881 100644 --- a/release/scripts/startup/bl_ui/properties_physics_smoke.py +++ b/release/scripts/startup/bl_ui/properties_physics_smoke.py @@ -34,8 +34,7 @@ class PhysicButtonsPanel: @classmethod def poll(cls, context): ob = context.object - view_render = context.scene.view_render - return (ob and ob.type == 'MESH') and (view_render.engine in cls.COMPAT_ENGINES) and (context.smoke) + return (ob and ob.type == 'MESH') and (context.engine in cls.COMPAT_ENGINES) and (context.smoke) class PHYSICS_PT_smoke(PhysicButtonsPanel, Panel): @@ -242,8 +241,7 @@ class PHYSICS_PT_smoke_highres(PhysicButtonsPanel, Panel): @classmethod def poll(cls, context): md = context.smoke - view_render = context.scene.view_render - return md and (md.smoke_type == 'DOMAIN') and (view_render.engine in cls.COMPAT_ENGINES) + return md and (md.smoke_type == 'DOMAIN') and (context.engine in cls.COMPAT_ENGINES) def draw_header(self, context): md = context.smoke.domain_settings @@ -282,8 +280,7 @@ class PHYSICS_PT_smoke_groups(PhysicButtonsPanel, Panel): @classmethod def poll(cls, context): md = context.smoke - view_render = context.scene.view_render - return md and (md.smoke_type == 'DOMAIN') and (view_render.engine in cls.COMPAT_ENGINES) + return md and (md.smoke_type == 'DOMAIN') and (context.engine in cls.COMPAT_ENGINES) def draw(self, context): layout = self.layout @@ -311,8 +308,7 @@ class PHYSICS_PT_smoke_cache(PhysicButtonsPanel, Panel): @classmethod def poll(cls, context): md = context.smoke - view_render = context.scene.view_render - return md and (md.smoke_type == 'DOMAIN') and (view_render.engine in cls.COMPAT_ENGINES) + return md and (md.smoke_type == 'DOMAIN') and (context.engine in cls.COMPAT_ENGINES) def draw(self, context): layout = self.layout @@ -348,8 +344,7 @@ class PHYSICS_PT_smoke_field_weights(PhysicButtonsPanel, Panel): @classmethod def poll(cls, context): md = context.smoke - view_render = context.scene.view_render - return md and (md.smoke_type == 'DOMAIN') and (view_render.engine in cls.COMPAT_ENGINES) + return md and (md.smoke_type == 'DOMAIN') and (context.engine in cls.COMPAT_ENGINES) def draw(self, context): domain = context.smoke.domain_settings @@ -363,7 +358,6 @@ class PHYSICS_PT_smoke_display_settings(PhysicButtonsPanel, Panel): @classmethod def poll(cls, context): md = context.smoke - view_render = context.scene.view_render return md and (md.smoke_type == 'DOMAIN') def draw(self, context): diff --git a/release/scripts/startup/bl_ui/properties_physics_softbody.py b/release/scripts/startup/bl_ui/properties_physics_softbody.py index 718f552cf33..101a1528c7e 100644 --- a/release/scripts/startup/bl_ui/properties_physics_softbody.py +++ b/release/scripts/startup/bl_ui/properties_physics_softbody.py @@ -41,8 +41,7 @@ class PhysicButtonsPanel: @classmethod def poll(cls, context): ob = context.object - view_render = context.scene.view_render - return ob and ob.type in COMPAT_OB_TYPES and view_render.engine in cls.COMPAT_ENGINES and context.soft_body + return ob and ob.type in COMPAT_OB_TYPES and context.engine in cls.COMPAT_ENGINES and context.soft_body class PHYSICS_PT_softbody(PhysicButtonsPanel, Panel): diff --git a/release/scripts/startup/bl_ui/properties_render.py b/release/scripts/startup/bl_ui/properties_render.py index 6ba49627579..9b9cfee5dc7 100644 --- a/release/scripts/startup/bl_ui/properties_render.py +++ b/release/scripts/startup/bl_ui/properties_render.py @@ -51,8 +51,7 @@ class RenderButtonsPanel: @classmethod def poll(cls, context): - scene = context.scene - return scene and (scene.view_render.engine in cls.COMPAT_ENGINES) + return (context.engine in cls.COMPAT_ENGINES) class RENDER_PT_context(Panel): @@ -70,10 +69,10 @@ class RENDER_PT_context(Panel): layout = self.layout scene = context.scene - view_render = scene.view_render + rd = scene.render - if view_render.has_multiple_engines: - layout.prop(view_render, "engine", text="") + if rd.has_multiple_engines: + layout.prop(rd, "engine", text="") class RENDER_PT_render(RenderButtonsPanel, Panel): @@ -228,10 +227,8 @@ class RENDER_PT_motion_blur(RenderButtonsPanel, Panel): @classmethod def poll(cls, context): - scene = context.scene - rd = scene.render - view_render = scene.view_render - return not rd.use_full_sample and (view_render.engine in cls.COMPAT_ENGINES) + rd = context.scene.render + return not rd.use_full_sample and (context.engine in cls.COMPAT_ENGINES) def draw_header(self, context): rd = context.scene.render @@ -337,7 +334,7 @@ class RENDER_PT_post_processing(RenderButtonsPanel, Panel): split.prop(rd, "dither_intensity", text="Dither", slider=True) - if context.scene.view_render.engine == 'BLENDER_EEVEE': + if context.engine == 'BLENDER_EEVEE': return layout.separator() @@ -631,8 +628,7 @@ class RENDER_PT_eevee_ambient_occlusion(RenderButtonsPanel, Panel): @classmethod def poll(cls, context): - scene = context.scene - return scene and (scene.view_render.engine in cls.COMPAT_ENGINES) + return (context.engine in cls.COMPAT_ENGINES) def draw_header(self, context): scene = context.scene @@ -660,8 +656,7 @@ class RENDER_PT_eevee_motion_blur(RenderButtonsPanel, Panel): @classmethod def poll(cls, context): - scene = context.scene - return scene and (scene.view_render.engine in cls.COMPAT_ENGINES) + return (context.engine in cls.COMPAT_ENGINES) def draw_header(self, context): scene = context.scene @@ -686,8 +681,7 @@ class RENDER_PT_eevee_depth_of_field(RenderButtonsPanel, Panel): @classmethod def poll(cls, context): - scene = context.scene - return scene and (scene.view_render.engine in cls.COMPAT_ENGINES) + return (context.engine in cls.COMPAT_ENGINES) def draw_header(self, context): scene = context.scene @@ -712,8 +706,7 @@ class RENDER_PT_eevee_bloom(RenderButtonsPanel, Panel): @classmethod def poll(cls, context): - scene = context.scene - return scene and (scene.view_render.engine in cls.COMPAT_ENGINES) + return (context.engine in cls.COMPAT_ENGINES) def draw_header(self, context): scene = context.scene @@ -742,8 +735,7 @@ class RENDER_PT_eevee_volumetric(RenderButtonsPanel, Panel): @classmethod def poll(cls, context): - scene = context.scene - return scene and (scene.view_render.engine in cls.COMPAT_ENGINES) + return (context.engine in cls.COMPAT_ENGINES) def draw_header(self, context): scene = context.scene @@ -776,8 +768,7 @@ class RENDER_PT_eevee_subsurface_scattering(RenderButtonsPanel, Panel): @classmethod def poll(cls, context): - scene = context.scene - return scene and (scene.view_render.engine in cls.COMPAT_ENGINES) + return (context.engine in cls.COMPAT_ENGINES) def draw_header(self, context): scene = context.scene @@ -802,8 +793,7 @@ class RENDER_PT_eevee_screen_space_reflections(RenderButtonsPanel, Panel): @classmethod def poll(cls, context): - scene = context.scene - return scene and (scene.view_render.engine in cls.COMPAT_ENGINES) + return (context.engine in cls.COMPAT_ENGINES) def draw_header(self, context): scene = context.scene @@ -833,8 +823,7 @@ class RENDER_PT_eevee_shadows(RenderButtonsPanel, Panel): @classmethod def poll(cls, context): - scene = context.scene - return scene and (scene.view_render.engine in cls.COMPAT_ENGINES) + return (context.engine in cls.COMPAT_ENGINES) def draw(self, context): layout = self.layout @@ -854,8 +843,7 @@ class RENDER_PT_eevee_sampling(RenderButtonsPanel, Panel): @classmethod def poll(cls, context): - scene = context.scene - return scene and (scene.view_render.engine in cls.COMPAT_ENGINES) + return (context.engine in cls.COMPAT_ENGINES) def draw(self, context): layout = self.layout @@ -874,8 +862,7 @@ class RENDER_PT_eevee_indirect_lighting(RenderButtonsPanel, Panel): @classmethod def poll(cls, context): - scene = context.scene - return scene and (scene.view_render.engine in cls.COMPAT_ENGINES) + return (context.engine in cls.COMPAT_ENGINES) def draw(self, context): layout = self.layout @@ -895,8 +882,7 @@ class RENDER_PT_eevee_film(RenderButtonsPanel, Panel): @classmethod def poll(cls, context): - scene = context.scene - return scene and (scene.view_render.engine in cls.COMPAT_ENGINES) + return (context.engine in cls.COMPAT_ENGINES) def draw(self, context): layout = self.layout diff --git a/release/scripts/startup/bl_ui/properties_scene.py b/release/scripts/startup/bl_ui/properties_scene.py index d61e99f1e1e..79a7113374b 100644 --- a/release/scripts/startup/bl_ui/properties_scene.py +++ b/release/scripts/startup/bl_ui/properties_scene.py @@ -60,8 +60,7 @@ class SceneButtonsPanel: @classmethod def poll(cls, context): - view_render = context.scene.view_render - return context.scene and (view_render.engine in cls.COMPAT_ENGINES) + return (context.engine in cls.COMPAT_ENGINES) class SCENE_PT_scene(SceneButtonsPanel, Panel): @@ -330,8 +329,7 @@ class SCENE_PT_rigid_body_world(SceneButtonsPanel, Panel): @classmethod def poll(cls, context): - scene = context.scene - return scene and (scene.view_render.engine in cls.COMPAT_ENGINES) + return (context.engine in cls.COMPAT_ENGINES) def draw_header(self, context): scene = context.scene @@ -377,8 +375,7 @@ class SCENE_PT_rigid_body_cache(SceneButtonsPanel, Panel): @classmethod def poll(cls, context): scene = context.scene - view_render = scene.view_render - return scene and scene.rigidbody_world and (view_render.engine in cls.COMPAT_ENGINES) + return scene and scene.rigidbody_world and (context.engine in cls.COMPAT_ENGINES) def draw(self, context): scene = context.scene @@ -394,9 +391,8 @@ class SCENE_PT_rigid_body_field_weights(SceneButtonsPanel, Panel): @classmethod def poll(cls, context): - view_render = context.scene.view_render scene = context.scene - return scene and scene.rigidbody_world and (view_render.engine in cls.COMPAT_ENGINES) + return scene and scene.rigidbody_world and (context.engine in cls.COMPAT_ENGINES) def draw(self, context): scene = context.scene diff --git a/release/scripts/startup/bl_ui/properties_view_layer.py b/release/scripts/startup/bl_ui/properties_view_layer.py index 162f8b89a3e..d43f5c43f28 100644 --- a/release/scripts/startup/bl_ui/properties_view_layer.py +++ b/release/scripts/startup/bl_ui/properties_view_layer.py @@ -29,8 +29,7 @@ class ViewLayerButtonsPanel: @classmethod def poll(cls, context): - scene = context.scene - return scene and (scene.view_render.engine in cls.COMPAT_ENGINES) + return (context.engine in cls.COMPAT_ENGINES) class VIEWLAYER_UL_viewlayers(UIList): @@ -55,7 +54,6 @@ class VIEWLAYER_PT_layers(ViewLayerButtonsPanel, Panel): scene = context.scene rd = scene.render - view_render = scene.view_render row = layout.row() col = row.column() @@ -133,8 +131,7 @@ class VIEWLAYER_PT_clay_settings(ViewLayerButtonsPanel, Panel): @classmethod def poll(cls, context): - scene = context.scene - return scene and (scene.view_render.engine in cls.COMPAT_ENGINES) + return (context.engine in cls.COMPAT_ENGINES) def draw(self, context): layout = self.layout @@ -154,8 +151,7 @@ class VIEWLAYER_PT_eevee_ambient_occlusion(ViewLayerButtonsPanel, Panel): @classmethod def poll(cls, context): - scene = context.scene - return scene and (scene.view_render.engine in cls.COMPAT_ENGINES) + return (context.engine in cls.COMPAT_ENGINES) def draw_header(self, context): scene = context.scene @@ -187,8 +183,7 @@ class VIEWLAYER_PT_eevee_motion_blur(ViewLayerButtonsPanel, Panel): @classmethod def poll(cls, context): - scene = context.scene - return scene and (scene.view_render.engine in cls.COMPAT_ENGINES) + return (context.engine in cls.COMPAT_ENGINES) def draw_header(self, context): scene = context.scene @@ -217,8 +212,7 @@ class VIEWLAYER_PT_eevee_depth_of_field(ViewLayerButtonsPanel, Panel): @classmethod def poll(cls, context): - scene = context.scene - return scene and (scene.view_render.engine in cls.COMPAT_ENGINES) + return (context.engine in cls.COMPAT_ENGINES) def draw_header(self, context): scene = context.scene @@ -247,8 +241,7 @@ class VIEWLAYER_PT_eevee_bloom(ViewLayerButtonsPanel, Panel): @classmethod def poll(cls, context): - scene = context.scene - return scene and (scene.view_render.engine in cls.COMPAT_ENGINES) + return (context.engine in cls.COMPAT_ENGINES) def draw_header(self, context): scene = context.scene @@ -281,8 +274,7 @@ class VIEWLAYER_PT_eevee_volumetric(ViewLayerButtonsPanel, Panel): @classmethod def poll(cls, context): - scene = context.scene - return scene and (scene.view_render.engine in cls.COMPAT_ENGINES) + return (context.engine in cls.COMPAT_ENGINES) def draw_header(self, context): scene = context.scene @@ -319,8 +311,7 @@ class VIEWLAYER_PT_eevee_subsurface_scattering(ViewLayerButtonsPanel, Panel): @classmethod def poll(cls, context): - scene = context.scene - return scene and (scene.view_render.engine in cls.COMPAT_ENGINES) + return (context.engine in cls.COMPAT_ENGINES) def draw_header(self, context): scene = context.scene @@ -350,8 +341,7 @@ class VIEWLAYER_PT_eevee_screen_space_reflections(ViewLayerButtonsPanel, Panel): @classmethod def poll(cls, context): - scene = context.scene - return scene and (scene.view_render.engine in cls.COMPAT_ENGINES) + return (context.engine in cls.COMPAT_ENGINES) def draw_header(self, context): scene = context.scene @@ -385,8 +375,7 @@ class VIEWLAYER_PT_eevee_shadows(ViewLayerButtonsPanel, Panel): @classmethod def poll(cls, context): - scene = context.scene - return scene and (scene.view_render.engine in cls.COMPAT_ENGINES) + return (context.engine in cls.COMPAT_ENGINES) def draw(self, context): layout = self.layout @@ -408,8 +397,7 @@ class VIEWLAYER_PT_eevee_sampling(ViewLayerButtonsPanel, Panel): @classmethod def poll(cls, context): - scene = context.scene - return scene and (scene.view_render.engine in cls.COMPAT_ENGINES) + return (context.engine in cls.COMPAT_ENGINES) def draw(self, context): layout = self.layout @@ -430,8 +418,7 @@ class VIEWLAYER_PT_eevee_indirect_lighting(ViewLayerButtonsPanel, Panel): @classmethod def poll(cls, context): - scene = context.scene - return scene and (scene.view_render.engine in cls.COMPAT_ENGINES) + return (context.engine in cls.COMPAT_ENGINES) def draw(self, context): layout = self.layout diff --git a/release/scripts/startup/bl_ui/properties_world.py b/release/scripts/startup/bl_ui/properties_world.py index abf17b96064..045ddc0aa59 100644 --- a/release/scripts/startup/bl_ui/properties_world.py +++ b/release/scripts/startup/bl_ui/properties_world.py @@ -41,8 +41,7 @@ class WORLD_PT_context_world(WorldButtonsPanel, Panel): @classmethod def poll(cls, context): - view_render = context.scene.view_render - return view_render.engine in cls.COMPAT_ENGINES + return (context.engine in cls.COMPAT_ENGINES) def draw(self, context): layout = self.layout diff --git a/release/scripts/startup/bl_ui/space_info.py b/release/scripts/startup/bl_ui/space_info.py index b6c845c5995..35b3d46c678 100644 --- a/release/scripts/startup/bl_ui/space_info.py +++ b/release/scripts/startup/bl_ui/space_info.py @@ -32,7 +32,6 @@ class INFO_HT_header(Header): screen = context.screen scene = context.scene layer = context.view_layer - view_render = workspace.view_render row = layout.row(align=True) row.template_header() @@ -57,9 +56,6 @@ class INFO_HT_header(Header): # Active workspace view-layer is retrieved through window, not through workspace. row.template_search(window, "view_layer", scene, "view_layers") - if view_render.has_multiple_engines: - row.prop(view_render, "engine", text="") - layout.separator() layout.template_ID(window, "scene", new="scene.new", unlink="scene.delete") @@ -97,8 +93,6 @@ class INFO_MT_editor_menus(Menu): @staticmethod def draw_menus(layout, context): - view_render = context.view_render - layout.menu("INFO_MT_file") layout.menu("INFO_MT_render") layout.menu("INFO_MT_window") diff --git a/release/scripts/startup/bl_ui/space_node.py b/release/scripts/startup/bl_ui/space_node.py index 2f98585f538..8b199d7eef1 100644 --- a/release/scripts/startup/bl_ui/space_node.py +++ b/release/scripts/startup/bl_ui/space_node.py @@ -51,7 +51,7 @@ class NODE_HT_header(Header): NODE_MT_editor_menus.draw_collapsible(context, layout) layout.prop(snode, "tree_type", text="", expand=True) - use_shading_nodes = scene.view_render.use_shading_nodes or context.view_render.use_shading_nodes + use_shading_nodes = scene.render.use_shading_nodes if snode.tree_type == 'ShaderNodeTree': if use_shading_nodes: diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py index af032a7e75d..731295ed330 100644 --- a/release/scripts/startup/bl_ui/space_view3d.py +++ b/release/scripts/startup/bl_ui/space_view3d.py @@ -1547,7 +1547,7 @@ class VIEW3D_MT_object_specials(Menu): lamp = obj.data layout.operator_context = 'INVOKE_REGION_WIN' - use_shading_nodes = context.view_render.use_shading_nodes + use_shading_nodes = scene.render.use_shading_nodes if use_shading_nodes: emission_node = None diff --git a/release/scripts/startup/nodeitems_builtins.py b/release/scripts/startup/nodeitems_builtins.py index bb3eb1a7856..a92b25670fc 100644 --- a/release/scripts/startup/nodeitems_builtins.py +++ b/release/scripts/startup/nodeitems_builtins.py @@ -47,14 +47,14 @@ class ShaderNewNodeCategory(SortedNodeCategory): @classmethod def poll(cls, context): return (context.space_data.tree_type == 'ShaderNodeTree' and - context.view_render.use_shading_nodes) + context.scene.render.use_shading_nodes) class ShaderOldNodeCategory(SortedNodeCategory): @classmethod def poll(cls, context): return (context.space_data.tree_type == 'ShaderNodeTree' and - not context.view_render.use_shading_nodes) + not context.scene.render.use_shading_nodes) class TextureNodeCategory(SortedNodeCategory): @@ -142,11 +142,11 @@ def object_shader_nodes_poll(context): def cycles_shader_nodes_poll(context): - return context.view_render.engine == 'CYCLES' + return context.engine == 'CYCLES' def eevee_shader_nodes_poll(context): - return context.view_render.engine == 'BLENDER_EEVEE' + return context.engine == 'BLENDER_EEVEE' def eevee_cycles_shader_nodes_poll(context): diff --git a/source/blender/blenkernel/BKE_blender_version.h b/source/blender/blenkernel/BKE_blender_version.h index 1e970291c01..0c22edc5430 100644 --- a/source/blender/blenkernel/BKE_blender_version.h +++ b/source/blender/blenkernel/BKE_blender_version.h @@ -28,7 +28,7 @@ * and keep comment above the defines. * Use STRINGIFY() rather than defining with quotes */ #define BLENDER_VERSION 280 -#define BLENDER_SUBVERSION 6 +#define BLENDER_SUBVERSION 7 /* Several breakages with 270, e.g. constraint deg vs rad */ #define BLENDER_MINVERSION 270 #define BLENDER_MINSUBVERSION 6 diff --git a/source/blender/blenkernel/BKE_context.h b/source/blender/blenkernel/BKE_context.h index 3d722f5324e..8a478a7ae59 100644 --- a/source/blender/blenkernel/BKE_context.h +++ b/source/blender/blenkernel/BKE_context.h @@ -259,7 +259,6 @@ struct Scene *CTX_data_scene(const bContext *C); struct LayerCollection *CTX_data_layer_collection(const bContext *C); struct SceneCollection *CTX_data_scene_collection(const bContext *C); struct ViewLayer *CTX_data_view_layer(const bContext *C); -struct ViewRender *CTX_data_view_render(const bContext *C); struct RenderEngineType *CTX_data_engine_type(const bContext *C); struct ToolSettings *CTX_data_tool_settings(const bContext *C); diff --git a/source/blender/blenkernel/BKE_node.h b/source/blender/blenkernel/BKE_node.h index aa09e2fd5c3..2907b568c00 100644 --- a/source/blender/blenkernel/BKE_node.h +++ b/source/blender/blenkernel/BKE_node.h @@ -283,7 +283,7 @@ typedef struct bNodeTreeType { /* callbacks */ void (*free_cache)(struct bNodeTree *ntree); void (*free_node_cache)(struct bNodeTree *ntree, struct bNode *node); - void (*foreach_nodeclass)(struct ViewRender *view_render, void *calldata, bNodeClassCallback func); /* iteration over all node classes */ + void (*foreach_nodeclass)(struct Scene *scene, void *calldata, bNodeClassCallback func); /* iteration over all node classes */ /* Check visibility in the node editor */ int (*poll)(const struct bContext *C, struct bNodeTreeType *ntreetype); /* Select a node tree from the context */ diff --git a/source/blender/blenkernel/BKE_scene.h b/source/blender/blenkernel/BKE_scene.h index 8036673cbdf..75392c42bf3 100644 --- a/source/blender/blenkernel/BKE_scene.h +++ b/source/blender/blenkernel/BKE_scene.h @@ -173,19 +173,6 @@ int BKE_render_preview_pixel_size(const struct RenderData *r); /**********************************/ -struct ViewRender *BKE_viewrender_get(struct Scene *scene, struct WorkSpace *workspace); -void BKE_viewrender_init(struct ViewRender *view_render); -void BKE_viewrender_free(struct ViewRender *view_render); -void BKE_viewrender_copy(struct ViewRender *view_render_dst, const struct ViewRender *view_render_src); -bool BKE_viewrender_use_new_shading_nodes(const struct ViewRender *view_render); -bool BKE_viewrender_use_shading_nodes_custom(const struct ViewRender *view_render); -bool BKE_viewrender_use_world_space_shading(const struct ViewRender *view_render); -bool BKE_viewrender_use_spherical_stereo(const struct ViewRender *view_render); -bool BKE_viewrender_uses_blender_internal(const struct ViewRender *view_render); -bool BKE_viewrender_uses_blender_eevee(const struct ViewRender *view_render); - -/**********************************/ - double BKE_scene_unit_scale(const struct UnitSettings *unit, const int unit_type, double value); /* multiview */ diff --git a/source/blender/blenkernel/BKE_sequencer.h b/source/blender/blenkernel/BKE_sequencer.h index 1a0e61b0dd6..c0116f6dd56 100644 --- a/source/blender/blenkernel/BKE_sequencer.h +++ b/source/blender/blenkernel/BKE_sequencer.h @@ -437,9 +437,9 @@ enum { typedef struct ImBuf *(*SequencerDrawView)( struct Depsgraph *depsgraph, struct Scene *scene, - struct ViewLayer *view_layer, struct RenderEngineType *engine_type, + struct ViewLayer *view_layer, int drawtype, struct Object *camera, int width, int height, - unsigned int flag, unsigned int draw_flags, int drawtype, int alpha_mode, + unsigned int flag, unsigned int draw_flags, int alpha_mode, int samples, const char *viewname, struct GPUOffScreen *ofs, char err_out[256]); extern SequencerDrawView sequencer_view3d_cb; diff --git a/source/blender/blenkernel/BKE_workspace.h b/source/blender/blenkernel/BKE_workspace.h index 3d28b66dd20..5dee6b8c44f 100644 --- a/source/blender/blenkernel/BKE_workspace.h +++ b/source/blender/blenkernel/BKE_workspace.h @@ -109,8 +109,6 @@ struct WorkSpaceLayout *BKE_workspace_hook_layout_for_workspace_get( void BKE_workspace_hook_layout_for_workspace_set( struct WorkSpaceInstanceHook *hook, struct WorkSpace *workspace, struct WorkSpaceLayout *layout) ATTR_NONNULL(); -struct ViewRender *BKE_workspace_view_render_get(struct WorkSpace *workspace) GETTER_ATTRS; - /* flags */ bool BKE_workspace_use_scene_settings_get(const struct WorkSpace *workspace) GETTER_ATTRS; void BKE_workspace_use_scene_settings_set(struct WorkSpace *workspace, bool value) SETTER_ATTRS; diff --git a/source/blender/blenkernel/intern/context.c b/source/blender/blenkernel/intern/context.c index 351e43706dd..f5a0d4e7c60 100644 --- a/source/blender/blenkernel/intern/context.c +++ b/source/blender/blenkernel/intern/context.c @@ -930,24 +930,10 @@ ViewLayer *CTX_data_view_layer(const bContext *C) } } -ViewRender *CTX_data_view_render(const bContext *C) -{ - ViewRender *view_render; - - if (ctx_data_pointer_verify(C, "view_render", (void *)&view_render)) { - return view_render; - } - else { - Scene *scene = CTX_data_scene(C); - WorkSpace *workspace = CTX_wm_workspace(C); - return BKE_viewrender_get(scene, workspace); - } -} - RenderEngineType *CTX_data_engine_type(const bContext *C) { - ViewRender *view_render = CTX_data_view_render(C); - return RE_engines_find(view_render->engine_id); + Scene *scene = CTX_data_scene(C); + return RE_engines_find(scene->r.engine); } /** diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index e68d1db3e4a..51a4e8bfd66 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -744,7 +744,7 @@ void BKE_scene_init(Scene *sce) sce->r.ffcodecdata.audio_bitrate = 192; sce->r.ffcodecdata.audio_channels = 2; - BKE_viewrender_init(&sce->view_render); + BLI_strncpy(sce->r.engine, RE_engine_id_BLENDER_EEVEE, sizeof(sce->r.engine)); sce->audio.distance_model = 2.0f; sce->audio.doppler_factor = 1.0f; @@ -1280,21 +1280,19 @@ static bool check_rendered_viewport_visible(Main *bmain) wmWindow *window; for (window = wm->windows.first; window != NULL; window = window->next) { const bScreen *screen = BKE_workspace_active_screen_get(window->workspace_hook); - WorkSpace *workspace = BKE_workspace_active_get(window->workspace_hook); Scene *scene = window->scene; - ViewRender *view_render = BKE_viewrender_get(scene, workspace); - ScrArea *area; - RenderEngineType *type = RE_engines_find(view_render->engine_id); - if ((type->draw_engine != NULL) || (type->render_to_view == NULL)) { + RenderEngineType *type = RE_engines_find(scene->r.engine); + + if (type->draw_engine || !type->render_to_view) { continue; } - const bool use_legacy = (type->flag & RE_USE_LEGACY_PIPELINE) != 0; - for (area = screen->areabase.first; area != NULL; area = area->next) { + + for (ScrArea *area = screen->areabase.first; area != NULL; area = area->next) { View3D *v3d = area->spacedata.first; if (area->spacetype != SPACE_VIEW3D) { continue; } - if (v3d->drawtype == OB_RENDER || !use_legacy) { + if (v3d->drawtype == OB_RENDER) { return true; } } @@ -1529,34 +1527,37 @@ next_set: bool BKE_scene_use_new_shading_nodes(const Scene *scene) { - return BKE_viewrender_use_new_shading_nodes(&scene->view_render); + const RenderEngineType *type = RE_engines_find(scene->r.engine); + return (type && type->flag & RE_USE_SHADING_NODES); } bool BKE_scene_use_shading_nodes_custom(Scene *scene) { - return BKE_viewrender_use_shading_nodes_custom(&scene->view_render); + RenderEngineType *type = RE_engines_find(scene->r.engine); + return (type && type->flag & RE_USE_SHADING_NODES_CUSTOM); } bool BKE_scene_use_world_space_shading(Scene *scene) { - RenderEngineType *type = RE_engines_find(scene->view_render.engine_id); + const RenderEngineType *type = RE_engines_find(scene->r.engine); return ((scene->r.mode & R_USE_WS_SHADING) || (type && (type->flag & RE_USE_SHADING_NODES))); } bool BKE_scene_use_spherical_stereo(Scene *scene) { - return BKE_viewrender_use_spherical_stereo(&scene->view_render); + RenderEngineType *type = RE_engines_find(scene->r.engine); + return (type && type->flag & RE_USE_SPHERICAL_STEREO); } bool BKE_scene_uses_blender_internal(const Scene *scene) { - return BKE_viewrender_uses_blender_internal(&scene->view_render); + return STREQ(scene->r.engine, RE_engine_id_BLENDER_RENDER); } bool BKE_scene_uses_blender_eevee(const Scene *scene) { - return BKE_viewrender_uses_blender_eevee(&scene->view_render); + return STREQ(scene->r.engine, RE_engine_id_BLENDER_EEVEE); } void BKE_scene_base_flag_to_objects(ViewLayer *view_layer) @@ -1661,75 +1662,6 @@ int BKE_render_preview_pixel_size(const RenderData *r) return r->preview_pixel_size; } -/* ***************************************************** */ -/* render engine settings */ - -ViewRender *BKE_viewrender_get(Scene *scene, WorkSpace *workspace) -{ - if (workspace == NULL || BKE_workspace_use_scene_settings_get(workspace)) { - return &scene->view_render; - } - return BKE_workspace_view_render_get(workspace); -} - -/** - * Initialize a static created struct for WorkSpace and Scene to store the viewport - * related drawing data. - */ -void BKE_viewrender_init(ViewRender *view_render) -{ - BLI_strncpy(view_render->engine_id, RE_engine_id_BLENDER_EEVEE, sizeof(view_render->engine_id)); -} - -/** - * Do not free ViewRender itself since it's not even allocated. - */ -void BKE_viewrender_free(ViewRender *UNUSED(view_render)) -{ - /* Do nothing. */ -} - -/** - * Copy used by libblock copying. - */ -void BKE_viewrender_copy(ViewRender *to, const ViewRender *from) -{ - *to = *from; -} - -bool BKE_viewrender_use_new_shading_nodes(const ViewRender *view_render) -{ - RenderEngineType *type = RE_engines_find(view_render->engine_id); - return (type && type->flag & RE_USE_SHADING_NODES); -} - -bool BKE_viewrender_use_shading_nodes_custom(const ViewRender *view_render) -{ - RenderEngineType *type = RE_engines_find(view_render->engine_id); - return (type && type->flag & RE_USE_SHADING_NODES_CUSTOM); -} - -bool BKE_viewrender_use_spherical_stereo(const ViewRender *view_render) -{ - const char *engine_id = view_render->engine_id; - RenderEngineType *type = RE_engines_find(engine_id); - return (type && type->flag & RE_USE_SPHERICAL_STEREO); -} - -bool BKE_viewrender_uses_blender_internal(const ViewRender *view_render) -{ - const char *engine_id = view_render->engine_id; - return STREQ(engine_id, RE_engine_id_BLENDER_RENDER); -} - -bool BKE_viewrender_uses_blender_eevee(const ViewRender *view_render) -{ - const char *engine_id = view_render->engine_id; - return STREQ(engine_id, RE_engine_id_BLENDER_EEVEE); -} - -/* ***************************************************** */ - /* Apply the needed correction factor to value, based on unit_type (only length-related are affected currently) * and unit->scale_length. */ diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index 4f8e4b0b842..f7871c0fa0b 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -3333,14 +3333,14 @@ static ImBuf *seq_render_scene_strip(const SeqRenderData *context, Sequence *seq context->scene->r.seq_prev_type = 3 /* == OB_SOLID */; /* opengl offscreen render */ - RenderEngineType *engine_type = RE_engines_find(scene->view_render.engine_id); depsgraph = BKE_scene_get_depsgraph(scene, view_layer, true); BKE_scene_graph_update_for_newframe(depsgraph, context->bmain); ibuf = sequencer_view3d_cb( /* set for OpenGL render (NULL when scrubbing) */ - depsgraph, scene, view_layer, engine_type, + depsgraph, scene, view_layer, + context->scene->r.seq_prev_type, camera, width, height, IB_rect, - draw_flags, context->scene->r.seq_prev_type, + draw_flags, scene->r.alphamode, context->gpu_samples, viewname, context->gpu_offscreen, err_out); if (ibuf == NULL) { diff --git a/source/blender/blenkernel/intern/workspace.c b/source/blender/blenkernel/intern/workspace.c index 466848fa6b1..8de62f82c1b 100644 --- a/source/blender/blenkernel/intern/workspace.c +++ b/source/blender/blenkernel/intern/workspace.c @@ -171,8 +171,6 @@ void BKE_workspace_free(WorkSpace *workspace) BLI_freelistN(&workspace->owner_ids); BLI_freelistN(&workspace->layouts); - - BKE_viewrender_free(&workspace->view_render); } /** @@ -442,14 +440,6 @@ void BKE_workspace_hook_layout_for_workspace_set( workspace_relation_ensure_updated(&workspace->hook_layout_relations, hook, layout); } -/** - * Get the render engine of a workspace, to be used in the viewport. - */ -ViewRender *BKE_workspace_view_render_get(WorkSpace *workspace) -{ - return &workspace->view_render; -} - /* Flags */ bool BKE_workspace_use_scene_settings_get(const WorkSpace *workspace) { diff --git a/source/blender/blenloader/intern/versioning_280.c b/source/blender/blenloader/intern/versioning_280.c index 490344d30fa..b2bb2fd792b 100644 --- a/source/blender/blenloader/intern/versioning_280.c +++ b/source/blender/blenloader/intern/versioning_280.c @@ -107,14 +107,6 @@ static void do_version_workspaces_create_from_screens(Main *bmain) } BKE_workspace_layout_add(workspace, screen, screen->id.name + 2); BKE_workspace_view_layer_set(workspace, layer, scene); - -#ifdef WITH_CLAY_ENGINE - BLI_strncpy(workspace->view_render.engine_id, RE_engine_id_BLENDER_CLAY, - sizeof(workspace->view_render.engine_id)); -#else - BLI_strncpy(workspace->view_render.engine_id, RE_engine_id_BLENDER_EEVEE, - sizeof(workspace->view_render.engine_id)); -#endif } } @@ -828,17 +820,6 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *main) printf("You need to combine transparency and emission shaders to the converted Principled shader nodes.\n"); } - if (!DNA_struct_elem_find(fd->filesdna, "Scene", "ViewRender", "view_render")) { - for (Scene *scene = main->scene.first; scene; scene = scene->id.next) { - BLI_strncpy_utf8(scene->view_render.engine_id, scene->r.engine, - sizeof(scene->view_render.engine_id)); - } - - for (WorkSpace *workspace = main->workspaces.first; workspace; workspace = workspace->id.next) { - BKE_viewrender_init(&workspace->view_render); - } - } - if ((DNA_struct_elem_find(fd->filesdna, "ViewLayer", "FreestyleConfig", "freestyle_config") == false) && DNA_struct_elem_find(fd->filesdna, "Scene", "ListBase", "view_layers")) { @@ -945,4 +926,15 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *main) } } } + + if (!MAIN_VERSION_ATLEAST(main, 280, 7)) { + /* Render engine storage moved elsewhere and back during 2.8 + * development, we assume any files saved in 2.8 had Eevee set + * as scene render engine. */ + if (MAIN_VERSION_ATLEAST(main, 280, 0)) { + for (Scene *scene = main->scene.first; scene; scene = scene->id.next) { + BLI_strncpy(scene->r.engine, RE_engine_id_BLENDER_EEVEE, sizeof(scene->r.engine)); + } + } + } } diff --git a/source/blender/blenloader/intern/versioning_defaults.c b/source/blender/blenloader/intern/versioning_defaults.c index 74becdc67da..1e27ab64f48 100644 --- a/source/blender/blenloader/intern/versioning_defaults.c +++ b/source/blender/blenloader/intern/versioning_defaults.c @@ -104,7 +104,6 @@ static void update_defaults_startup_workspaces(Main *bmain) if (STREQ(workspace->id.name + 2, "Default")) { /* don't rename within iterator, renaming causes listbase to be re-sorted */ workspace_default = workspace; - BKE_viewrender_init(&workspace->view_render); } else { BKE_workspace_remove(bmain, workspace); @@ -122,7 +121,7 @@ static void update_defaults_startup_workspaces(Main *bmain) void BLO_update_defaults_startup_blend(Main *bmain) { for (Scene *scene = bmain->scene.first; scene; scene = scene->id.next) { - BLI_strncpy(scene->view_render.engine_id, RE_engine_id_BLENDER_EEVEE, sizeof(scene->view_render.engine_id)); + BLI_strncpy(scene->r.engine, RE_engine_id_BLENDER_EEVEE, sizeof(scene->r.engine)); scene->r.im_format.planes = R_IMF_PLANES_RGBA; scene->r.im_format.compress = 15; diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c index 2ab661aa5dd..66de79314b4 100644 --- a/source/blender/draw/intern/draw_manager.c +++ b/source/blender/draw/intern/draw_manager.c @@ -895,33 +895,27 @@ static void drw_engines_enable_external(void) /* TODO revisit this when proper layering is implemented */ /* Gather all draw engines needed and store them in DST.enabled_engines * That also define the rendering order of engines */ -static void drw_engines_enable_from_engine(RenderEngineType *engine_type, int draw_mode, - int UNUSED(draw_mode_wireframe), int draw_mode_solid, int UNUSED(draw_mode_texture)) +static void drw_engines_enable_from_engine(RenderEngineType *engine_type, int drawtype, + int UNUSED(drawtype_wireframe), int drawtype_solid, int UNUSED(drawtype_texture)) { - switch (draw_mode) { + switch (drawtype) { case OB_WIRE: break; case OB_SOLID: - if (draw_mode_solid == OB_LIGHTING_FLAT) { + if (drawtype_solid == OB_LIGHTING_FLAT) { use_drw_engine(&draw_engine_workbench_solid_flat); - } else if (draw_mode_solid == OB_LIGHTING_STUDIO) { + } else if (drawtype_solid == OB_LIGHTING_STUDIO) { use_drw_engine(&draw_engine_workbench_solid_studio); } break; case OB_TEXTURE: - break; - case OB_MATERIAL: - engine_type = RE_engines_find("BLENDER_EEVEE"); - use_drw_engine(engine_type->draw_engine); - break; - - default: case OB_RENDER: + default: /* TODO layers */ if (engine_type->draw_engine != NULL) { use_drw_engine(engine_type->draw_engine); @@ -1003,12 +997,12 @@ static void drw_engines_enable(ViewLayer *view_layer, RenderEngineType *engine_t Object *obact = OBACT(view_layer); const int mode = CTX_data_mode_enum_ex(DST.draw_ctx.object_edit, obact, DST.draw_ctx.object_mode); View3D * v3d = DST.draw_ctx.v3d; - const int draw_mode = v3d->drawtype; - const int draw_mode_wireframe = v3d->drawtype_wireframe; - const int draw_mode_solid = v3d->drawtype_solid; - const int draw_mode_texture = v3d->drawtype_texture; + const int drawtype = v3d->drawtype; + const int drawtype_wireframe = v3d->drawtype_wireframe; + const int drawtype_solid = v3d->drawtype_solid; + const int drawtype_texture = v3d->drawtype_texture; - drw_engines_enable_from_engine(engine_type, draw_mode, draw_mode_wireframe, draw_mode_solid, draw_mode_texture); + drw_engines_enable_from_engine(engine_type, drawtype, drawtype_wireframe, drawtype_solid, drawtype_texture); if (DRW_state_draw_support()) { drw_engines_enable_from_object_mode(); @@ -1144,9 +1138,10 @@ void DRW_notify_id_update(const DRWUpdateContext *update_ctx, ID *id) void DRW_draw_view(const bContext *C) { Depsgraph *depsgraph = CTX_data_depsgraph(C); - RenderEngineType *engine_type = CTX_data_engine_type(C); ARegion *ar = CTX_wm_region(C); View3D *v3d = CTX_wm_view3d(C); + Scene *scene = DEG_get_evaluated_scene(depsgraph); + RenderEngineType *engine_type = ED_view3d_engine_type(scene, v3d->drawtype); /* Reset before using it. */ drw_state_prepare_clean_for_draw(&DST); @@ -1311,7 +1306,7 @@ void DRW_draw_render_loop( drw_state_prepare_clean_for_draw(&DST); Scene *scene = DEG_get_evaluated_scene(depsgraph); - RenderEngineType *engine_type = RE_engines_find(scene->view_render.engine_id); + RenderEngineType *engine_type = ED_view3d_engine_type(scene, v3d->drawtype); DRW_draw_render_loop_ex(depsgraph, engine_type, ar, v3d, NULL); } @@ -1506,7 +1501,7 @@ void DRW_draw_select_loop( DRW_SelectPassFn select_pass_fn, void *select_pass_user_data) { Scene *scene = DEG_get_evaluated_scene(depsgraph); - RenderEngineType *engine_type = RE_engines_find(scene->view_render.engine_id); + RenderEngineType *engine_type = ED_view3d_engine_type(scene, v3d->drawtype); ViewLayer *view_layer = DEG_get_evaluated_view_layer(depsgraph); Object *obact = OBACT(view_layer); Object *obedit = OBEDIT_FROM_OBACT(obact); @@ -1698,7 +1693,7 @@ void DRW_draw_depth_loop( ARegion *ar, View3D *v3d) { Scene *scene = DEG_get_evaluated_scene(depsgraph); - RenderEngineType *engine_type = RE_engines_find(scene->view_render.engine_id); + RenderEngineType *engine_type = ED_view3d_engine_type(scene, v3d->drawtype); ViewLayer *view_layer = DEG_get_evaluated_view_layer(depsgraph); RegionView3D *rv3d = ar->regiondata; diff --git a/source/blender/editors/include/ED_screen.h b/source/blender/editors/include/ED_screen.h index db19bc48fb3..0a1ddabb294 100644 --- a/source/blender/editors/include/ED_screen.h +++ b/source/blender/editors/include/ED_screen.h @@ -157,8 +157,7 @@ struct WorkSpace *ED_workspace_add( struct Main *bmain, const char *name, Scene *scene, - ViewLayer *act_render_layer, - struct ViewRender *view_render) ATTR_NONNULL(); + ViewLayer *act_render_layer) ATTR_NONNULL(); bool ED_workspace_change( struct WorkSpace *workspace_new, struct bContext *C, diff --git a/source/blender/editors/include/ED_view3d.h b/source/blender/editors/include/ED_view3d.h index c394060dfba..9cc4cb692e3 100644 --- a/source/blender/editors/include/ED_view3d.h +++ b/source/blender/editors/include/ED_view3d.h @@ -78,7 +78,6 @@ typedef struct ViewContext { struct Depsgraph *depsgraph; struct Scene *scene; struct ViewLayer *view_layer; - struct RenderEngineType *engine_type; struct Object *obact; struct Object *obedit; struct ARegion *ar; @@ -380,14 +379,16 @@ void ED_view3d_mats_rv3d_restore(struct RegionView3D *rv3d, s void ED_draw_object_facemap(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, const float col[4], const int facemap); +struct RenderEngineType *ED_view3d_engine_type(struct Scene *scene, int drawtype); + bool ED_view3d_context_activate(struct bContext *C); void ED_view3d_draw_offscreen_init( struct Depsgraph *depsgraph, struct Scene *scene, - struct ViewLayer *view_layer, struct RenderEngineType *engine_type, - struct View3D *v3d); + struct ViewLayer *view_layer, struct View3D *v3d, + int drawtype); void ED_view3d_draw_offscreen( struct Depsgraph *depsgraph, struct Scene *scene, - struct ViewLayer *view_layer, struct RenderEngineType *engine_type, + struct ViewLayer *view_layer, int drawtype, struct View3D *v3d, struct ARegion *ar, int winx, int winy, float viewmat[4][4], float winmat[4][4], bool do_bgpic, bool do_sky, bool is_persp, const char *viewname, struct GPUFXSettings *fx_settings, @@ -410,16 +411,16 @@ enum { struct ImBuf *ED_view3d_draw_offscreen_imbuf( struct Depsgraph *depsgraph, struct Scene *scene, - struct ViewLayer *view_layer, struct RenderEngineType *engine_type, + struct ViewLayer *view_layer, int drawtype, struct View3D *v3d, struct ARegion *ar, int sizex, int sizey, unsigned int flag, unsigned int draw_flags, int alpha_mode, int samples, const char *viewname, struct GPUOffScreen *ofs, char err_out[256]); struct ImBuf *ED_view3d_draw_offscreen_imbuf_simple( struct Depsgraph *depsgraph, struct Scene *scene, - struct ViewLayer *view_layer, struct RenderEngineType *engine_type, + struct ViewLayer *view_layer, int drawtype, struct Object *camera, int width, int height, - unsigned int flag, unsigned int draw_flags, int drawtype, int alpha_mode, + unsigned int flag, unsigned int draw_flags, int alpha_mode, int samples, const char *viewname, struct GPUOffScreen *ofs, char err_out[256]); diff --git a/source/blender/editors/render/render_internal.c b/source/blender/editors/render/render_internal.c index 965e213631d..22e62c9ba0a 100644 --- a/source/blender/editors/render/render_internal.c +++ b/source/blender/editors/render/render_internal.c @@ -298,7 +298,7 @@ static void screen_render_view_layer_set(wmOperator *op, Main *mainp, Scene **sc static int screen_render_exec(bContext *C, wmOperator *op) { Scene *scene = CTX_data_scene(C); - RenderEngineType *re_type = RE_engines_find(scene->view_render.engine_id); + RenderEngineType *re_type = RE_engines_find(scene->r.engine); ViewLayer *view_layer = NULL; Render *re; Image *ima; @@ -863,7 +863,7 @@ static int screen_render_invoke(bContext *C, wmOperator *op, const wmEvent *even Main *mainp; ViewLayer *view_layer = NULL; Scene *scene = CTX_data_scene(C); - RenderEngineType *re_type = RE_engines_find(scene->view_render.engine_id); + RenderEngineType *re_type = RE_engines_find(scene->r.engine); Render *re; wmJob *wm_job; RenderJob *rj; @@ -1310,10 +1310,10 @@ static void render_view3d_startjob(void *customdata, short *stop, short *do_upda /* initalize always */ if (use_border) { rdata.mode |= R_BORDER; - RE_InitState(re, NULL, &rdata, &rp->scene->view_layers, rp->scene->active_view_layer, &rp->scene->view_render, NULL, rp->ar->winx, rp->ar->winy, &cliprct); + RE_InitState(re, NULL, &rdata, &rp->scene->view_layers, rp->scene->active_view_layer, NULL, rp->ar->winx, rp->ar->winy, &cliprct); } else - RE_InitState(re, NULL, &rdata, &rp->scene->view_layers, rp->scene->active_view_layer, &rp->scene->view_render, NULL, rp->ar->winx, rp->ar->winy, NULL); + RE_InitState(re, NULL, &rdata, &rp->scene->view_layers, rp->scene->active_view_layer, NULL, rp->ar->winx, rp->ar->winy, NULL); } if (orth) diff --git a/source/blender/editors/render/render_opengl.c b/source/blender/editors/render/render_opengl.c index a334d3abc68..840c5c2b5aa 100644 --- a/source/blender/editors/render/render_opengl.c +++ b/source/blender/editors/render/render_opengl.c @@ -351,7 +351,6 @@ static void screen_opengl_render_doit(const bContext *C, OGLRender *oglrender, R char err_out[256] = "unknown"; ImBuf *ibuf_view; const int alpha_mode = (draw_sky) ? R_ADDSKY : R_ALPHAPREMUL; - struct RenderEngineType *engine_type = CTX_data_engine_type(C); unsigned int draw_flags = V3D_OFSDRAW_NONE; draw_flags |= (oglrender->ofs_full_samples) ? V3D_OFSDRAW_USE_FULL_SAMPLE : 0; @@ -360,7 +359,7 @@ static void screen_opengl_render_doit(const bContext *C, OGLRender *oglrender, R draw_flags |= (draw_bgpic) ? V3D_OFSDRAW_USE_BACKGROUND : 0; ibuf_view = ED_view3d_draw_offscreen_imbuf( - depsgraph, scene, view_layer, engine_type, + depsgraph, scene, view_layer, v3d->drawtype, v3d, ar, sizex, sizey, IB_rectfloat, draw_flags, alpha_mode, oglrender->ofs_samples, viewname, oglrender->ofs, err_out); @@ -373,9 +372,9 @@ static void screen_opengl_render_doit(const bContext *C, OGLRender *oglrender, R else { draw_flags |= (V3D_OFSDRAW_USE_GPENCIL | V3D_OFSDRAW_USE_BACKGROUND); ibuf_view = ED_view3d_draw_offscreen_imbuf_simple( - depsgraph, scene, view_layer, engine_type, + depsgraph, scene, view_layer, OB_SOLID, scene->camera, oglrender->sizex, oglrender->sizey, - IB_rectfloat, draw_flags, OB_SOLID, + IB_rectfloat, draw_flags, alpha_mode, oglrender->ofs_samples, viewname, oglrender->ofs, err_out); camera = scene->camera; @@ -708,8 +707,6 @@ static bool screen_opengl_render_init(bContext *C, wmOperator *op) /* create render */ oglrender->re = RE_NewSceneRender(scene); - ViewRender *view_render = BKE_viewrender_get(scene, workspace); - RE_SetEngineByID(oglrender->re, view_render->engine_id); /* create image and image user */ oglrender->ima = BKE_image_verify_viewer(IMA_TYPE_R_RESULT, "Render Result"); @@ -720,7 +717,7 @@ static bool screen_opengl_render_init(bContext *C, wmOperator *op) oglrender->iuser.ok = 1; /* create render result */ - RE_InitState(oglrender->re, NULL, &scene->r, &scene->view_layers, scene->active_view_layer, view_render, NULL, sizex, sizey, NULL); + RE_InitState(oglrender->re, NULL, &scene->r, &scene->view_layers, scene->active_view_layer, NULL, sizex, sizey, NULL); /* create render views */ screen_opengl_views_setup(oglrender); diff --git a/source/blender/editors/render/render_preview.c b/source/blender/editors/render/render_preview.c index 4297d4fa316..f2f147ab874 100644 --- a/source/blender/editors/render/render_preview.c +++ b/source/blender/editors/render/render_preview.c @@ -173,7 +173,6 @@ typedef struct ShaderPreview { Main *bmain; Main *pr_main; - ViewRender *view_render; } ShaderPreview; typedef struct IconPreviewSize { @@ -188,7 +187,6 @@ typedef struct IconPreview { void *owner; ID *id; ListBase sizes; - ViewRender *view_render; } IconPreview; /* *************************** Preview for buttons *********************** */ @@ -231,7 +229,7 @@ void ED_preview_ensure_dbase(void) static bool check_engine_supports_textures(Scene *scene) { - RenderEngineType *type = RE_engines_find(scene->view_render.engine_id); + RenderEngineType *type = RE_engines_find(scene->r.engine); return type->flag & RE_USE_TEXTURE_PREVIEW; } @@ -384,10 +382,10 @@ static Scene *preview_prepare_scene(Main *bmain, Scene *scene, ID *id, int id_ty * seems commonly used render engines does not support * such kind of rendering. */ - BLI_strncpy(sce->view_render.engine_id, RE_engine_id_BLENDER_RENDER, sizeof(sce->view_render.engine_id)); + BLI_strncpy(sce->r.engine, RE_engine_id_BLENDER_RENDER, sizeof(sce->r.engine)); } else { - BLI_strncpy(sce->view_render.engine_id, scene->view_render.engine_id, sizeof(sce->view_render.engine_id)); + BLI_strncpy(sce->r.engine, scene->r.engine, sizeof(sce->r.engine)); } if (id_type == ID_MA) { @@ -872,7 +870,7 @@ static void shader_preview_render(ShaderPreview *sp, ID *id, int split, int firs ((Camera *)sce->camera->data)->lens *= (float)sp->sizey / (float)sizex; /* entire cycle for render engine */ - RE_PreviewRender(re, pr_main, sce, sp->view_render); + RE_PreviewRender(re, pr_main, sce); ((Camera *)sce->camera->data)->lens = oldlens; @@ -1199,7 +1197,6 @@ static void icon_preview_startjob_all_sizes(void *customdata, short *stop, short /* construct shader preview from image size and previewcustomdata */ sp->scene = ip->scene; - sp->view_render = ip->view_render; sp->owner = ip->owner; sp->sizex = cur_size->sizex; sp->sizey = cur_size->sizey; @@ -1284,7 +1281,6 @@ void ED_preview_icon_render(Main *bmain, Scene *scene, ID *id, unsigned int *rec ip.bmain = bmain; ip.scene = scene; - ip.view_render = &scene->view_render; ip.owner = BKE_previewimg_id_ensure(id); ip.id = id; @@ -1318,7 +1314,6 @@ void ED_preview_icon_job(const bContext *C, void *owner, ID *id, unsigned int *r /* customdata for preview thread */ ip->bmain = CTX_data_main(C); ip->scene = CTX_data_scene(C); - ip->view_render = &ip->scene->view_render; ip->owner = owner; ip->id = id; @@ -1346,12 +1341,10 @@ void ED_preview_shader_job(const bContext *C, void *owner, ID *id, ID *parent, M wmJob *wm_job; ShaderPreview *sp; Scene *scene = CTX_data_scene(C); - WorkSpace *workspace = CTX_wm_workspace(C); short id_type = GS(id->name); /* Use workspace render only for buttons Window, since the other previews are related to the datablock. */ - ViewRender *view_render = (method == PR_BUTS_RENDER) ? BKE_viewrender_get(scene, workspace) : &scene->view_render; - bool use_new_shading = BKE_viewrender_use_new_shading_nodes(view_render); + bool use_new_shading = BKE_scene_use_new_shading_nodes(scene); /* Only texture node preview is supported with Cycles. */ if (use_new_shading && method == PR_NODE_RENDER && id_type != ID_TE) { @@ -1374,7 +1367,6 @@ void ED_preview_shader_job(const bContext *C, void *owner, ID *id, ID *parent, M sp->parent = parent; sp->slot = slot; sp->bmain = CTX_data_main(C); - sp->view_render = view_render; /* hardcoded preview .blend for Eevee + cycles/internal, this should be solved * once with custom preview .blend path for external engines */ diff --git a/source/blender/editors/render/render_update.c b/source/blender/editors/render/render_update.c index d29985041c6..9ae103ae017 100644 --- a/source/blender/editors/render/render_update.c +++ b/source/blender/editors/render/render_update.c @@ -120,8 +120,6 @@ void ED_render_scene_update(const DEGEditorUpdateContext *update_ctx, int update ARegion *ar; CTX_wm_window_set(C, win); - WorkSpace *workspace = BKE_workspace_active_get(win->workspace_hook); - ViewRender *view_render = BKE_viewrender_get(win->scene, workspace); for (sa = sc->areabase.first; sa; sa = sa->next) { if (sa->spacetype != SPACE_VIEW3D) @@ -147,7 +145,7 @@ void ED_render_scene_update(const DEGEditorUpdateContext *update_ctx, int update } else { - RenderEngineType *engine_type = RE_engines_find(view_render->engine_id); + RenderEngineType *engine_type = RE_engines_find(win->scene->r.engine); if ((engine_type->flag & RE_USE_LEGACY_PIPELINE) == 0) { if (updated) { DRW_notify_view_update( diff --git a/source/blender/editors/screen/workspace_edit.c b/source/blender/editors/screen/workspace_edit.c index b4aea54c66d..b40eef8a38f 100644 --- a/source/blender/editors/screen/workspace_edit.c +++ b/source/blender/editors/screen/workspace_edit.c @@ -76,12 +76,11 @@ WorkSpace *ED_workspace_add( Main *bmain, const char *name, Scene *scene, - ViewLayer *act_view_layer, ViewRender *view_render) + ViewLayer *act_view_layer) { WorkSpace *workspace = BKE_workspace_add(bmain, name); BKE_workspace_view_layer_set(workspace, act_view_layer, scene); - BKE_viewrender_copy(&workspace->view_render, view_render); return workspace; } @@ -223,8 +222,7 @@ WorkSpace *ED_workspace_duplicate( Scene *scene = WM_window_get_active_scene(win); WorkSpace *workspace_new = ED_workspace_add( bmain, workspace_old->id.name + 2, scene, - BKE_workspace_view_layer_get(workspace_old, scene), - &workspace_old->view_render); + BKE_workspace_view_layer_get(workspace_old, scene)); workspace_new->tool = workspace_old->tool; diff --git a/source/blender/editors/sculpt_paint/paint_image_proj.c b/source/blender/editors/sculpt_paint/paint_image_proj.c index 084b3dfbf09..469498f927a 100644 --- a/source/blender/editors/sculpt_paint/paint_image_proj.c +++ b/source/blender/editors/sculpt_paint/paint_image_proj.c @@ -5436,11 +5436,12 @@ static int texture_paint_image_from_view_exec(bContext *C, wmOperator *op) ImBuf *ibuf; char filename[FILE_MAX]; - struct RenderEngineType *engine_type = CTX_data_engine_type(C); Depsgraph *depsgraph = CTX_data_depsgraph(C); Scene *scene = CTX_data_scene(C); ViewLayer *view_layer = CTX_data_view_layer(C); ToolSettings *settings = scene->toolsettings; + View3D *v3d = CTX_wm_view3d(C); + RegionView3D *rv3d = CTX_wm_region_view3d(C); int w = settings->imapaint.screen_grab_size[0]; int h = settings->imapaint.screen_grab_size[1]; int maxsize; @@ -5454,8 +5455,8 @@ static int texture_paint_image_from_view_exec(bContext *C, wmOperator *op) if (h > maxsize) h = maxsize; ibuf = ED_view3d_draw_offscreen_imbuf( - depsgraph, scene, view_layer, engine_type, - CTX_wm_view3d(C), CTX_wm_region(C), + depsgraph, scene, view_layer, v3d->drawtype, + v3d, CTX_wm_region(C), w, h, IB_rect, V3D_OFSDRAW_NONE, R_ALPHAPREMUL, 0, NULL, NULL, err_out); if (!ibuf) { @@ -5473,9 +5474,6 @@ static int texture_paint_image_from_view_exec(bContext *C, wmOperator *op) if (image) { /* now for the trickiness. store the view projection here! * re-projection will reuse this */ - View3D *v3d = CTX_wm_view3d(C); - RegionView3D *rv3d = CTX_wm_region_view3d(C); - IDPropertyTemplate val; IDProperty *idgroup = IDP_GetProperties(&image->id, 1); IDProperty *view_data; diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c index 94c31a7ddb7..b6680d8560f 100644 --- a/source/blender/editors/space_node/node_edit.c +++ b/source/blender/editors/space_node/node_edit.c @@ -383,7 +383,7 @@ bool ED_node_is_texture(struct SpaceNode *snode) /* called from shading buttons or header */ void ED_node_shader_default(const bContext *C, ID *id) { - ViewRender *view_render = CTX_data_view_render(C); + Scene *scene = CTX_data_scene(C); bNode *in, *out; bNodeSocket *fromsock, *tosock, *sock; bNodeTree *ntree; @@ -398,11 +398,11 @@ void ED_node_shader_default(const bContext *C, ID *id) Material *ma = (Material *)id; ma->nodetree = ntree; - if (BKE_viewrender_uses_blender_eevee(view_render)) { + if (BKE_scene_uses_blender_eevee(scene)) { output_type = SH_NODE_OUTPUT_MATERIAL; shader_type = SH_NODE_BSDF_PRINCIPLED; } - else if (BKE_viewrender_use_new_shading_nodes(view_render)) { + else if (BKE_scene_use_new_shading_nodes(scene)) { output_type = SH_NODE_OUTPUT_MATERIAL; shader_type = SH_NODE_BSDF_DIFFUSE; } @@ -460,7 +460,7 @@ void ED_node_shader_default(const bContext *C, ID *id) nodeAddLink(ntree, in, fromsock, out, tosock); /* default values */ - if (BKE_viewrender_use_new_shading_nodes(view_render)) { + if (BKE_scene_use_new_shading_nodes(scene)) { PointerRNA sockptr; sock = in->inputs.first; RNA_pointer_create((ID *)ntree, &RNA_NodeSocket, sock, &sockptr); @@ -2353,7 +2353,7 @@ void NODE_OT_tree_socket_move(wmOperatorType *ot) static int node_shader_script_update_poll(bContext *C) { Scene *scene = CTX_data_scene(C); - RenderEngineType *type = RE_engines_find(scene->view_render.engine_id); + RenderEngineType *type = RE_engines_find(scene->r.engine); SpaceNode *snode = CTX_wm_space_node(C); bNode *node; Text *text; @@ -2423,7 +2423,7 @@ static int node_shader_script_update_exec(bContext *C, wmOperator *op) bool found = false; /* setup render engine */ - type = RE_engines_find(scene->view_render.engine_id); + type = RE_engines_find(scene->r.engine); engine = RE_engine_create(type); engine->reports = op->reports; diff --git a/source/blender/editors/space_node/node_templates.c b/source/blender/editors/space_node/node_templates.c index 241ab60fe43..173c919e38c 100644 --- a/source/blender/editors/space_node/node_templates.c +++ b/source/blender/editors/space_node/node_templates.c @@ -559,7 +559,6 @@ static void ui_template_node_link_menu(bContext *C, uiLayout *layout, void *but_ { Main *bmain = CTX_data_main(C); Scene *scene = CTX_data_scene(C); - ViewRender *view_render = CTX_data_view_render(C); uiBlock *block = uiLayoutGetBlock(layout); uiBut *but = (uiBut *)but_p; uiLayout *split, *column; @@ -576,7 +575,7 @@ static void ui_template_node_link_menu(bContext *C, uiLayout *layout, void *but_ arg->layout = split; if (ntreetype && ntreetype->foreach_nodeclass) - ntreetype->foreach_nodeclass(view_render, arg, node_menu_column_foreach_cb); + ntreetype->foreach_nodeclass(scene, arg, node_menu_column_foreach_cb); column = uiLayoutColumn(split, false); UI_block_layout_set_current(block, column); diff --git a/source/blender/editors/space_node/space_node.c b/source/blender/editors/space_node/space_node.c index e1765e39f7a..6fc5ac62949 100644 --- a/source/blender/editors/space_node/space_node.c +++ b/source/blender/editors/space_node/space_node.c @@ -383,13 +383,12 @@ static void node_init(struct wmWindowManager *UNUSED(wm), ScrArea *UNUSED(sa)) } static void node_area_listener(bScreen *UNUSED(sc), ScrArea *sa, wmNotifier *wmn, Scene *scene, - WorkSpace *workspace) + WorkSpace *UNUSED(workspace)) { /* note, ED_area_tag_refresh will re-execute compositor */ SpaceNode *snode = sa->spacedata.first; - ViewRender *view_render = BKE_viewrender_get(scene, workspace); /* shaderfrom is only used for new shading nodes, otherwise all shaders are from objects */ - short shader_type = BKE_viewrender_use_new_shading_nodes(view_render) ? snode->shaderfrom : SNODE_SHADER_OBJECT; + short shader_type = BKE_scene_use_new_shading_nodes(scene) ? snode->shaderfrom : SNODE_SHADER_OBJECT; /* preview renders */ switch (wmn->category) { diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c index 5a5d1df3a08..883722105ee 100644 --- a/source/blender/editors/space_view3d/space_view3d.c +++ b/source/blender/editors/space_view3d/space_view3d.c @@ -1062,7 +1062,7 @@ static void view3d_main_region_listener( static void view3d_main_region_message_subscribe( const struct bContext *UNUSED(C), - struct WorkSpace *workspace, struct Scene *scene, + struct WorkSpace *UNUSED(workspace), struct Scene *scene, struct bScreen *UNUSED(screen), struct ScrArea *UNUSED(sa), struct ARegion *ar, struct wmMsgBus *mbus) { @@ -1071,7 +1071,6 @@ static void view3d_main_region_message_subscribe( * accepting some redundant redraws. * * For other space types we might try avoid this, keep the 3D view as an exceptional case! */ - ViewRender *view_render = BKE_viewrender_get(scene, workspace); wmMsgParams_RNA msg_key_params = {{{0}}}; /* Only subscribe to types. */ @@ -1089,7 +1088,6 @@ static void view3d_main_region_message_subscribe( &RNA_Object, &RNA_UnitSettings, /* grid-floor */ - &RNA_ViewRenderSettings, &RNA_World, }; @@ -1111,6 +1109,7 @@ static void view3d_main_region_message_subscribe( /* Subscribe to a handful of other properties. */ RegionView3D *rv3d = ar->regiondata; + WM_msg_subscribe_rna_anon_prop(mbus, RenderSettings, engine, &msg_sub_value_region_tag_redraw); WM_msg_subscribe_rna_anon_prop(mbus, RenderSettings, resolution_x, &msg_sub_value_region_tag_redraw); WM_msg_subscribe_rna_anon_prop(mbus, RenderSettings, resolution_y, &msg_sub_value_region_tag_redraw); WM_msg_subscribe_rna_anon_prop(mbus, RenderSettings, pixel_aspect_x, &msg_sub_value_region_tag_redraw); @@ -1121,12 +1120,12 @@ static void view3d_main_region_message_subscribe( /* Each engine could be responsible for its own engine data types. * For now this is simplest. */ - if (STREQ(view_render->engine_id, RE_engine_id_BLENDER_EEVEE)) { + if (STREQ(scene->r.engine, RE_engine_id_BLENDER_EEVEE)) { extern StructRNA RNA_ViewLayerEngineSettingsEevee; WM_msg_subscribe_rna_anon_type(mbus, ViewLayerEngineSettingsEevee, &msg_sub_value_region_tag_redraw); } #ifdef WITH_CLAY_ENGINE - else if (STREQ(view_render->engine_id, RE_engine_id_BLENDER_CLAY)) { + else if (STREQ(scene->r.engine, RE_engine_id_BLENDER_CLAY)) { extern StructRNA RNA_ViewLayerEngineSettingsClay; WM_msg_subscribe_rna_anon_type(mbus, ViewLayerEngineSettingsClay, &msg_sub_value_region_tag_redraw); } diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c index b2115aa2b75..1910f7e27c0 100644 --- a/source/blender/editors/space_view3d/view3d_draw.c +++ b/source/blender/editors/space_view3d/view3d_draw.c @@ -1893,14 +1893,26 @@ static void view3d_draw_view(const bContext *C, ARegion *ar) DRW_draw_view(C); } +RenderEngineType *ED_view3d_engine_type(Scene *scene, int drawtype) +{ + /* Tempory viewport draw modes until we have a proper system. */ + if (drawtype == OB_RENDER) { + return RE_engines_find(scene->r.engine); + } + else if (drawtype == OB_MATERIAL) { + return RE_engines_find(RE_engine_id_BLENDER_EEVEE); + } + else { + return RE_engines_find(RE_engine_id_BLENDER_WORKBENCH); + } +} + void view3d_main_region_draw(const bContext *C, ARegion *ar) { Scene *scene = CTX_data_scene(C); - WorkSpace *workspace = CTX_wm_workspace(C); View3D *v3d = CTX_wm_view3d(C); RegionView3D *rv3d = ar->regiondata; - ViewRender *view_render = BKE_viewrender_get(scene, workspace); - RenderEngineType *type = RE_engines_find(view_render->engine_id); + RenderEngineType *type = ED_view3d_engine_type(scene, v3d->drawtype); /* Provisory Blender Internal drawing */ if (type->flag & RE_USE_LEGACY_PIPELINE) { @@ -1956,12 +1968,14 @@ static void view3d_stereo3d_setup_offscreen( void ED_view3d_draw_offscreen_init(Depsgraph *depsgraph, Scene *scene, ViewLayer *view_layer, - RenderEngineType *engine_type, - View3D *v3d) + View3D *v3d, + int drawtype) { + RenderEngineType *engine_type = ED_view3d_engine_type(scene, drawtype); + if (engine_type->flag & RE_USE_LEGACY_PIPELINE) { /* shadow buffers, before we setup matrices */ - if (draw_glsl_material(scene, view_layer, NULL, v3d, v3d->drawtype)) { + if (draw_glsl_material(scene, view_layer, NULL, v3d, drawtype)) { VP_deprecated_gpu_update_lamps_shadows_world(depsgraph, scene, v3d); } } @@ -1987,7 +2001,7 @@ static void view3d_main_region_clear(Scene *scene, View3D *v3d, ARegion *ar) */ void ED_view3d_draw_offscreen( Depsgraph *depsgraph, Scene *scene, - ViewLayer *view_layer, RenderEngineType *engine_type, + ViewLayer *view_layer, int drawtype, View3D *v3d, ARegion *ar, int winx, int winy, float viewmat[4][4], float winmat[4][4], bool do_bgpic, bool do_sky, bool UNUSED(is_persp), const char *viewname, @@ -2032,6 +2046,8 @@ void ED_view3d_draw_offscreen( view3d_main_region_setup_view(depsgraph, scene, v3d, ar, viewmat, winmat, NULL); /* main drawing call */ + RenderEngineType *engine_type = ED_view3d_engine_type(scene, drawtype); + if (engine_type->flag & RE_USE_LEGACY_PIPELINE) { VP_deprecated_view3d_draw_objects(NULL, depsgraph, scene, v3d, ar, NULL, do_bgpic, true); @@ -2075,7 +2091,7 @@ void ED_view3d_draw_offscreen( */ ImBuf *ED_view3d_draw_offscreen_imbuf( Depsgraph *depsgraph, Scene *scene, - ViewLayer *view_layer, RenderEngineType *engine_type, + ViewLayer *view_layer, int drawtype, View3D *v3d, ARegion *ar, int sizex, int sizey, unsigned int flag, unsigned int draw_flags, int alpha_mode, int samples, const char *viewname, @@ -2109,7 +2125,7 @@ ImBuf *ED_view3d_draw_offscreen_imbuf( } } - ED_view3d_draw_offscreen_init(depsgraph, scene, view_layer, engine_type, v3d); + ED_view3d_draw_offscreen_init(depsgraph, scene, view_layer, v3d, drawtype); GPU_offscreen_bind(ofs, true); @@ -2151,7 +2167,7 @@ ImBuf *ED_view3d_draw_offscreen_imbuf( if ((samples && use_full_sample) == 0) { /* Single-pass render, common case */ ED_view3d_draw_offscreen( - depsgraph, scene, view_layer, engine_type, + depsgraph, scene, view_layer, drawtype, v3d, ar, sizex, sizey, NULL, winmat, draw_background, draw_sky, !is_ortho, viewname, &fx_settings, ofs, NULL); @@ -2176,7 +2192,7 @@ ImBuf *ED_view3d_draw_offscreen_imbuf( /* first sample buffer, also initializes 'rv3d->persmat' */ ED_view3d_draw_offscreen( - depsgraph, scene, view_layer, engine_type, + depsgraph, scene, view_layer, drawtype, v3d, ar, sizex, sizey, NULL, winmat, draw_background, draw_sky, !is_ortho, viewname, &fx_settings, ofs, viewport); @@ -2191,7 +2207,7 @@ ImBuf *ED_view3d_draw_offscreen_imbuf( (jit_ofs[j][1] * 2.0f) / sizey); ED_view3d_draw_offscreen( - depsgraph, scene, view_layer, engine_type, + depsgraph, scene, view_layer, drawtype, v3d, ar, sizex, sizey, NULL, winmat_jitter, draw_background, draw_sky, !is_ortho, viewname, &fx_settings, ofs, viewport); @@ -2256,9 +2272,9 @@ ImBuf *ED_view3d_draw_offscreen_imbuf( */ ImBuf *ED_view3d_draw_offscreen_imbuf_simple( Depsgraph *depsgraph, Scene *scene, - ViewLayer *view_layer, RenderEngineType *engine_type, + ViewLayer *view_layer, int drawtype, Object *camera, int width, int height, - unsigned int flag, unsigned int draw_flags, int drawtype, + unsigned int flag, unsigned int draw_flags, int alpha_mode, int samples, const char *viewname, GPUOffScreen *ofs, char err_out[256]) { @@ -2318,7 +2334,7 @@ ImBuf *ED_view3d_draw_offscreen_imbuf_simple( invert_m4_m4(rv3d.persinv, rv3d.viewinv); return ED_view3d_draw_offscreen_imbuf( - depsgraph, scene, view_layer, engine_type, + depsgraph, scene, view_layer, drawtype, &v3d, &ar, width, height, flag, draw_flags, alpha_mode, samples, viewname, ofs, err_out); } diff --git a/source/blender/editors/space_view3d/view3d_draw_legacy.c b/source/blender/editors/space_view3d/view3d_draw_legacy.c index 807a4f212f6..51adcc47b6c 100644 --- a/source/blender/editors/space_view3d/view3d_draw_legacy.c +++ b/source/blender/editors/space_view3d/view3d_draw_legacy.c @@ -1417,11 +1417,9 @@ static void gpu_update_lamps_shadows_world(Depsgraph *depsgraph, Scene *scene, V mul_m4_m4m4(rv3d.persmat, rv3d.winmat, rv3d.viewmat); invert_m4_m4(rv3d.persinv, rv3d.viewinv); - RenderEngineType *engine_type = RE_engines_find(scene->view_render.engine_id); - /* no need to call ED_view3d_draw_offscreen_init since shadow buffers were already updated */ ED_view3d_draw_offscreen( - depsgraph, scene, view_layer, engine_type, + depsgraph, scene, view_layer, v3d->drawtype, v3d, &ar, winsize, winsize, viewmat, winmat, false, false, true, NULL, NULL, NULL, NULL); @@ -1758,7 +1756,7 @@ void ED_scene_draw_fps(Scene *scene, const rcti *rect) static bool view3d_main_region_do_render_draw(const Scene *scene) { - RenderEngineType *type = RE_engines_find(scene->view_render.engine_id); + RenderEngineType *type = RE_engines_find(scene->r.engine); return (type && type->view_update && type->render_to_view); } @@ -1819,7 +1817,7 @@ static bool view3d_main_region_draw_engine( /* create render engine */ if (!rv3d->render_engine) { RenderEngine *engine; - type = RE_engines_find(scene->view_render.engine_id); + type = RE_engines_find(scene->r.engine); if (!(type->view_update && type->render_to_view)) return false; diff --git a/source/blender/editors/space_view3d/view3d_select.c b/source/blender/editors/space_view3d/view3d_select.c index adf41fcf5af..555bb0e70de 100644 --- a/source/blender/editors/space_view3d/view3d_select.c +++ b/source/blender/editors/space_view3d/view3d_select.c @@ -119,7 +119,6 @@ void ED_view3d_viewcontext_init(bContext *C, ViewContext *vc) vc->depsgraph = CTX_data_depsgraph(C); vc->scene = CTX_data_scene(C); vc->view_layer = CTX_data_view_layer(C); - vc->engine_type = CTX_data_engine_type(C); vc->v3d = CTX_wm_view3d(C); vc->win = CTX_wm_window(C); vc->rv3d = CTX_wm_region_view3d(C); diff --git a/source/blender/editors/transform/transform.h b/source/blender/editors/transform/transform.h index f1daa831869..4a53bb2360d 100644 --- a/source/blender/editors/transform/transform.h +++ b/source/blender/editors/transform/transform.h @@ -517,7 +517,6 @@ typedef struct TransInfo { struct Depsgraph *depsgraph; struct Scene *scene; struct ViewLayer *view_layer; - struct RenderEngineType *engine_type; struct ToolSettings *settings; struct wmTimer *animtimer; struct wmKeyMap *keymap; /* so we can do lookups for header text */ diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c index 2fdb34e125a..4bcc8fe9e71 100644 --- a/source/blender/editors/transform/transform_generics.c +++ b/source/blender/editors/transform/transform_generics.c @@ -1204,13 +1204,11 @@ void initTransInfo(bContext *C, TransInfo *t, wmOperator *op, const wmEvent *eve ScrArea *sa = CTX_wm_area(C); bGPdata *gpd = CTX_data_gpencil_data(C); - RenderEngineType *engine_type = CTX_data_engine_type(C); PropertyRNA *prop; t->depsgraph = depsgraph; t->scene = sce; t->view_layer = view_layer; - t->engine_type = engine_type; t->sa = sa; t->ar = ar; t->settings = ts; diff --git a/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp b/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp index b5f6784bdc4..2de1050e167 100644 --- a/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp +++ b/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp @@ -116,9 +116,9 @@ BlenderStrokeRenderer::BlenderStrokeRenderer(Render *re, int render_count) : Str freestyle_scene->r.filtertype = old_scene->r.filtertype; freestyle_scene->r.gauss = old_scene->r.gauss; freestyle_scene->r.dither_intensity = old_scene->r.dither_intensity; - BKE_viewrender_copy(&freestyle_scene->view_render, &old_scene->view_render); + STRNCPY(freestyle_scene->r.engine, old_scene->r.engine); if (G.debug & G_DEBUG_FREESTYLE) { - cout << "Stroke rendering engine : " << freestyle_scene->view_render.engine_id << endl; + cout << "Stroke rendering engine : " << freestyle_scene->r.engine << endl; } freestyle_scene->r.im_format.planes = R_IMF_PLANES_RGBA; freestyle_scene->r.im_format.imtype = R_IMF_IMTYPE_PNG; @@ -128,7 +128,7 @@ BlenderStrokeRenderer::BlenderStrokeRenderer(Render *re, int render_count) : Str freestyle_scene->id.properties = IDP_CopyProperty_ex(old_scene->id.properties, 0); } - if (STREQ(freestyle_scene->view_render.engine_id, RE_engine_id_CYCLES)) { + if (STREQ(freestyle_scene->r.engine, RE_engine_id_CYCLES)) { /* Render with transparent background. */ PointerRNA freestyle_scene_ptr; RNA_id_pointer_create(&freestyle_scene->id, &freestyle_scene_ptr); diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h index 1c518331cf7..18502158e4b 100644 --- a/source/blender/makesdna/DNA_scene_types.h +++ b/source/blender/makesdna/DNA_scene_types.h @@ -750,7 +750,7 @@ typedef struct RenderData { float unit_line_thickness; /* in pixels */ /* render engine */ - char engine[32] DNA_DEPRECATED; // XXX deprecated since 2.8 + char engine[32]; /* Cycles baking */ struct BakeData bake; @@ -774,12 +774,6 @@ typedef struct RenderData { } RenderData; /* *************************************************************** */ -/* Settings related to viewport drawing/render, only settings used by WorkSpace and Scene. */ -typedef struct ViewRender { - char engine_id[32]; -} ViewRender; - -/* *************************************************************** */ /* Render Conversion/Simplfication Settings */ /* control render convert and shading engine */ @@ -1533,8 +1527,6 @@ typedef struct Scene { IDProperty *collection_properties; /* settings to be overriden by layer collections */ IDProperty *layer_properties; /* settings to be override by workspaces */ - - ViewRender view_render; } Scene; /* **************** RENDERDATA ********************* */ diff --git a/source/blender/makesdna/DNA_workspace_types.h b/source/blender/makesdna/DNA_workspace_types.h index dab6f8c1ea0..baa6d0f94db 100644 --- a/source/blender/makesdna/DNA_workspace_types.h +++ b/source/blender/makesdna/DNA_workspace_types.h @@ -102,7 +102,6 @@ typedef struct WorkSpace { bToolDef tool; struct ViewLayer *view_layer DNA_DEPRECATED; - struct ViewRender view_render; } WorkSpace; /* internal struct, but exported for read/write */ diff --git a/source/blender/makesrna/RNA_access.h b/source/blender/makesrna/RNA_access.h index 5947324826e..ec4dca98387 100644 --- a/source/blender/makesrna/RNA_access.h +++ b/source/blender/makesrna/RNA_access.h @@ -704,7 +704,6 @@ extern StructRNA RNA_VertexWeightEditModifier; extern StructRNA RNA_VertexWeightMixModifier; extern StructRNA RNA_VertexWeightProximityModifier; extern StructRNA RNA_ViewLayer; -extern StructRNA RNA_ViewRenderSettings; extern StructRNA RNA_Window; extern StructRNA RNA_WindowManager; extern StructRNA RNA_WipeSequence; diff --git a/source/blender/makesrna/intern/rna_context.c b/source/blender/makesrna/intern/rna_context.c index bcd805b0f3a..fd128548ed1 100644 --- a/source/blender/makesrna/intern/rna_context.c +++ b/source/blender/makesrna/intern/rna_context.c @@ -139,12 +139,6 @@ static PointerRNA rna_Context_view_layer_get(PointerRNA *ptr) return rna_pointer_inherit_refine(&scene_ptr, &RNA_ViewLayer, CTX_data_view_layer(C)); } -static PointerRNA rna_Context_view_render_get(PointerRNA *ptr) -{ - bContext *C = (bContext *)ptr->data; - return rna_pointer_inherit_refine(ptr, &RNA_ViewRenderSettings, CTX_data_view_render(C)); -} - static void rna_Context_engine_get(PointerRNA *ptr, char *value) { bContext *C = (bContext *)ptr->data; @@ -289,11 +283,6 @@ void RNA_def_context(BlenderRNA *brna) RNA_def_property_struct_type(prop, "ViewLayer"); RNA_def_property_pointer_funcs(prop, "rna_Context_view_layer_get", NULL, NULL, NULL); - prop = RNA_def_property(srna, "view_render", PROP_POINTER, PROP_NONE); - RNA_def_property_clear_flag(prop, PROP_EDITABLE); - RNA_def_property_struct_type(prop, "ViewRenderSettings"); - RNA_def_property_pointer_funcs(prop, "rna_Context_view_render_get", NULL, NULL, NULL); - prop = RNA_def_property(srna, "engine", PROP_STRING, PROP_NONE); RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_string_funcs(prop, "rna_Context_engine_get", "rna_Context_engine_length", NULL); diff --git a/source/blender/makesrna/intern/rna_layer.c b/source/blender/makesrna/intern/rna_layer.c index e6fa7bb26dd..dce85f0e91c 100644 --- a/source/blender/makesrna/intern/rna_layer.c +++ b/source/blender/makesrna/intern/rna_layer.c @@ -928,78 +928,6 @@ static void rna_ObjectBase_select_update(Main *UNUSED(bmain), Scene *UNUSED(scen ED_object_base_select(base, mode); } -static char *rna_ViewRenderSettings_path(PointerRNA *UNUSED(ptr)) -{ - return BLI_sprintfN("view_render"); -} - -static void rna_ViewRenderSettings_engine_set(PointerRNA *ptr, int value) -{ - ViewRender *view_render = (ViewRender *)ptr->data; - RenderEngineType *type = BLI_findlink(&R_engines, value); - - if (type) { - BLI_strncpy_utf8(view_render->engine_id, type->idname, sizeof(view_render->engine_id)); - DEG_id_tag_update(ptr->id.data, DEG_TAG_COPY_ON_WRITE); - } -} - -static const EnumPropertyItem *rna_ViewRenderSettings_engine_itemf( - bContext *UNUSED(C), PointerRNA *UNUSED(ptr), PropertyRNA *UNUSED(prop), bool *r_free) -{ - RenderEngineType *type; - EnumPropertyItem *item = NULL; - EnumPropertyItem tmp = {0, "", 0, "", ""}; - int a = 0, totitem = 0; - - for (type = R_engines.first; type; type = type->next, a++) { - tmp.value = a; - tmp.identifier = type->idname; - tmp.name = type->name; - RNA_enum_item_add(&item, &totitem, &tmp); - } - - RNA_enum_item_end(&item, &totitem); - *r_free = true; - - return item; -} - -static int rna_ViewRenderSettings_engine_get(PointerRNA *ptr) -{ - ViewRender *view_render = (ViewRender *)ptr->data; - RenderEngineType *type; - int a = 0; - - for (type = R_engines.first; type; type = type->next, a++) - if (STREQ(type->idname, view_render->engine_id)) - return a; - - return 0; -} - -static void rna_ViewRenderSettings_engine_update(Main *bmain, Scene *UNUSED(unused), PointerRNA *UNUSED(ptr)) -{ - ED_render_engine_changed(bmain); -} - -static int rna_ViewRenderSettings_multiple_engines_get(PointerRNA *UNUSED(ptr)) -{ - return (BLI_listbase_count(&R_engines) > 1); -} - -static int rna_ViewRenderSettings_use_shading_nodes_get(PointerRNA *ptr) -{ - ViewRender *view_render = (ViewRender *)ptr->data; - return BKE_viewrender_use_new_shading_nodes(view_render); -} - -static int rna_ViewRenderSettings_use_spherical_stereo_get(PointerRNA *ptr) -{ - ViewRender *view_render = (ViewRender *)ptr->data; - return BKE_viewrender_use_spherical_stereo(view_render); -} - #else static void rna_def_scene_collections(BlenderRNA *brna, PropertyRNA *cprop) @@ -2183,46 +2111,6 @@ static void rna_def_object_base(BlenderRNA *brna) RNA_def_property_update(prop, NC_OBJECT | ND_DRAW, "rna_ObjectBase_select_update"); } -static void rna_def_scene_view_render(BlenderRNA *brna) -{ - StructRNA *srna; - PropertyRNA *prop; - - static const EnumPropertyItem engine_items[] = { - {0, "BLENDER_RENDER", 0, "Blender Render", "Use the Blender internal rendering engine for rendering"}, - {0, NULL, 0, NULL, NULL} - }; - - srna = RNA_def_struct(brna, "ViewRenderSettings", NULL); - RNA_def_struct_sdna(srna, "ViewRender"); - RNA_def_struct_path_func(srna, "rna_ViewRenderSettings_path"); - RNA_def_struct_ui_text(srna, "View Render", "Rendering settings related to viewport drawing/rendering"); - - /* engine */ - prop = RNA_def_property(srna, "engine", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_items(prop, engine_items); - RNA_def_property_enum_funcs(prop, "rna_ViewRenderSettings_engine_get", "rna_ViewRenderSettings_engine_set", - "rna_ViewRenderSettings_engine_itemf"); - RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); - RNA_def_property_ui_text(prop, "Engine", "Engine to use for rendering"); - RNA_def_property_update(prop, NC_WINDOW, "rna_ViewRenderSettings_engine_update"); - - prop = RNA_def_property(srna, "has_multiple_engines", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_funcs(prop, "rna_ViewRenderSettings_multiple_engines_get", NULL); - RNA_def_property_clear_flag(prop, PROP_EDITABLE); - RNA_def_property_ui_text(prop, "Multiple Engines", "More than one rendering engine is available"); - - prop = RNA_def_property(srna, "use_shading_nodes", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_funcs(prop, "rna_ViewRenderSettings_use_shading_nodes_get", NULL); - RNA_def_property_clear_flag(prop, PROP_EDITABLE); - RNA_def_property_ui_text(prop, "Use Shading Nodes", "Active render engine uses new shading nodes system"); - - prop = RNA_def_property(srna, "use_spherical_stereo", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_funcs(prop, "rna_ViewRenderSettings_use_spherical_stereo_get", NULL); - RNA_def_property_clear_flag(prop, PROP_EDITABLE); - RNA_def_property_ui_text(prop, "Use Spherical Stereo", "Active render engine supports spherical stereo rendering"); -} - void RNA_def_view_layer(BlenderRNA *brna) { FunctionRNA *func; @@ -2302,7 +2190,6 @@ void RNA_def_view_layer(BlenderRNA *brna) /* *** Animated *** */ rna_def_view_layer_settings(brna); rna_def_layer_collection_settings(brna); - rna_def_scene_view_render(brna); } #endif diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c index 0caffb4867c..40c36b9bd44 100644 --- a/source/blender/makesrna/intern/rna_nodetree.c +++ b/source/blender/makesrna/intern/rna_nodetree.c @@ -3035,7 +3035,7 @@ static void rna_ShaderNodeScript_update(Main *bmain, Scene *scene, PointerRNA *p { bNodeTree *ntree = (bNodeTree *)ptr->id.data; bNode *node = (bNode *)ptr->data; - RenderEngineType *engine_type = RE_engines_find(scene->view_render.engine_id); + RenderEngineType *engine_type = RE_engines_find(scene->r.engine); if (engine_type && engine_type->update_script_node) { /* auto update node */ diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index 6f9b1ccebf5..339465d1ac0 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -1393,6 +1393,73 @@ static void rna_RenderSettings_views_format_set(PointerRNA *ptr, int value) rd->views_format = value; } +static void rna_RenderSettings_engine_set(PointerRNA *ptr, int value) +{ + RenderData *rd = (RenderData *)ptr->data; + RenderEngineType *type = BLI_findlink(&R_engines, value); + + if (type) { + BLI_strncpy_utf8(rd->engine, type->idname, sizeof(rd->engine)); + DEG_id_tag_update(ptr->id.data, DEG_TAG_COPY_ON_WRITE); + } +} + +static const EnumPropertyItem *rna_RenderSettings_engine_itemf( + bContext *UNUSED(C), PointerRNA *UNUSED(ptr), PropertyRNA *UNUSED(prop), bool *r_free) +{ + RenderEngineType *type; + EnumPropertyItem *item = NULL; + EnumPropertyItem tmp = {0, "", 0, "", ""}; + int a = 0, totitem = 0; + + for (type = R_engines.first; type; type = type->next, a++) { + tmp.value = a; + tmp.identifier = type->idname; + tmp.name = type->name; + RNA_enum_item_add(&item, &totitem, &tmp); + } + + RNA_enum_item_end(&item, &totitem); + *r_free = true; + + return item; +} + +static int rna_RenderSettings_engine_get(PointerRNA *ptr) +{ + RenderData *rd = (RenderData *)ptr->data; + RenderEngineType *type; + int a = 0; + + for (type = R_engines.first; type; type = type->next, a++) + if (STREQ(type->idname, rd->engine)) + return a; + + return 0; +} + +static void rna_RenderSettings_engine_update(Main *bmain, Scene *UNUSED(unused), PointerRNA *UNUSED(ptr)) +{ + ED_render_engine_changed(bmain); +} + +static int rna_RenderSettings_multiple_engines_get(PointerRNA *UNUSED(ptr)) +{ + return (BLI_listbase_count(&R_engines) > 1); +} + +static int rna_RenderSettings_use_shading_nodes_get(PointerRNA *ptr) +{ + Scene *scene = (Scene *)ptr->id.data; + return BKE_scene_use_new_shading_nodes(scene); +} + +static int rna_RenderSettings_use_spherical_stereo_get(PointerRNA *ptr) +{ + Scene *scene = (Scene *)ptr->id.data; + return BKE_scene_use_spherical_stereo(scene); +} + void rna_Scene_glsl_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr) { Scene *scene = (Scene *)ptr->id.data; @@ -5031,6 +5098,11 @@ static void rna_def_scene_render_data(BlenderRNA *brna) {0, NULL, 0, NULL, NULL} }; + static const EnumPropertyItem engine_items[] = { + {0, "BLENDER_EEVEE", 0, "Eevee", ""}, + {0, NULL, 0, NULL, NULL} + }; + static const EnumPropertyItem freestyle_thickness_items[] = { {R_LINE_THICKNESS_ABSOLUTE, "ABSOLUTE", 0, "Absolute", "Specify unit line thickness in pixels"}, {R_LINE_THICKNESS_RELATIVE, "RELATIVE", 0, "Relative", @@ -5772,6 +5844,30 @@ static void rna_def_scene_render_data(BlenderRNA *brna) RNA_def_property_enum_funcs(prop, NULL, "rna_RenderSettings_views_format_set", NULL); RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL); + /* engine */ + prop = RNA_def_property(srna, "engine", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_items(prop, engine_items); + RNA_def_property_enum_funcs(prop, "rna_RenderSettings_engine_get", "rna_RenderSettings_engine_set", + "rna_RenderSettings_engine_itemf"); + RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); + RNA_def_property_ui_text(prop, "Engine", "Engine to use for rendering"); + RNA_def_property_update(prop, NC_WINDOW, "rna_RenderSettings_engine_update"); + + prop = RNA_def_property(srna, "has_multiple_engines", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_funcs(prop, "rna_RenderSettings_multiple_engines_get", NULL); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); + RNA_def_property_ui_text(prop, "Multiple Engines", "More than one rendering engine is available"); + + prop = RNA_def_property(srna, "use_shading_nodes", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_funcs(prop, "rna_RenderSettings_use_shading_nodes_get", NULL); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); + RNA_def_property_ui_text(prop, "Use Shading Nodes", "Active render engine uses new shading nodes system"); + + prop = RNA_def_property(srna, "use_spherical_stereo", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_funcs(prop, "rna_RenderSettings_use_spherical_stereo_get", NULL); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); + RNA_def_property_ui_text(prop, "Use Spherical Stereo", "Active render engine supports spherical stereo rendering"); + /* simplify */ prop = RNA_def_property(srna, "use_simplify", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "mode", R_SIMPLIFY); @@ -6345,12 +6441,6 @@ void RNA_def_scene(BlenderRNA *brna) RNA_def_property_struct_type(prop, "RenderSettings"); RNA_def_property_ui_text(prop, "Render Data", ""); - /* View Render */ - prop = RNA_def_property(srna, "view_render", PROP_POINTER, PROP_NONE); - RNA_def_property_flag(prop, PROP_NEVER_NULL); - RNA_def_property_struct_type(prop, "ViewRenderSettings"); - RNA_def_property_ui_text(prop, "View Render", ""); - /* Render Engine Data */ prop = RNA_def_property(srna, "layer_properties", PROP_COLLECTION, PROP_NONE); RNA_def_property_collection_sdna(prop, NULL, "layer_properties->data.group", NULL); diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index 2d7dc477fe3..47ae2cb8951 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -670,7 +670,7 @@ static int rna_SpaceView3D_viewport_shade_get(PointerRNA *ptr) { bScreen *screen = ptr->id.data; Scene *scene = WM_windows_scene_get_from_screen(G.main->wm.first, screen); - RenderEngineType *type = RE_engines_find(scene->view_render.engine_id); + RenderEngineType *type = RE_engines_find(scene->r.engine); View3D *v3d = (View3D *)ptr->data; if (BKE_scene_uses_blender_eevee(scene)) { @@ -702,7 +702,7 @@ static const EnumPropertyItem *rna_SpaceView3D_viewport_shade_itemf( { wmWindow *win = CTX_wm_window(C); Scene *scene = WM_window_get_active_scene(win); - RenderEngineType *type = RE_engines_find(scene->view_render.engine_id); + RenderEngineType *type = RE_engines_find(scene->r.engine); EnumPropertyItem *item = NULL; int totitem = 0; diff --git a/source/blender/makesrna/intern/rna_workspace.c b/source/blender/makesrna/intern/rna_workspace.c index 92c45998913..c48e80ad349 100644 --- a/source/blender/makesrna/intern/rna_workspace.c +++ b/source/blender/makesrna/intern/rna_workspace.c @@ -203,12 +203,6 @@ static void rna_def_workspace(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Mode", "Object interaction mode used in this window"); #endif - /* View Render */ - prop = RNA_def_property(srna, "view_render", PROP_POINTER, PROP_NONE); - RNA_def_property_flag(prop, PROP_NEVER_NULL); - RNA_def_property_struct_type(prop, "ViewRenderSettings"); - RNA_def_property_ui_text(prop, "View Render", ""); - /* Flags */ prop = RNA_def_property(srna, "use_scene_settings", PROP_BOOLEAN, PROP_NONE); RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); diff --git a/source/blender/nodes/composite/node_composite_tree.c b/source/blender/nodes/composite/node_composite_tree.c index 8cb25d9167f..8994a2741f8 100644 --- a/source/blender/nodes/composite/node_composite_tree.c +++ b/source/blender/nodes/composite/node_composite_tree.c @@ -65,7 +65,7 @@ static void composite_get_from_context(const bContext *C, bNodeTreeType *UNUSED( *r_ntree = scene->nodetree; } -static void foreach_nodeclass(ViewRender *UNUSED(view_render), void *calldata, bNodeClassCallback func) +static void foreach_nodeclass(Scene *UNUSED(scene), void *calldata, bNodeClassCallback func) { func(calldata, NODE_CLASS_INPUT, N_("Input")); func(calldata, NODE_CLASS_OUTPUT, N_("Output")); diff --git a/source/blender/nodes/composite/nodes/node_composite_image.c b/source/blender/nodes/composite/nodes/node_composite_image.c index 7712d7d0e71..be23c535cba 100644 --- a/source/blender/nodes/composite/nodes/node_composite_image.c +++ b/source/blender/nodes/composite/nodes/node_composite_image.c @@ -219,7 +219,7 @@ static void cmp_node_rlayer_create_outputs(bNodeTree *ntree, bNode *node, LinkNo Scene *scene = (Scene *)node->id; if (scene) { - RenderEngineType *engine_type = RE_engines_find(scene->view_render.engine_id); + RenderEngineType *engine_type = RE_engines_find(scene->r.engine); if (engine_type && engine_type->update_render_passes) { ViewLayer *view_layer = BLI_findlink(&scene->view_layers, node->custom1); if (view_layer) { diff --git a/source/blender/nodes/shader/node_shader_tree.c b/source/blender/nodes/shader/node_shader_tree.c index c90be35b648..07fe49889a0 100644 --- a/source/blender/nodes/shader/node_shader_tree.c +++ b/source/blender/nodes/shader/node_shader_tree.c @@ -68,28 +68,24 @@ static int shader_tree_poll(const bContext *C, bNodeTreeType *UNUSED(treetype)) { Scene *scene = CTX_data_scene(C); - WorkSpace *workspace = CTX_wm_workspace(C); - ViewRender *view_render = BKE_viewrender_get(scene, workspace); - const char *engine_id = view_render->engine_id; + const char *engine_id = scene->r.engine; /* allow empty engine string too, this is from older versions that didn't have registerable engines yet */ return (engine_id[0] == '\0' || STREQ(engine_id, RE_engine_id_BLENDER_RENDER) || STREQ(engine_id, RE_engine_id_CYCLES) || - !BKE_viewrender_use_shading_nodes_custom(view_render)); + !BKE_scene_use_shading_nodes_custom(scene)); } static void shader_get_from_context(const bContext *C, bNodeTreeType *UNUSED(treetype), bNodeTree **r_ntree, ID **r_id, ID **r_from) { SpaceNode *snode = CTX_wm_space_node(C); Scene *scene = CTX_data_scene(C); - WorkSpace *workspace = CTX_wm_workspace(C); ViewLayer *view_layer = CTX_data_view_layer(C); Object *ob = OBACT(view_layer); - ViewRender *view_render = BKE_viewrender_get(scene, workspace); if ((snode->shaderfrom == SNODE_SHADER_OBJECT) || - (BKE_viewrender_use_new_shading_nodes(view_render) == false)) + (BKE_scene_use_new_shading_nodes(scene) == false)) { if (ob) { *r_from = &ob->id; @@ -125,12 +121,12 @@ static void shader_get_from_context(const bContext *C, bNodeTreeType *UNUSED(tre } } -static void foreach_nodeclass(ViewRender *view_render, void *calldata, bNodeClassCallback func) +static void foreach_nodeclass(Scene *scene, void *calldata, bNodeClassCallback func) { func(calldata, NODE_CLASS_INPUT, N_("Input")); func(calldata, NODE_CLASS_OUTPUT, N_("Output")); - if (BKE_viewrender_use_new_shading_nodes(view_render)) { + if (BKE_scene_use_new_shading_nodes(scene)) { func(calldata, NODE_CLASS_SHADER, N_("Shader")); func(calldata, NODE_CLASS_TEXTURE, N_("Texture")); } diff --git a/source/blender/nodes/texture/node_texture_tree.c b/source/blender/nodes/texture/node_texture_tree.c index 932b60665c4..d001d80fa8f 100644 --- a/source/blender/nodes/texture/node_texture_tree.c +++ b/source/blender/nodes/texture/node_texture_tree.c @@ -123,7 +123,7 @@ static void texture_get_from_context( } } -static void foreach_nodeclass(ViewRender *UNUSED(view_render), void *calldata, bNodeClassCallback func) +static void foreach_nodeclass(Scene *UNUSED(scene), void *calldata, bNodeClassCallback func) { func(calldata, NODE_CLASS_INPUT, N_("Input")); func(calldata, NODE_CLASS_OUTPUT, N_("Output")); diff --git a/source/blender/render/extern/include/RE_pipeline.h b/source/blender/render/extern/include/RE_pipeline.h index 802413f3580..e60fc3abad2 100644 --- a/source/blender/render/extern/include/RE_pipeline.h +++ b/source/blender/render/extern/include/RE_pipeline.h @@ -51,7 +51,6 @@ struct Scene; struct ViewLayer; struct EnvMap; struct StampData; -struct ViewRender; /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ /* this include is what is exposed of render to outside world */ @@ -243,7 +242,7 @@ struct RenderPass *RE_create_gp_pass(struct RenderResult *rr, const char *layern /* obligatory initialize call, disprect is optional */ void RE_InitState(struct Render *re, struct Render *source, struct RenderData *rd, struct ListBase *render_layers, const int active_layer, - struct ViewRender *view_render, struct ViewLayer *view_layer, + struct ViewLayer *view_layer, int winx, int winy, rcti *disprect); void RE_ChangeResolution(struct Render *re, int winx, int winy, rcti *disprect); void RE_ChangeModeFlag(struct Render *re, int flag, bool clear); @@ -306,13 +305,11 @@ void RE_RenderFreestyleExternal(struct Render *re); void RE_SetActiveRenderView(struct Render *re, const char *viewname); const char *RE_GetActiveRenderView(struct Render *re); -void RE_SetEngineByID(struct Render *re, const char *engine_id); - /* error reporting */ void RE_SetReports(struct Render *re, struct ReportList *reports); /* main preview render call */ -void RE_PreviewRender(struct Render *re, struct Main *bmain, struct Scene *scene, struct ViewRender *render_view); +void RE_PreviewRender(struct Render *re, struct Main *bmain, struct Scene *scene); bool RE_ReadRenderResult(struct Scene *scene, struct Scene *scenode); bool RE_WriteRenderResult( diff --git a/source/blender/render/intern/include/render_types.h b/source/blender/render/intern/include/render_types.h index 9b0206fd05d..97224d3aec0 100644 --- a/source/blender/render/intern/include/render_types.h +++ b/source/blender/render/intern/include/render_types.h @@ -193,7 +193,6 @@ struct Render { ListBase view_layers; int active_view_layer; World wrld; - ViewRender view_render; struct Object *camera_override; unsigned int lay, layer_override; diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index 67869ec541d..71e44887a8e 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -4829,8 +4829,6 @@ void RE_Database_Free(Render *re) BLI_memarena_free(re->memArena); re->memArena = NULL; } - - BKE_viewrender_free(&re->view_render); } static int allow_render_object(Render *re, Object *ob, int nolamps, int onlyselected, Object *actob) @@ -5151,7 +5149,6 @@ void RE_Database_FromScene(Render *re, Main *bmain, Scene *scene, unsigned int l re->i.infostr= "Preparing Scene data"; re->i.cfra= scene->r.cfra; BLI_strncpy(re->i.scene_name, scene->id.name + 2, sizeof(re->i.scene_name)); - re->view_render = scene->view_render; /* XXX add test if dbase was filled already? */ @@ -5868,7 +5865,6 @@ void RE_Database_Baking(Render *re, Main *bmain, Scene *scene, ViewLayer *view_l /* renderdata setup and exceptions */ render_copy_renderdata(&re->r, &scene->r); - render_copy_viewrender(&re->view_render, &scene->view_render); RE_init_threadcount(re); diff --git a/source/blender/render/intern/source/envmap.c b/source/blender/render/intern/source/envmap.c index 19635dd26f2..a5f914b5ca1 100644 --- a/source/blender/render/intern/source/envmap.c +++ b/source/blender/render/intern/source/envmap.c @@ -151,7 +151,7 @@ static Render *envmap_render_copy(Render *re, EnvMap *env) envre->r.size = 100; envre->r.yasp = envre->r.xasp = 1; - RE_InitState(envre, NULL, &envre->r, &re->view_layers, re->active_view_layer, &envre->view_render, NULL, cuberes, cuberes, NULL); + RE_InitState(envre, NULL, &envre->r, &re->view_layers, re->active_view_layer, NULL, cuberes, cuberes, NULL); envre->main = re->main; envre->scene = re->scene; /* unsure about this... */ envre->scene_color_manage = re->scene_color_manage; diff --git a/source/blender/render/intern/source/external_engine.c b/source/blender/render/intern/source/external_engine.c index 824d37b360f..79a414381db 100644 --- a/source/blender/render/intern/source/external_engine.c +++ b/source/blender/render/intern/source/external_engine.c @@ -561,12 +561,11 @@ void RE_bake_engine_set_engine_parameters(Render *re, Main *bmain, Scene *scene) re->scene = scene; re->main = bmain; render_copy_renderdata(&re->r, &scene->r); - render_copy_viewrender(&re->view_render, &scene->view_render); } bool RE_bake_has_engine(Render *re) { - RenderEngineType *type = RE_engines_find(re->view_render.engine_id); + RenderEngineType *type = RE_engines_find(re->r.engine); return (type->bake != NULL); } @@ -577,7 +576,7 @@ bool RE_bake_engine( const eScenePassType pass_type, const int pass_filter, float result[]) { - RenderEngineType *type = RE_engines_find(re->view_render.engine_id); + RenderEngineType *type = RE_engines_find(re->r.engine); RenderEngine *engine; bool persistent_data = (re->r.mode & R_PERSISTENT_DATA) != 0; @@ -654,7 +653,7 @@ bool RE_bake_engine( int RE_engine_render(Render *re, int do_all) { - RenderEngineType *type = RE_engines_find(re->view_render.engine_id); + RenderEngineType *type = RE_engines_find(re->r.engine); RenderEngine *engine; bool persistent_data = (re->r.mode & R_PERSISTENT_DATA) != 0; diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index 8bc6f025d11..ba50467f9ea 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -665,9 +665,9 @@ void RE_FreePersistentData(void) /* ********* initialize state ******** */ /* clear full sample and tile flags if needed */ -static int check_mode_full_sample(RenderData *rd, ViewRender *view_render) +static int check_mode_full_sample(RenderData *rd) { - const char *engine_id = view_render->engine_id; + const char *engine_id = rd->engine; int scemode = rd->scemode; if (!STREQ(engine_id, RE_engine_id_BLENDER_RENDER)) { @@ -740,16 +740,11 @@ void render_copy_renderdata(RenderData *to, RenderData *from) curvemapping_copy_data(&to->mblur_shutter_curve, &from->mblur_shutter_curve); } -void render_copy_viewrender(ViewRender *to, ViewRender *from) -{ - BKE_viewrender_copy(to, from); -} - /* what doesn't change during entire render sequence */ /* disprect is optional, if NULL it assumes full window render */ void RE_InitState(Render *re, Render *source, RenderData *rd, ListBase *render_layers, const int active_layer, - ViewRender *view_render, ViewLayer *view_layer, + ViewLayer *view_layer, int winx, int winy, rcti *disprect) { bool had_freestyle = (re->r.mode & R_EDGE_FRS) != 0; @@ -760,7 +755,6 @@ void RE_InitState(Render *re, Render *source, RenderData *rd, /* copy render data and render layers for thread safety */ render_copy_renderdata(&re->r, rd); - render_copy_viewrender(&re->view_render, view_render); BLI_freelistN(&re->view_layers); BLI_duplicatelist(&re->view_layers, render_layers); re->active_view_layer = active_layer; @@ -793,7 +787,7 @@ void RE_InitState(Render *re, Render *source, RenderData *rd, return; } - re->r.scemode = check_mode_full_sample(&re->r, &re->view_render); + re->r.scemode = check_mode_full_sample(&re->r); /* fullsample wants uniform osa levels */ if (source && (re->r.scemode & R_FULL_SAMPLE)) { @@ -1903,7 +1897,7 @@ static void render_scene(Render *re, Scene *sce, int cfra) } /* initial setup */ - RE_InitState(resc, re, &sce->r, &sce->view_layers, sce->active_view_layer, &sce->view_render, NULL, winx, winy, &re->disprect); + RE_InitState(resc, re, &sce->r, &sce->view_layers, sce->active_view_layer, NULL, winx, winy, &re->disprect); /* We still want to use 'rendercache' setting from org (main) scene... */ resc->r.scemode = (resc->r.scemode & ~R_EXR_CACHE_FILE) | (re->r.scemode & R_EXR_CACHE_FILE); @@ -2869,7 +2863,7 @@ static void do_render_all_options(Render *re) bool RE_force_single_renderlayer(Scene *scene) { - int scemode = check_mode_full_sample(&scene->r, &scene->view_render); + int scemode = check_mode_full_sample(&scene->r); if (scemode & R_SINGLE_LAYER) { ViewLayer *view_layer = BLI_findlink(&scene->view_layers, scene->active_view_layer); /* force layer to be enabled */ @@ -3018,7 +3012,7 @@ static int check_composite_output(Scene *scene) bool RE_is_rendering_allowed(Scene *scene, Object *camera_override, ReportList *reports) { - int scemode = check_mode_full_sample(&scene->r, &scene->view_render); + int scemode = check_mode_full_sample(&scene->r); if (scene->r.mode & R_BORDER) { if (scene->r.border.xmax <= scene->r.border.xmin || @@ -3158,13 +3152,8 @@ const char *RE_GetActiveRenderView(Render *re) return re->viewname; } -void RE_SetEngineByID(Render *re, const char *engine_id) -{ - BLI_strncpy(re->view_render.engine_id, engine_id, sizeof(re->view_render.engine_id)); -} - /* evaluating scene options for general Blender render */ -static int render_initialize_from_main(Render *re, RenderData *rd, Main *bmain, Scene *scene, ViewRender *view_render, +static int render_initialize_from_main(Render *re, RenderData *rd, Main *bmain, Scene *scene, ViewLayer *view_layer, Object *camera_override, unsigned int lay_override, int anim, int anim_init) { @@ -3200,7 +3189,6 @@ static int render_initialize_from_main(Render *re, RenderData *rd, Main *bmain, re->layer_override = lay_override; re->i.localview = (re->lay & 0xFF000000) != 0; re->viewname[0] = '\0'; - RE_SetEngineByID(re, view_render->engine_id); /* not too nice, but it survives anim-border render */ if (anim) { @@ -3234,7 +3222,7 @@ static int render_initialize_from_main(Render *re, RenderData *rd, Main *bmain, BLI_rw_mutex_unlock(&re->resultmutex); } - RE_InitState(re, NULL, &scene->r, &scene->view_layers, scene->active_view_layer, &scene->view_render, view_layer, winx, winy, &disprect); + RE_InitState(re, NULL, &scene->r, &scene->view_layers, scene->active_view_layer, view_layer, winx, winy, &disprect); if (!re->ok) /* if an error was printed, abort */ return 0; @@ -3265,7 +3253,7 @@ void RE_BlenderFrame(Render *re, Main *bmain, Scene *scene, ViewLayer *view_laye scene->r.cfra = frame; - if (render_initialize_from_main(re, &scene->r, bmain, scene, &scene->view_render, view_layer, + if (render_initialize_from_main(re, &scene->r, bmain, scene, view_layer, camera_override, lay_override, 0, 0)) { MEM_reset_peak_memory(); @@ -3306,7 +3294,7 @@ void RE_BlenderFrame(Render *re, Main *bmain, Scene *scene, ViewLayer *view_laye void RE_RenderFreestyleStrokes(Render *re, Main *bmain, Scene *scene, int render) { re->result_ok= 0; - if (render_initialize_from_main(re, &scene->r, bmain, scene, &scene->view_render, NULL, NULL, scene->lay, 0, 0)) { + if (render_initialize_from_main(re, &scene->r, bmain, scene, NULL, NULL, scene->lay, 0, 0)) { if (render) do_render_fields_blur_3d(re); } @@ -3600,7 +3588,7 @@ void RE_BlenderAnim(Render *re, Main *bmain, Scene *scene, Object *camera_overri BLI_callback_exec(re->main, (ID *)scene, BLI_CB_EVT_RENDER_INIT); /* do not fully call for each frame, it initializes & pops output window */ - if (!render_initialize_from_main(re, &rd, bmain, scene, &scene->view_render, NULL, camera_override, lay_override, 0, 1)) + if (!render_initialize_from_main(re, &rd, bmain, scene, NULL, camera_override, lay_override, 0, 1)) return; /* MULTIVIEW_TODO: @@ -3690,7 +3678,7 @@ void RE_BlenderAnim(Render *re, Main *bmain, Scene *scene, Object *camera_overri } /* only border now, todo: camera lens. (ton) */ - render_initialize_from_main(re, &rd, bmain, scene, &scene->view_render, + render_initialize_from_main(re, &rd, bmain, scene, NULL, camera_override, lay_override, 1, 0); if (nfra != scene->r.cfra) { @@ -3840,7 +3828,7 @@ void RE_BlenderAnim(Render *re, Main *bmain, Scene *scene, Object *camera_overri G.is_rendering = false; } -void RE_PreviewRender(Render *re, Main *bmain, Scene *sce, ViewRender *view_render) +void RE_PreviewRender(Render *re, Main *bmain, Scene *sce) { Object *camera; int winx, winy; @@ -3848,7 +3836,7 @@ void RE_PreviewRender(Render *re, Main *bmain, Scene *sce, ViewRender *view_rend winx = (sce->r.size * sce->r.xsch) / 100; winy = (sce->r.size * sce->r.ysch) / 100; - RE_InitState(re, NULL, &sce->r, &sce->view_layers, sce->active_view_layer, view_render, NULL, winx, winy, NULL); + RE_InitState(re, NULL, &sce->r, &sce->view_layers, sce->active_view_layer, NULL, winx, winy, NULL); re->pool = BKE_image_pool_new(); @@ -3901,7 +3889,7 @@ bool RE_ReadRenderResult(Scene *scene, Scene *scenode) re = RE_GetSceneRender(scene); if (re == NULL) re = RE_NewSceneRender(scene); - RE_InitState(re, NULL, &scene->r, &scene->view_layers, scene->active_view_layer, &scene->view_render, NULL, winx, winy, &disprect); + RE_InitState(re, NULL, &scene->r, &scene->view_layers, scene->active_view_layer, NULL, winx, winy, &disprect); re->scene = scene; re->scene_color_manage = BKE_scene_check_color_management_enabled(scene); diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c index ef8888c9f87..e138a880b6e 100644 --- a/source/blender/windowmanager/intern/wm_files.c +++ b/source/blender/windowmanager/intern/wm_files.c @@ -443,9 +443,8 @@ void wm_file_read_report(bContext *C) Scene *sce; for (sce = G.main->scene.first; sce; sce = sce->id.next) { - ViewRender *view_render = &sce->view_render; - if (view_render->engine_id[0] && - BLI_findstring(&R_engines, view_render->engine_id, offsetof(RenderEngineType, idname)) == NULL) + if (sce->r.engine[0] && + BLI_findstring(&R_engines, sce->r.engine, offsetof(RenderEngineType, idname)) == NULL) { if (reports == NULL) { reports = CTX_wm_reports(C); @@ -453,7 +452,7 @@ void wm_file_read_report(bContext *C) BKE_reportf(reports, RPT_ERROR, "Engine '%s' not available for scene '%s' (an add-on may need to be installed or enabled)", - view_render->engine_id, sce->id.name + 2); + sce->r.engine, sce->id.name + 2); } } @@ -1047,18 +1046,17 @@ static ImBuf *blend_file_thumb(const bContext *C, Scene *scene, ViewLayer *view_ /* gets scaled to BLEN_THUMB_SIZE */ Depsgraph *depsgraph = CTX_data_depsgraph(C); - RenderEngineType *engine_type = CTX_data_engine_type(C); if (scene->camera) { ibuf = ED_view3d_draw_offscreen_imbuf_simple( - depsgraph, scene, view_layer, engine_type, scene->camera, + depsgraph, scene, view_layer, OB_SOLID, scene->camera, BLEN_THUMB_SIZE * 2, BLEN_THUMB_SIZE * 2, - IB_rect, V3D_OFSDRAW_NONE, OB_SOLID, R_ALPHAPREMUL, 0, NULL, + IB_rect, V3D_OFSDRAW_NONE, R_ALPHAPREMUL, 0, NULL, NULL, err_out); } else { ibuf = ED_view3d_draw_offscreen_imbuf( - depsgraph, scene, view_layer, engine_type, v3d, ar, + depsgraph, scene, view_layer, OB_SOLID, v3d, ar, BLEN_THUMB_SIZE * 2, BLEN_THUMB_SIZE * 2, IB_rect, V3D_OFSDRAW_NONE, R_ALPHAPREMUL, 0, NULL, NULL, err_out); diff --git a/source/creator/creator_args.c b/source/creator/creator_args.c index 96aeba56eee..1f3dd1903c1 100644 --- a/source/creator/creator_args.c +++ b/source/creator/creator_args.c @@ -1190,7 +1190,7 @@ static int arg_handle_engine_set(int argc, const char **argv, void *data) Scene *scene = CTX_data_scene(C); if (scene) { if (BLI_findstring(&R_engines, argv[1], offsetof(RenderEngineType, idname))) { - BLI_strncpy_utf8(scene->view_render.engine_id, argv[1], sizeof(scene->view_render.engine_id)); + BLI_strncpy_utf8(scene->r.engine, argv[1], sizeof(scene->r.engine)); } else { printf("\nError: engine not found '%s'\n", argv[1]); |