[Bf-blender-cvs] [744f26b612] clay-engine: Change in DNA/RNA. Still missing freeing and read/write.

Clément Foucault noreply at git.blender.org
Sun Jan 29 21:36:56 CET 2017


Commit: 744f26b6129fc3723f9934d358060a3cb931474c
Author: Clément Foucault
Date:   Sun Jan 29 00:55:46 2017 +0100
Branches: clay-engine
https://developer.blender.org/rB744f26b6129fc3723f9934d358060a3cb931474c

Change in DNA/RNA. Still missing freeing and read/write.

===================================================================

M	release/scripts/startup/bl_ui/properties_material.py
M	release/scripts/startup/bl_ui/properties_render.py
M	source/blender/blenkernel/intern/material.c
M	source/blender/blenkernel/intern/scene.c
M	source/blender/blenloader/intern/readfile.c
M	source/blender/blenloader/intern/versioning_280.c
M	source/blender/blenloader/intern/writefile.c
M	source/blender/draw/DRW_engine.h
M	source/blender/draw/engines/clay/clay.c
M	source/blender/draw/engines/clay/clay.h
M	source/blender/draw/intern/DRW_render.h
M	source/blender/draw/intern/draw_cache.c
M	source/blender/draw/intern/draw_cache.h
M	source/blender/draw/intern/draw_manager.c
M	source/blender/makesdna/DNA_material_types.h
M	source/blender/makesdna/DNA_scene_types.h
M	source/blender/makesrna/RNA_access.h
M	source/blender/makesrna/intern/CMakeLists.txt
M	source/blender/makesrna/intern/rna_material.c
M	source/blender/makesrna/intern/rna_scene.c

===================================================================

diff --git a/release/scripts/startup/bl_ui/properties_material.py b/release/scripts/startup/bl_ui/properties_material.py
index 04662095a0..e8ba7cc803 100644
--- a/release/scripts/startup/bl_ui/properties_material.py
+++ b/release/scripts/startup/bl_ui/properties_material.py
@@ -1060,16 +1060,16 @@ class MATERIAL_PT_clay_settings(MaterialButtonsPanel, Panel):
     def draw(self, context):
         layout = self.layout;
         settings = context.material.clay_settings
-        layout.template_icon_view(settings, "matcap_icon")
-        layout.prop(settings, "type")
-        layout.prop(settings, "matcap_rotation")
-        layout.prop(settings, "matcap_hue")
-        layout.prop(settings, "matcap_saturation")
-        layout.prop(settings, "matcap_value")
-        layout.prop(settings, "ssao_factor_cavity")
-        layout.prop(settings, "ssao_factor_edge")
-        layout.prop(settings, "ssao_distance")
-        layout.prop(settings, "ssao_attenuation")
+        # layout.template_icon_view(settings, "matcap_icon")
+        # layout.prop(settings, "type")
+        # layout.prop(settings, "matcap_rotation")
+        # layout.prop(settings, "matcap_hue")
+        # layout.prop(settings, "matcap_saturation")
+        # layout.prop(settings, "matcap_value")
+        # layout.prop(settings, "ssao_factor_cavity")
+        # layout.prop(settings, "ssao_factor_edge")
+        # layout.prop(settings, "ssao_distance")
+        # layout.prop(settings, "ssao_attenuation")
 
 
 if __name__ == "__main__":  # only for live edit.
diff --git a/release/scripts/startup/bl_ui/properties_render.py b/release/scripts/startup/bl_ui/properties_render.py
index 0d473d79ed..593072992f 100644
--- a/release/scripts/startup/bl_ui/properties_render.py
+++ b/release/scripts/startup/bl_ui/properties_render.py
@@ -590,17 +590,16 @@ class RENDER_PT_clay(RenderButtonsPanel, Panel):
 
     def draw(self, context):
         layout = self.layout;
-        settings = context.scene.clay_settings
-        matsettings = context.scene.clay_settings.mat_settings
-        layout.template_icon_view(matsettings, "matcap_icon")
-        layout.prop(matsettings, "matcap_rotation")
-        layout.prop(matsettings, "matcap_hue")
-        layout.prop(matsettings, "matcap_saturation")
-        layout.prop(matsettings, "matcap_value")
-        layout.prop(matsettings, "ssao_factor_cavity")
-        layout.prop(matsettings, "ssao_factor_edge")
-        layout.prop(matsettings, "ssao_distance")
-        layout.prop(matsettings, "ssao_attenuation")
+        settings = context.scene.render_engine
+        layout.template_icon_view(settings, "matcap_icon")
+        layout.prop(settings, "matcap_rotation")
+        layout.prop(settings, "matcap_hue")
+        layout.prop(settings, "matcap_saturation")
+        layout.prop(settings, "matcap_value")
+        layout.prop(settings, "ssao_factor_cavity")
+        layout.prop(settings, "ssao_factor_edge")
+        layout.prop(settings, "ssao_distance")
+        layout.prop(settings, "ssao_attenuation")
         layout.prop(settings, "ssao_samples")
 
 
