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

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--release/scripts/freestyle/modules/parameter_editor.py2
-rw-r--r--release/scripts/startup/bl_operators/object_quick_effects.py2
-rw-r--r--release/scripts/startup/bl_ui/properties_collection.py2
-rw-r--r--release/scripts/startup/bl_ui/properties_data_camera.py4
-rw-r--r--release/scripts/startup/bl_ui/properties_data_modifier.py2
-rw-r--r--release/scripts/startup/bl_ui/properties_data_workspace.py4
-rw-r--r--release/scripts/startup/bl_ui/properties_freestyle.py9
-rw-r--r--release/scripts/startup/bl_ui/properties_material.py2
-rw-r--r--release/scripts/startup/bl_ui/properties_physics_cloth.py3
-rw-r--r--release/scripts/startup/bl_ui/properties_physics_common.py3
-rw-r--r--release/scripts/startup/bl_ui/properties_physics_dynamicpaint.py29
-rw-r--r--release/scripts/startup/bl_ui/properties_physics_field.py9
-rw-r--r--release/scripts/startup/bl_ui/properties_physics_fluid.py12
-rw-r--r--release/scripts/startup/bl_ui/properties_physics_rigidbody_constraint.py3
-rw-r--r--release/scripts/startup/bl_ui/properties_physics_smoke.py16
-rw-r--r--release/scripts/startup/bl_ui/properties_physics_softbody.py3
-rw-r--r--release/scripts/startup/bl_ui/properties_render.py50
-rw-r--r--release/scripts/startup/bl_ui/properties_scene.py12
-rw-r--r--release/scripts/startup/bl_ui/properties_view_layer.py37
-rw-r--r--release/scripts/startup/bl_ui/properties_world.py3
-rw-r--r--release/scripts/startup/bl_ui/space_info.py6
-rw-r--r--release/scripts/startup/bl_ui/space_node.py2
-rw-r--r--release/scripts/startup/bl_ui/space_view3d.py2
-rw-r--r--release/scripts/startup/nodeitems_builtins.py8
-rw-r--r--source/blender/blenkernel/BKE_blender_version.h2
-rw-r--r--source/blender/blenkernel/BKE_context.h1
-rw-r--r--source/blender/blenkernel/BKE_node.h2
-rw-r--r--source/blender/blenkernel/BKE_scene.h13
-rw-r--r--source/blender/blenkernel/BKE_sequencer.h4
-rw-r--r--source/blender/blenkernel/BKE_workspace.h2
-rw-r--r--source/blender/blenkernel/intern/context.c18
-rw-r--r--source/blender/blenkernel/intern/scene.c100
-rw-r--r--source/blender/blenkernel/intern/sequencer.c6
-rw-r--r--source/blender/blenkernel/intern/workspace.c10
-rw-r--r--source/blender/blenloader/intern/versioning_280.c30
-rw-r--r--source/blender/blenloader/intern/versioning_defaults.c3
-rw-r--r--source/blender/draw/intern/draw_manager.c37
-rw-r--r--source/blender/editors/include/ED_screen.h3
-rw-r--r--source/blender/editors/include/ED_view3d.h15
-rw-r--r--source/blender/editors/render/render_internal.c8
-rw-r--r--source/blender/editors/render/render_opengl.c11
-rw-r--r--source/blender/editors/render/render_preview.c18
-rw-r--r--source/blender/editors/render/render_update.c4
-rw-r--r--source/blender/editors/screen/workspace_edit.c6
-rw-r--r--source/blender/editors/sculpt_paint/paint_image_proj.c10
-rw-r--r--source/blender/editors/space_node/node_edit.c12
-rw-r--r--source/blender/editors/space_node/node_templates.c3
-rw-r--r--source/blender/editors/space_node/space_node.c5
-rw-r--r--source/blender/editors/space_view3d/space_view3d.c9
-rw-r--r--source/blender/editors/space_view3d/view3d_draw.c46
-rw-r--r--source/blender/editors/space_view3d/view3d_draw_legacy.c8
-rw-r--r--source/blender/editors/space_view3d/view3d_select.c1
-rw-r--r--source/blender/editors/transform/transform.h1
-rw-r--r--source/blender/editors/transform/transform_generics.c2
-rw-r--r--source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp6
-rw-r--r--source/blender/makesdna/DNA_scene_types.h10
-rw-r--r--source/blender/makesdna/DNA_workspace_types.h1
-rw-r--r--source/blender/makesrna/RNA_access.h1
-rw-r--r--source/blender/makesrna/intern/rna_context.c11
-rw-r--r--source/blender/makesrna/intern/rna_layer.c113
-rw-r--r--source/blender/makesrna/intern/rna_nodetree.c2
-rw-r--r--source/blender/makesrna/intern/rna_scene.c102
-rw-r--r--source/blender/makesrna/intern/rna_space.c4
-rw-r--r--source/blender/makesrna/intern/rna_workspace.c6
-rw-r--r--source/blender/nodes/composite/node_composite_tree.c2
-rw-r--r--source/blender/nodes/composite/nodes/node_composite_image.c2
-rw-r--r--source/blender/nodes/shader/node_shader_tree.c14
-rw-r--r--source/blender/nodes/texture/node_texture_tree.c2
-rw-r--r--source/blender/render/extern/include/RE_pipeline.h7
-rw-r--r--source/blender/render/intern/include/render_types.h1
-rw-r--r--source/blender/render/intern/source/convertblender.c4
-rw-r--r--source/blender/render/intern/source/envmap.c2
-rw-r--r--source/blender/render/intern/source/external_engine.c7
-rw-r--r--source/blender/render/intern/source/pipeline.c44
-rw-r--r--source/blender/windowmanager/intern/wm_files.c14
-rw-r--r--source/creator/creator_args.c2
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]);