[Bf-blender-cvs] [e15c16f11c] clay-engine: Changes to DNA/RNA. Follow same layout as sensors.

Clément Foucault noreply at git.blender.org
Mon Jan 30 02:25:31 CET 2017


Commit: e15c16f11c08a13ef8288ee5000000d2d317634c
Author: Clément Foucault
Date:   Mon Jan 30 02:24:18 2017 +0100
Branches: clay-engine
https://developer.blender.org/rBe15c16f11c08a13ef8288ee5000000d2d317634c

Changes to DNA/RNA. Follow same layout as sensors.

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

M	release/scripts/startup/bl_ui/properties_render.py
M	source/blender/draw/DRW_engine.h
M	source/blender/draw/engines/clay/clay.c
M	source/blender/draw/intern/DRW_render.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/rna_material.c
M	source/blender/makesrna/intern/rna_scene.c

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

diff --git a/release/scripts/startup/bl_ui/properties_render.py b/release/scripts/startup/bl_ui/properties_render.py
index 593072992f..b1c68559d8 100644
--- a/release/scripts/startup/bl_ui/properties_render.py
+++ b/release/scripts/startup/bl_ui/properties_render.py
@@ -590,17 +590,17 @@ class RENDER_PT_clay(RenderButtonsPanel, Panel):
 
     def draw(self, context):
         layout = self.layout;
-        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")
+        # settings = context.scene.engine_settings
+        # 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")
 
 
 if __name__ == "__main__":  # only for live edit.
diff --git a/source/blender/draw/DRW_engine.h b/source/blender/draw/DRW_engine.h
index 4f86e3fcd9..93b5e69d4d 100644
--- a/source/blender/draw/DRW_engine.h
+++ b/source/blender/draw/DRW_engine.h
@@ -39,7 +39,7 @@ void DRW_engines_free(void);
 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);
+void *DRW_material_settings_get(struct Material *ma, const char *engine_name, void **runtime);
+void *DRW_render_settings_get(struct Scene *scene, const char *engine_name, void **runtime);
 
 #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 6e155776bb..d084a3383b 100644