diff --git a/source/blender/blenkernel/intern/material.c b/source/blender/blenkernel/intern/material.c
index ad53d03f43..3fb7ee89ae 100644
--- a/source/blender/blenkernel/intern/material.c
+++ b/source/blender/blenkernel/intern/material.c
@@ -112,10 +112,7 @@ void BKE_material_free(Material *ma)
 	BKE_icon_id_delete((ID *)ma);
 	BKE_previewimg_free(&ma->preview);
 
-	if (ma->clay.runtime) {
-		MEM_freeN(ma->clay.runtime);
-		ma->clay.runtime = NULL;
-	}
+	/* TODO Free Engine Settings */
 }
 
 void BKE_material_init(Material *ma)
@@ -211,17 +208,6 @@ void BKE_material_init(Material *ma)
 	ma->mode2 = MA_CASTSHADOW;
 	ma->shade_flag = MA_APPROX_OCCLUSION;
 	ma->preview = NULL;
-
-	/* New engines */
-	ma->clay.matcap_rot = 0.0f;
-	ma->clay.matcap_hue = 0.5f;
-	ma->clay.matcap_sat = 0.5f;
-	ma->clay.matcap_val = 0.5f;
-	ma->clay.ssao_distance = 0.2;
-	ma->clay.ssao_attenuation = 1.0f;
-	ma->clay.ssao_factor_cavity = 1.0f;
-	ma->clay.ssao_factor_edge = 1.0f;
-	ma->clay.runtime = NULL;
 }
 
 Material *BKE_material_add(Main *bmain, const char *name)
@@ -263,7 +249,8 @@ Material *BKE_material_copy(Main *bmain, Material *ma)
 	BKE_previewimg_id_copy(&man->id, &ma->id);
 
 	BLI_listbase_clear(&man->gpumaterial);
-	man->clay.runtime = NULL;
+
+	/* TODO Duplicate Engine Settings and set runtime to NULL */
 
 	BKE_id_copy_ensure_local(bmain, &ma->id, &man->id);
 
@@ -296,7 +283,8 @@ Material *localize_material(Material *ma)
 		man->nodetree = ntreeLocalize(ma->nodetree);
 	
 	BLI_listbase_clear(&man->gpumaterial);
-	man->clay.runtime = NULL;
+
+	/* TODO Duplicate Engine Settings and set runtime to NULL */
 	
 	return man;
 }
@@ -1716,7 +1704,7 @@ void copy_matcopybuf(Material *ma)
 	matcopybuf.nodetree = ntreeCopyTree_ex(ma->nodetree, G.main, false);
 	matcopybuf.preview = NULL;
 	BLI_listbase_clear(&matcopybuf.gpumaterial);
-	matcopybuf.clay.runtime = NULL;
+	/* TODO Duplicate Engine Settings and set runtime to NULL */
 	matcopied = 1;
 }
 
diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c
index 2d92e03f76..b4aa47bf9d 100644
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@ -569,10 +569,7 @@ void BKE_scene_free(Scene *sce)
 	sce->collection = NULL;
 
 	/* Runtime Engine Data */
-	if (sce->claydata.defsettings.runtime) {
-		MEM_freeN(sce->claydata.defsettings.runtime);
-		sce->claydata.defsettings.runtime = NULL;
-	}
+	BLI_freelistN(&sce->engines_settings);
 }
 
 void BKE_scene_init(Scene *sce)
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index be5f16bef4..a8dc9d0ed8 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -3988,8 +3988,6 @@ static void direct_link_material(FileData *fd, Material *ma)
 	
 	ma->preview = direct_link_preview_image(fd, ma->preview);
 	BLI_listbase_clear(&ma->gpumaterial);
-
-	ma->clay.runtime = NULL;
 }
 
 /* ************ READ PARTICLE SETTINGS ***************** */
@@ -5949,6 +5947,7 @@ static void direct_link_scene(FileData *fd, Scene *sce)
 	RigidBodyWorld *rbw;
 	SceneLayer *sl;
 	SceneRenderLayer *srl;
+	RenderEngineSettings *res;
 	
 	sce->theDag = NULL;
 	sce->depsgraph = NULL;
@@ -6211,8 +6210,12 @@ static void direct_link_scene(FileData *fd, Scene *sce)
 		sl->basact = newdataadr(fd, sl->basact);
 		direct_link_layer_collections(fd, &sl->layer_collections);
 	}
