[Bf-blender-cvs] [bbbb8405b6] clay-engine: Removed Batch storage Also lots of renaming Small visual tweaks Material Settings Struct is now shared by Scene and material

Clément Foucault noreply at git.blender.org
Mon Jan 23 09:55:53 CET 2017


Commit: bbbb8405b6547cdff9f248da86b2205c7963c3dd
Author: Clément Foucault
Date:   Fri Jan 20 01:11:42 2017 +0100
Branches: clay-engine
https://developer.blender.org/rBbbbb8405b6547cdff9f248da86b2205c7963c3dd

Removed Batch storage
Also lots of renaming
Small visual tweaks
Material Settings Struct is now shared by Scene and material

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

M	release/scripts/startup/bl_ui/properties_render.py
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/draw/engines/clay/clay.c
M	source/blender/draw/engines/clay/clay.h
M	source/blender/draw/engines/clay/shaders/clay_frag.glsl
M	source/blender/draw/engines/clay/shaders/ssao_groundtruth.glsl
M	source/blender/draw/intern/DRW_render.h
M	source/blender/draw/intern/draw_manager.c
M	source/blender/draw/intern/draw_mode_pass.c
M	source/blender/draw/intern/draw_mode_pass.h
M	source/blender/makesdna/DNA_material_types.h
M	source/blender/makesdna/DNA_scene_types.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 8ddc99af70..0d473d79ed 100644
--- a/release/scripts/startup/bl_ui/properties_render.py
+++ b/release/scripts/startup/bl_ui/properties_render.py
@@ -591,15 +591,16 @@ class RENDER_PT_clay(RenderButtonsPanel, Panel):
     def draw(self, context):
         layout = self.layout;
         settings = context.scene.clay_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")
+        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")
         layout.prop(settings, "ssao_samples")
 
 
diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c
index 2d9b4fcd2b..efaea4f9c3 100644
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@ -558,6 +558,10 @@ void BKE_scene_free(Scene *sce)
 	BKE_collection_master_free(sce);
 	MEM_freeN(sce->collection);
 	sce->collection = NULL;
+
+	/* Runtime Engine Data */
+	if (sce->claydata.defsettings.runtime)
+		MEM_freeN(sce->claydata.defsettings.runtime);
 }
 
 void BKE_scene_init(Scene *sce)
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 0f79a42111..e98e72295c 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -6197,6 +6197,8 @@ 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;
 }
 
 /* ************ READ WM ***************** */
diff --git a/source/blender/blenloader/intern/versioning_280.c b/source/blender/blenloader/intern/versioning_280.c
index 8ae921ab69..64340ebcdb 100644
--- a/source/blender/blenloader/intern/versioning_280.c
+++ b/source/blender/blenloader/intern/versioning_280.c
@@ -30,6 +30,7 @@
 
 #include "DNA_object_types.h"
 #include "DNA_layer_types.h"
+#include "DNA_material_types.h"
 #include "DNA_scene_types.h"
 #include "DNA_genfile.h"
 
@@ -165,14 +166,14 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *main)
 			for (Scene *scene = main->scene.first; scene; scene = scene->id.next) {
 				EngineDataClay *settings = &scene->claydata;
 
-				settings->matcap_rot = 0.0f;
-				settings->matcap_hue = 0.5f;
-				settings->matcap_sat = 0.5f;
-				settings->matcap_val = 0.5f;
-				settings->ssao_distance = 0.2;
-				settings->ssao_attenuation = 1.0f;
-				settings->ssao_factor_cavity = 1.0f;
-				settings->ssao_factor_edge = 1.0f;
+				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;
 			}
 		}
diff --git a/source/blender/draw/engines/clay/clay.c b/source/blender/draw/engines/clay/clay.c
index 32d18e8da1..48fbb435e3 100644
--- a/source/blender/draw/engines/clay/clay.c
+++ b/source/blender/draw/engines/clay/clay.c
@@ -43,13 +43,6 @@ extern char datatoc_ssao_groundtruth_glsl[];
 
 /* Storage */
 
