[Bf-blender-cvs] [f20a08e7e94] temp-workspace-changes: Workspace: Add (render) engines
Dalai Felinto
noreply at git.blender.org
Thu Sep 14 12:09:51 CEST 2017
Commit: f20a08e7e94b25a14a72c0a69d2c27353a0bb2f2
Author: Dalai Felinto
Date: Fri Sep 8 21:30:23 2017 +0200
Branches: temp-workspace-changes
https://developer.blender.org/rBf20a08e7e94b25a14a72c0a69d2c27353a0bb2f2
Workspace: Add (render) engines
We still need to change the viewport so it uses this instead of scene.rd.engine.
===================================================================
M release/scripts/startup/bl_ui/space_info.py
M source/blender/blenkernel/BKE_layer.h
M source/blender/blenkernel/BKE_workspace.h
M source/blender/blenkernel/intern/layer.c
M source/blender/blenkernel/intern/workspace.c
M source/blender/blenloader/intern/versioning_280.c
M source/blender/blenloader/intern/versioning_defaults.c
M source/blender/editors/include/ED_screen.h
M source/blender/editors/screen/workspace_edit.c
M source/blender/makesdna/DNA_layer_types.h
M source/blender/makesdna/DNA_workspace_types.h
M source/blender/makesrna/intern/rna_scene.c
M source/blender/makesrna/intern/rna_workspace.c
===================================================================
diff --git a/release/scripts/startup/bl_ui/space_info.py b/release/scripts/startup/bl_ui/space_info.py
index f05808c7a2c..64b57032c6c 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.render_layer
- rd = scene.render
row = layout.row(align=True)
row.template_header()
@@ -54,15 +53,17 @@ class INFO_HT_header(Header):
act_mode_item = bpy.types.Object.bl_rna.properties['mode'].enum_items[layer.objects.active.mode]
layout.operator_menu_enum("object.mode_set", "mode", text=act_mode_item.name, icon=act_mode_item.icon)
- layout.template_search(workspace, "render_layer", scene, "render_layers")
+ row = layout.row()
+ row.active = not workspace.use_scene_settings
+ row.template_search(workspace, "render_layer", scene, "render_layers")
+
+ if workspace.has_multiple_engines:
+ row.prop(workspace, "engine", text="")
layout.separator()
layout.template_ID(window, "scene", new="scene.new", unlink="scene.delete")
- if rd.has_multiple_engines:
- layout.prop(rd, "engine", text="")
-
layout.separator()
layout.template_running_jobs()
diff --git a/source/blender/blenkernel/BKE_layer.h b/source/blender/blenkernel/BKE_layer.h
index 276ec4c80f9..b53f13c3be6 100644
--- a/source/blender/blenkernel/BKE_layer.h
+++ b/source/blender/blenkernel/BKE_layer.h
@@ -65,8 +65,6 @@ struct SceneLayer *BKE_scene_layer_context_active_PLACEHOLDER(const struct Scene
void BKE_scene_layer_free(struct SceneLayer *sl);
-void BKE_scene_layer_engine_set(struct SceneLayer *sl, const char *engine);
-
void BKE_scene_layer_selected_objects_tag(struct SceneLayer *sl, const int tag);
struct SceneLayer *BKE_scene_layer_find_from_collection(const struct Scene *scene, struct LayerCollection *lc);
diff --git a/source/blender/blenkernel/BKE_workspace.h b/source/blender/blenkernel/BKE_workspace.h
index 18931c500fc..14c4247f768 100644
--- a/source/blender/blenkernel/BKE_workspace.h
+++ b/source/blender/blenkernel/BKE_workspace.h
@@ -115,6 +115,9 @@ 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();
+const char *BKE_workspace_engine_get(struct WorkSpace *workspace) GETTER_ATTRS;
+void BKE_workspace_engine_set(struct WorkSpace *workspace, const char *engine) SETTER_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/layer.c b/source/blender/blenkernel/intern/layer.c
index 42b9eece4ee..2260872b563 100644
--- a/source/blender/blenkernel/intern/layer.c
+++ b/source/blender/blenkernel/intern/layer.c
@@ -175,14 +175,6 @@ void BKE_scene_layer_free(SceneLayer *sl)
}
/**
- * Set the render engine of a renderlayer
- */
-void BKE_scene_layer_engine_set(SceneLayer *sl, const char *engine)
-{
- BLI_strncpy_utf8(sl->engine, engine, sizeof(sl->engine));
-}
-
-/**
* Tag all the selected objects of a renderlayer
*/
void BKE_scene_layer_selected_objects_tag(SceneLayer *sl, const int tag)
diff --git a/source/blender/blenkernel/intern/workspace.c b/source/blender/blenkernel/intern/workspace.c
index defaf15a751..14cd7d28e59 100644
--- a/source/blender/blenkernel/intern/workspace.c
+++ b/source/blender/blenkernel/intern/workspace.c
@@ -29,6 +29,7 @@
#include "BLI_utildefines.h"
#include "BLI_string.h"
+#include "BLI_string_utf8.h"
#include "BLI_string_utils.h"
#include "BLI_listbase.h"
@@ -431,6 +432,22 @@ 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.
+ */
+const char *BKE_workspace_engine_get(WorkSpace *workspace)
+{
+ return (const char *)workspace->engine;
+}
+
+/**
+ * Set the render engine of a workspace, to be used in the viewport.
+ */
+void BKE_workspace_engine_set(WorkSpace *workspace, const char *engine)
+{
+ BLI_strncpy_utf8(workspace->engine, engine, sizeof(workspace->engine));
+}
+
/* 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 f022b393967..1cb6fda8a78 100644
--- a/source/blender/blenloader/intern/versioning_280.c
+++ b/source/blender/blenloader/intern/versioning_280.c
@@ -192,7 +192,6 @@ void do_versions_after_linking_280(Main *main)
for (SceneRenderLayer *srl = scene->r.layers.first; srl; srl = srl->next) {
SceneLayer *sl = BKE_scene_layer_add(scene, srl->name);
- BKE_scene_layer_engine_set(sl, scene->r.engine);
if (srl->mat_override) {
BKE_collection_override_datablock_add((LayerCollection *)sl->layer_collections.first, "material", (ID *)srl->mat_override);
@@ -499,4 +498,12 @@ 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, "WorkSpace", "char", "engine")) {
+ for (WorkSpace *workspace = main->workspaces.first; workspace; workspace = workspace->id.next) {
+ BKE_workspace_engine_set(workspace, RE_engine_id_BLENDER_EEVEE);
+ }
+ }
+ }
}
diff --git a/source/blender/blenloader/intern/versioning_defaults.c b/source/blender/blenloader/intern/versioning_defaults.c
index cea3adaf614..c94d208326c 100644
--- a/source/blender/blenloader/intern/versioning_defaults.c
+++ b/source/blender/blenloader/intern/versioning_defaults.c
@@ -103,6 +103,7 @@ 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_workspace_engine_set(workspace, RE_engine_id_BLENDER_EEVEE);
}
else {
BKE_workspace_remove(bmain, workspace);
diff --git a/source/blender/editors/include/ED_screen.h b/source/blender/editors/include/ED_screen.h
index f68771cb550..615fd77737a 100644
--- a/source/blender/editors/include/ED_screen.h
+++ b/source/blender/editors/include/ED_screen.h
@@ -131,7 +131,8 @@ void ED_screen_preview_render(const struct bScreen *screen, int size_x, int s
struct WorkSpace *ED_workspace_add(
struct Main *bmain,
const char *name,
- SceneLayer *act_render_layer) ATTR_NONNULL();
+ SceneLayer *act_render_layer,
+ const char *engine) ATTR_NONNULL();
bool ED_workspace_change(
struct WorkSpace *workspace_new,
struct bContext *C,
diff --git a/source/blender/editors/screen/workspace_edit.c b/source/blender/editors/screen/workspace_edit.c
index 34def82f16e..2d4956d2813 100644
--- a/source/blender/editors/screen/workspace_edit.c
+++ b/source/blender/editors/screen/workspace_edit.c
@@ -68,7 +68,7 @@
* \{ */
WorkSpace *ED_workspace_add(
- Main *bmain, const char *name, SceneLayer *act_render_layer)
+ Main *bmain, const char *name, SceneLayer *act_render_layer, const char *engine)
{
WorkSpace *workspace = BKE_workspace_add(bmain, name);
@@ -78,6 +78,8 @@ WorkSpace *ED_workspace_add(
BKE_workspace_render_layer_set(workspace, act_render_layer);
+ BKE_workspace_engine_set(workspace, engine);
+
return workspace;
}
@@ -215,7 +217,8 @@ WorkSpace *ED_workspace_duplicate(
ListBase *layouts_old = BKE_workspace_layouts_get(workspace_old);
WorkSpace *workspace_new = ED_workspace_add(
bmain, workspace_old->id.name + 2,
- BKE_workspace_render_layer_get(workspace_old));
+ BKE_workspace_render_layer_get(workspace_old),
+ BKE_workspace_engine_get(workspace_old));
ListBase *transform_orientations_old = BKE_workspace_transform_orientations_get(workspace_old);
ListBase *transform_orientations_new = BKE_workspace_transform_orientations_get(workspace_new);
diff --git a/source/blender/makesdna/DNA_layer_types.h b/source/blender/makesdna/DNA_layer_types.h
index 03ca6cd8c5c..41362e67ad8 100644
--- a/source/blender/makesdna/DNA_layer_types.h
+++ b/source/blender/makesdna/DNA_layer_types.h
@@ -74,7 +74,6 @@ typedef struct LayerCollection {
typedef struct SceneLayer {
struct SceneLayer *next, *prev;
char name[64]; /* MAX_NAME */
- char engine[32]; /* render engine */
short active_collection;
short flag;
short pad[2];
diff --git a/source/blender/makesdna/DNA_workspace_types.h b/source/blender/makesdna/DNA_workspace_types.h
index 3cd2772550c..0f826a9c51a 100644
--- a/source/blender/makesdna/DNA_workspace_types.h
+++ b/source/blender/makesdna/DNA_workspace_types.h
@@ -80,6 +80,8 @@ typedef struct WorkSpace {
int flags DNA_PRIVATE_WORKSPACE; /* enum WorkSpaceFlags */
struct SceneLayer *render_layer DNA_PRIVATE_WORKSPACE;
+
+ char engine[32]; /* Render Engine. */
} WorkSpace;
/* internal struct, but exported for read/write */
diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c
index bddc3025123..aa84700d53c 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -3036,59 +3036,6 @@ static void rna_LayerObjects_selected_begin(CollectionPropertyIterator *iter, Po
rna_iterator_listbase_begin(iter, &sl->object_bases, rna_SceneLayer_objects_selected_skip);
}
-static void rna_SceneLayer_engine_set(PointerRNA *ptr, int value)
-{
- SceneLayer *sl = (SceneLayer *)ptr->data;
- RenderEngineType *type = BLI_findlink(&R_engines, value);
-
- if (type)
- BKE_scene_layer_engine_set(sl, type->idname);
-}
-
-static EnumPropertyItem *rna_SceneLayer_engine_itemf(
- bContext *UNUSED(C), PointerRNA *UNUSED(ptr), Prope
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list