-
-	sce->claydata.defsettings.runtime = NULL;
+#if 0
+	link_list(fd, &sce->engines_settings);
+	for (res = sce->engines_settings.first; res; res = res->next) {
+		res->runtime = NULL;
+	}
+#endif
 }
 
 /* ************ READ WM ***************** */
diff --git a/source/blender/blenloader/intern/versioning_280.c b/source/blender/blenloader/intern/versioning_280.c
index 954d5aeb10..92592e9fc6 100644
--- a/source/blender/blenloader/intern/versioning_280.c
+++ b/source/blender/blenloader/intern/versioning_280.c
@@ -178,37 +178,5 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *main)
 				BLI_strncpy(scene->collection->name, "Master Collection", sizeof(scene->collection->name));
 			}
 		}
-
-		/* Clay engine defaults */
-		if (!DNA_struct_elem_find(fd->filesdna, "Scene", "EngineDataClay", "claydata")) {
-			for (Scene *scene = main->scene.first; scene; scene = scene->id.next) {
-				EngineDataClay *settings = &scene->claydata;
-
-				settings->defsettings.matcap_rot = 0.0f;
-				settings->defsettings.matcap_hue = 0.5f;
-				settings->defsettings.matcap_sat = 0.5f;
-				settings->defsettings.matcap_val = 0.5f;
-				settings->defsettings.ssao_distance = 0.2;
-				settings->defsettings.ssao_attenuation = 1.0f;
-				settings->defsettings.ssao_factor_cavity = 1.0f;
-				settings->defsettings.ssao_factor_edge = 1.0f;
-				settings->ssao_samples = 32;
-			}
-		}
-
-		if (!DNA_struct_elem_find(fd->filesdna, "Material", "MaterialSettingsClay", "clay")) {
-			for (Material *mat = main->mat.first; mat; mat = mat->id.next) {
-				MaterialSettingsClay *clay = &mat->clay;
-
-				clay->matcap_rot = 0.0f;
-				clay->matcap_hue = 0.5f;
-				clay->matcap_sat = 0.5f;
-				clay->matcap_val = 0.5f;
-				clay->ssao_distance = 0.2;
-				clay->ssao_attenuation = 1.0f;
-				clay->ssao_factor_cavity = 1.0f;
-				clay->ssao_factor_edge = 1.0f;
-			}
-		}
 	}
 }
diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c
index 1621bb7843..4032dbe9d2 100644
--- a/source/blender/blenloader/intern/writefile.c
+++ b/source/blender/blenloader/intern/writefile.c
@@ -2666,6 +2666,7 @@ static void write_scenes(WriteData *wd, ListBase *scebase)
 	FreestyleModuleConfig *fmc;
 	FreestyleLineSet *fls;
 	SceneLayer *sl;
+	RenderEngineSettings *res;
 
 	sce = scebase->first;
 	while (sce) {
@@ -2878,7 +2879,11 @@ static void write_scenes(WriteData *wd, ListBase *scebase)
 			writelist(wd, DATA, ObjectBase, &sl->object_bases);
 			write_layer_collections(wd, &sl->layer_collections);
 		}
-
+#if 0
+		for (res = sce->engines_settings.first; res; res = res->next) {
+			/* How to write if struct type is not known? */
+		}
+#endif
 		sce = sce->id.next;
 	}
 
diff --git a/source/blender/draw/DRW_engine.h b/source/blender/draw/DRW_engine.h
index d58e2406fa..4f86e3fcd9 100644
--- a/source/blender/draw/DRW_engine.h
+++ b/source/blender/draw/DRW_engine.h
@@ -29,6 +29,8 @@
 //#define WITH_VIEWPORT_CACHE_TEST
 
 struct DRWPass;
+struct Material;
+struct Scene;
 
 void DRW_engines_init(void);
 void DRW_engines_free(void);
@@ -36,4 +38,8 @@ void DRW_engines_free(void);
 /* This is here because GPUViewport needs it */
 void DRW_pass_free(struct DRWPass *pass);
 
+/* Settings */
+void *DRW_material_settings_get(struct Material *ma, const char *engine_name);
+void *DRW_render_settings_get(struct Scene *scene, const char *engine_name);
+
 #endif /* __DRW_ENGINE_H__ */
\ No newline at end of file
diff --git a/source/blender/draw/engines/clay/clay.c b/source/blender/draw/engines/clay/clay.c
index cf5720b911..6e155776bb 100644
--- a/source/blender/draw/engines/clay/clay.c
+++ b/source/blender/draw/engines/clay/clay.c
@@ -235,6 +235,

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list