-typedef struct CLAY_BatchStorage {
-	float matcap_rot[2];
-	int matcap_id;
-	float matcap_hsv[3];
-	float ssao_params_var[4];
-} CLAY_BatchStorage;
-
 static struct CLAY_data {
 	/* Depth Pre Pass */
 	struct GPUShader *depth_sh;
@@ -61,7 +54,6 @@ static struct CLAY_data {
 	float matcap_colors[24][3];
 
 	/* Ssao */
-	float dfdyfac[2];
 	float winmat[4][4];
 	float viewvecs[3][4];
 	float ssao_params[4];
@@ -111,7 +103,7 @@ typedef struct CLAY_PassList{
 	struct DRWPass *mode_ob_center_pass;
 } CLAY_PassList;
 
-// #define GTAO
+//#define GTAO
 
 /* Functions */
 
@@ -225,7 +217,7 @@ static struct GPUTexture *create_jitter_texture(void)
 	return DRW_texture_create_2D(64, 64, DRW_TEX_RG_16, DRW_TEX_FILTER | DRW_TEX_WRAP, &jitter[0][0]);
 }
 
-static void clay_engine_init(void)
+static void CLAY_engine_init(void)
 {
 	/* Create Texture Array */
 	if (!data.matcap_array) {
@@ -320,12 +312,12 @@ static void clay_engine_init(void)
 	}
 }
 
-static DRWBatch *clay_batch_create(DRWPass *pass, CLAY_BatchStorage *storage)
+static DRWShadingGroup *CLAY_shgroup_create(DRWPass *pass, int *matcap_id, float *matcap_rot, float *matcap_hsv, float *ssao_params_var)
 {
 	const int depthloc = 0, matcaploc = 1, jitterloc = 2, sampleloc = 3;
-	const bool use_rot = (storage->matcap_rot[1] != 0.0f);
-	const bool use_ao = (storage->ssao_params_var[1] != 0.0f || storage->ssao_params_var[2] != 0.0f);
-	const bool use_hsv = (storage->matcap_hsv[0] != 0.5f || storage->matcap_hsv[1] != 0.0f || storage->matcap_hsv[2] != 0.0f);
+	const bool use_rot = (matcap_rot[1] != 0.0f);
+	const bool use_ao = (ssao_params_var[1] != 0.0f || ssao_params_var[2] != 0.0f);
+	const bool use_hsv = (matcap_hsv[0] != 0.5f || matcap_hsv[1] != 0.5f || matcap_hsv[2] != 0.5f);
 	struct GPUShader *sh;
 
 	if (use_rot && use_ao && use_hsv) {
@@ -353,77 +345,94 @@ static DRWBatch *clay_batch_create(DRWPass *pass, CLAY_BatchStorage *storage)
 		sh = data.clay_sh[WITH_NONE];
 	}
 
-	DRWBatch *batch = DRW_batch_create(sh, pass, storage);
+	DRWShadingGroup *grp = DRW_shgroup_create(sh, pass);
 
-	DRW_batch_uniform_ivec2(batch, "screenres", DRW_viewport_size_get(), 1);
-	DRW_batch_uniform_buffer(batch, "depthtex", SCENE_DEPTH, depthloc);
-	DRW_batch_uniform_texture(batch, "matcaps", data.matcap_array, matcaploc);
-	DRW_batch_uniform_int(batch, "matcap_index", &storage->matcap_id, 1);
-	DRW_batch_uniform_mat4(batch, "WinMatrix", (float *)data.winmat);
-	DRW_batch_uniform_vec4(batch, "viewvecs", (float *)data.viewvecs, 3);
-	DRW_batch_uniform_vec4(batch, "ssao_params", data.ssao_params, 1);
+	DRW_shgroup_uniform_ivec2(grp, "screenres", DRW_viewport_size_get(), 1);
+	DRW_shgroup_uniform_buffer(grp, "depthtex", SCENE_DEPTH, depthloc);
+	DRW_shgroup_uniform_texture(grp, "matcaps", data.matcap_array, matcaploc);
+	DRW_shgroup_uniform_int(grp, "matcap_index", matcap_id, 1);
+	DRW_shgroup_uniform_mat4(grp, "WinMatrix", (float *)data.winmat);
+	DRW_shgroup_uniform_vec4(grp, "viewvecs", (float *)data.viewvecs, 3);
+	DRW_shgroup_uniform_vec4(grp, "ssao_params", data.ssao_params, 1);
 
 	if (use_rot) {
-		DRW_batch_uniform_vec2(batch, "matcap_rotation", (float *)storage->matcap_rot, 1);
+		DRW_shgroup_uniform_vec2(grp, "matcap_rotation", matcap_rot, 1);
 	}
 
 	if (use_hsv) {
-		DRW_batch_uniform_vec3(batch, "matcap_hsv", (float *)storage->matcap_hsv, 1);
+		DRW_shgroup_uniform_vec3(grp, "matcap_hsv", matcap_hsv, 1);
 	}
 
 	if (use_ao) {
-		DRW_batch_uniform_vec3(batch, "matcaps_color", (float *)data.matcap_colors, 24);
-		DRW_batch_uniform_vec4(batch, "ssao_params_var", storage->ssao_params_var, 1);
-		DRW_batch_uniform_texture(batch, "ssao_jitter", data.jitter_tx, jitterloc);
-		DRW_batch_uniform_texture(batch, "ssao_samples", data.sampling_tx, sampleloc);
+		DRW_shgroup_uniform_vec3(grp, "matcaps_color", (float *)data.matcap_colors, 24);
+		DRW_shgroup_uniform_vec4(grp, "ssao_params_var", ssao_params_var, 1);
+#ifndef GTAO
+		DRW_shgroup_uniform_texture(grp, "ssao_jitter", data.jitter_tx, jitterloc);
+		DRW_shgroup_uniform_texture(grp, "ssao_samples", data.sampling_tx, sampleloc);
+#endif
 	}
 
 
-	return batch;
+	return grp;
+}
+
+static void CLAY_update_materials_runtime(MaterialSettingsClay *settings)
+{
+	MaterialDataClayRuntime *runtime_data;
+
+	if (!settings->runtime) {
+		settings->runtime = MEM_mallocN(sizeof(MaterialDataClayRuntime), "MaterialDataClayRuntime");
+	}
+
+	runtime_data = settings->runtime;
+
+	/* Update default material */
+	runtime_data->matcap_rot[0] = cosf(settings->matcap_rot * 3.14159f * 2.0f);
+	runtime_data->matcap_rot[1] = sinf(settings->matcap_rot * 3.14159f * 2.0f);
+
+	runtime_data->matcap_hsv[0] = settings->matcap_hue + 0.5f;
+	runtime_data->matcap_hsv[1] = settings->matcap_sat * 2.0f;
+	runtime_data->matcap_hsv[2] = settings->matcap_val * 2.0f;
+
+	runtime_data->ssao_params_var[0] = settings->ssao_distance;
+	runtime_data->ssao_params_var[1] = settings->ssao_factor_cavity;
+	runtime_data->ssao_params_var[2] = settings->ssao_factor_edge;
+	runtime_data->ssao_params_var[3] = settings->ssao_attenuation;
+
+	if (settings->matcap_icon < ICON_MATCAP_01 ||
+	    settings->matcap_icon > ICON_MATCAP_24)
+	{
+		settings->matcap_icon = ICON_MATCAP_01;
+	}
+
+	runtime_data->matcap_id = matcap_to_index(settings->matcap_icon);
 }
 
-static void clay_populate_passes(CLAY_PassList *passes, const struct bContext *C)
+static void CLAY_create_cache(CLAY_PassList *passes, const struct bContext *C)
 {
 	SceneLayer *sl = CTX_data_scene_layer(C);
-	DRWBatch *defaultbatch, *depthbatch;
+	DRWShadingGroup *defaultbatch, *depthbatch;
 	Object *ob;
 
 	/* Depth Pass */
 	{
 		passes->depth_pass = DRW_pass_create("Depth Pass", DRW_STATE_WRITE_DEPTH | DRW_STATE_DEPTH_LESS);
 
-		depthbatch = DRW_batch_create(data.depth_sh, passes->depth_pass, NULL);
+		depthbatch = DRW_shgroup_create(data.depth_sh, passes->depth_pass);
 	}
 
 	/* Clay Pass */
 	{
-		passes->clay_pass = DRW_pass_create("Clay Pass", DRW_STATE_WRITE_COLOR);
-
+		MaterialDataClayR

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list