--- a/source/blender/draw/engines/clay/clay.c
+++ b/source/blender/draw/engines/clay/clay.c
@@ -237,7 +237,7 @@ static struct GPUTexture *create_jitter_texture(void)
 
 static void clay_material_settings_init(MaterialEngineSettingsClay *ma)
 {
-	ma->matcap_icon = 0;
+	ma->matcap_icon = ICON_MATCAP_01;
 	ma->matcap_rot = 0.0f;
 	ma->matcap_hue = 0.5f;
 	ma->matcap_sat = 0.5f;
@@ -252,8 +252,6 @@ RenderEngineSettings *CLAY_render_settings_create(void)
 {
 	RenderEngineSettingsClay *settings = MEM_callocN(sizeof(RenderEngineSettingsClay), "RenderEngineSettingsClay");
 
-	BLI_strncpy(settings->res.name, RE_engine_id_BLENDER_CLAY, 64);
-
 	clay_material_settings_init((MaterialEngineSettingsClay *)settings);
 
 	settings->ssao_samples = 32;
@@ -265,8 +263,6 @@ MaterialEngineSettings *CLAY_material_settings_create(void)
 {
 	MaterialEngineSettingsClay *settings = MEM_callocN(sizeof(MaterialEngineSettingsClay), "MaterialEngineSettingsClay");
 
-	BLI_strncpy(settings->mes.name, RE_engine_id_BLENDER_CLAY, 64);
-
 	clay_material_settings_init(settings);
 
 	return (MaterialEngineSettings *)settings;
@@ -366,7 +362,7 @@ static void CLAY_ssao_setup(void)
 	};
 	int i;
 	float *size = DRW_viewport_size_get();
-	RenderEngineSettingsClay *settings = DRW_render_settings_get(NULL, RE_engine_id_BLENDER_CLAY);
+	RenderEngineSettingsClay *settings = DRW_render_settings_get(NULL, RE_engine_id_BLENDER_CLAY, NULL);
 
 	DRW_get_dfdy_factors(dfdyfacs);
 
@@ -429,33 +425,33 @@ static DRWShadingGroup *CLAY_shgroup_create(DRWPass *pass, int *UNUSED(material_
 	return grp;
 }
 
-static void CLAY_update_material_runtime(MaterialEngineSettingsClay *settings)
+static void CLAY_update_material_runtime(MaterialEngineSettingsClay *settings, MaterialRuntimeClay **runtime)
 {
-	MaterialRuntimeClay *runtime;
+	MaterialRuntimeClay *rt;
 
-	if (!settings->mes.runtime) {
-		runtime = MEM_mallocN(sizeof(MaterialRuntimeClay), "MaterialRuntimeClay");
-		runtime->flag = CLAY_OUTDATED;
-		settings->mes.runtime = runtime;
+	if (*runtime == NULL) {
+		rt = MEM_mallocN(sizeof(MaterialRuntimeClay), "MaterialRuntimeClay");
+		rt->flag = CLAY_OUTDATED;
 		data.ubo_flag |= CLAY_UBO_CLEAR;
+		*runtime = rt;
 	}
 
-	runtime = settings->mes.runtime;
+	rt = *runtime;
 
-	if (runtime->flag & CLAY_OUTDATED) {
+	if (rt->flag & CLAY_OUTDATED) {
 
 		/* Update default material */
-		runtime->matcap_rot[0] = cosf(settings->matcap_rot * 3.14159f * 2.0f);
-		runtime->matcap_rot[1] = sinf(settings->matcap_rot * 3.14159f * 2.0f);
+		rt->matcap_rot[0] = cosf(settings->matcap_rot * 3.14159f * 2.0f);
+		rt->matcap_rot[1] = sinf(settings->matcap_rot * 3.14159f * 2.0f);
 
-		runtime->matcap_hsv[0] = settings->matcap_hue + 0.5f;
-		runtime->matcap_hsv[1] = settings->matcap_sat * 2.0f;
-		runtime->matcap_hsv[2] = settings->matcap_val * 2.0f;
+		rt->matcap_hsv[0] = settings->matcap_hue + 0.5f;
+		rt->matcap_hsv[1] = settings->matcap_sat * 2.0f;
+		rt->matcap_hsv[2] = settings->matcap_val * 2.0f;
 
-		runtime->ssao_params_var[0] = settings->ssao_distance;
-		runtime->ssao_params_var[1] = settings->ssao_factor_cavity;
-		runtime->ssao_params_var[2] = settings->ssao_factor_edge;
-		runtime->ssao_params_var[3] = settings->ssao_attenuation;
+		rt->ssao_params_var[0] = settings->ssao_distance;
+		rt->ssao_params_var[1] = settings->ssao_factor_cavity;
+		rt->ssao_params_var[2] = settings->ssao_factor_edge;
+		rt->ssao_params_var[3] = settings->ssao_attenuation;
 
 		if (settings->matcap_icon < ICON_MATCAP_01 ||
 		    settings->matcap_icon > ICON_MATCAP_24)
@@ -463,16 +459,16 @@ static void CLAY_update_material_runtime(MaterialEngineSettingsClay *settings)
 			settings->matcap_icon = ICON_MATCAP_01;
 		}
 
-		runtime->matcap_id = matcap_to_index(settings->matcap_icon);
+		rt->matcap_id = matcap_to_index(settings->matcap_icon);
 
-		if ((runtime->type != settings->type)) {
+		if ((rt->type != settings->type)) {
 			data.ubo_flag |= CLAY_UBO_CLEAR;
 		}
 
-		runtime->type = settings->type;
+		rt->type = settings->type;
 
 		data.ubo_flag |= CLAY_UBO_REFRESH;
-		runtime->flag &= ~CLAY_OUTDATED;
+		rt->flag &= ~CLAY_OUTDATED;
 	}
 }
 
@@ -491,36 +487,34 @@ static void update_ubo_storage(MaterialRuntimeClay *runtime, unsigned int curren
 static void CLAY_update_material_ubo(const struct bContext *C)
 {
 	Main *bmain = CTX_data_main(C);
+	MaterialRuntimeClay *runtime;
 
 	/* Update Default materials */
 	for (Scene *sce = bmain->scene.first; sce; sce = sce->id.next) {
 		/* Using render settings as material settings */
-		MaterialEngineSettingsClay *res = DRW_render_settings_get(sce, RE_engine_id_BLENDER_CLAY);
-		CLAY_update_material_runtime(res);
+		MaterialEngineSettingsClay *res = DRW_render_settings_get(sce, RE_engine_id_BLENDER_CLAY, (void **)&runtime);
+		CLAY_update_material_runtime(res, &runtime);
 	}
 
 	/* Update Scene Materials */
 	for (Material *mat = bmain->mat.first; mat; mat = mat->id.next) {
-		MaterialEngineSettingsClay *mesc = DRW_material_settings_get(mat, RE_engine_id_BLENDER_CLAY);
-		CLAY_update_material_runtime(mesc);
+		MaterialEngineSettingsClay *mesc = DRW_material_settings_get(mat, RE_engine_id_BLENDER_CLAY, (void **)&runtime);
+		CLAY_update_material_runtime(mesc, &runtime);
 	}
 
 	if (data.ubo_flag & CLAY_UBO_REFRESH) {
-		MaterialRuntimeClay *runtime;
 		int current_id = 0;
 
 		/* Default materials */
 		for (Scene *sce = bmain->scene.first; sce; sce = sce->id.next) {
-			RenderEngineSettingsClay *ed = DRW_render_settings_get(sce, RE_engine_id_BLENDER_CLAY);
-			runtime = ed->res.runtime;
+			DRW_render_settings_get(sce, RE_engine_id_BLENDER_CLAY, (void **)&runtime);
 			update_ubo_storage(runtime, current_id);
 			current_id++;
 		}
 
 		/* TODO only add materials linked to geometry */
 		for (Material *mat = bmain->mat.first; mat; mat = mat->id.next) {
-			MaterialEngineSettingsClay *mesc = DRW_material_settings_get(mat, RE_engine_id_BLENDER_CLAY);
-			runtime = mesc->mes.runtime;
+			DRW_material_settings_get(mat, RE_engine_id_BLENDER_CLAY, (void **)&runtime);
 			update_ubo_storage(runtime, current_id);
 			current_id++;
 		}
@@ -547,12 +541,10 @@ static void CLAY_create_cache(CLAY_PassList *passes, const struct bContext *C)
 	/* Clay Pass */
 	{
 		MaterialRuntimeClay *runtime;
-		RenderEngineSettingsClay *settings = DRW_render_settings_get(NULL, RE_engine_id_BLENDER_CLAY);
+		DRW_render_settings_get(NULL, RE_engine_id_BLENDER_CLAY, (void **)&runtime);
 
 		passes->clay_pass = DRW_pass_create("Clay Pass", DRW_STATE_WRITE_COLOR);
 
-		runtime = settings->res.runtime;
-
 		default_shgrp = CLAY_shgroup_create(passes->clay_pass, &runtime->material_id);
 		DRW_shgroup_uniform_block(default_shgrp, "material_block", data.mat_ubo, 0);
 	}
@@ -620,7 +612,6 @@ static void CLAY_view_draw(RenderEngine *UNUSED(engine), const struct bContext *
 	/* or render properties / materials change */
 #ifdef WITH_VIEWPORT_CACHE_TEST
 	static bool once = false;
-	printf("AA\n");
 #endif
 	if (DRW_viewport_cache_is_dirty()
 #ifdef WITH_VIEWPORT_CACHE_TEST
diff --git a/source/blender/draw/intern/DRW_render.h b/source/blender/draw/intern/DRW_render.h
index 16b3000a46..a486c10fe5 100644
--- a/source/blender/draw/intern/DRW_render.h
+++ b/source/blender/draw/intern/DRW_render.h
@@ -200,8 +200,8 @@ bool DRW_viewport_cache_is_dirty(void);
 
 /* Settings */
 #ifndef __DRW_ENGINE_H__
-void *DRW_material_settings_get(Material *ma, const char *engine_name);
-void *DRW_render_settings_get(Scene *scene, const char *engine_name);
+void *DRW_material_settings_get(Material *ma, const char *engine_name, void **runtime);
+void *DRW_render_settings_get(Scene *scene, const char *engine_name, void **runtime);
 #endif /* __DRW_ENGINE_H__ */
 
 /* Draw commands */
diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list