[Bf-blender-cvs] [f340f4a2f4e] blender2.8: Eevee: CodeStyle: Separate Shader initialization.

Clément Foucault noreply at git.blender.org
Mon Dec 4 17:33:51 CET 2017


Commit: f340f4a2f4e52cc75a43bf2ab8aa0c27708075fa
Author: Clément Foucault
Date:   Mon Dec 4 17:21:17 2017 +0100
Branches: blender2.8
https://developer.blender.org/rBf340f4a2f4e52cc75a43bf2ab8aa0c27708075fa

Eevee: CodeStyle: Separate Shader initialization.

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

M	source/blender/draw/engines/eevee/eevee_lightprobes.c

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

diff --git a/source/blender/draw/engines/eevee/eevee_lightprobes.c b/source/blender/draw/engines/eevee/eevee_lightprobes.c
index 56bfc2f8f23..d7ccc1a5336 100644
--- a/source/blender/draw/engines/eevee/eevee_lightprobes.c
+++ b/source/blender/draw/engines/eevee/eevee_lightprobes.c
@@ -190,125 +190,110 @@ static void planar_pool_ensure_alloc(EEVEE_Data *vedata, int num_planar_ref)
 	}
 }
 
-void EEVEE_lightprobes_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *UNUSED(vedata))
+static void lightprobe_shaders_init(void)
 {
-	bool update_all = false;
-	const DRWContextState *draw_ctx = DRW_context_state_get();
-	ViewLayer *view_layer = draw_ctx->view_layer;
-	IDProperty *props = BKE_view_layer_engine_evaluated_get(view_layer, COLLECTION_MODE_NONE, RE_engine_id_BLENDER_EEVEE);
-
-	/* Shaders */
-	if (!e_data.probe_filter_glossy_sh) {
-		char *shader_str = NULL;
-
-		DynStr *ds_frag = BLI_dynstr_new();
-		BLI_dynstr_append(ds_frag, datatoc_bsdf_common_lib_glsl);
-		BLI_dynstr_append(ds_frag, datatoc_bsdf_sampling_lib_glsl);
-		BLI_dynstr_append(ds_frag, datatoc_lightprobe_filter_glossy_frag_glsl);
-		shader_str = BLI_dynstr_get_cstring(ds_frag);
-		BLI_dynstr_free(ds_frag);
-
-		e_data.probe_filter_glossy_sh = DRW_shader_create(
-		        datatoc_lightprobe_vert_glsl, datatoc_lightprobe_geom_glsl, shader_str,
-		        "#define HAMMERSLEY_SIZE " STRINGIFY(HAMMERSLEY_SIZE) "\n"
-		        "#define NOISE_SIZE 64\n");
-
-		e_data.probe_default_sh = DRW_shader_create(
-		        datatoc_background_vert_glsl, NULL, datatoc_default_world_frag_glsl, NULL);
-
-		MEM_freeN(shader_str);
-
-		ds_frag = BLI_dynstr_new();
-		BLI_dynstr_append(ds_frag, datatoc_bsdf_common_lib_glsl);
-		BLI_dynstr_append(ds_frag, datatoc_bsdf_sampling_lib_glsl);
-		BLI_dynstr_append(ds_frag, datatoc_lightprobe_filter_diffuse_frag_glsl);
-		shader_str = BLI_dynstr_get_cstring(ds_frag);
-		BLI_dynstr_free(ds_frag);
-
-		e_data.probe_filter_diffuse_sh = DRW_shader_create_fullscreen(
-		        shader_str,
-#if defined(IRRADIANCE_SH_L2)
-		        "#define IRRADIANCE_SH_L2\n"
-#elif defined(IRRADIANCE_CUBEMAP)
-		        "#define IRRADIANCE_CUBEMAP\n"
-#elif defined(IRRADIANCE_HL2)
-		        "#define IRRADIANCE_HL2\n"
-#endif
-		        "#define HAMMERSLEY_SIZE " STRINGIFY(HAMMERSLEY_SIZE) "\n"
-		        "#define NOISE_SIZE 64\n");
-
-		MEM_freeN(shader_str);
-
-		ds_frag = BLI_dynstr_new();
-		BLI_dynstr_append(ds_frag, datatoc_bsdf_common_lib_glsl);
-		BLI_dynstr_append(ds_frag, datatoc_bsdf_sampling_lib_glsl);
-		BLI_dynstr_append(ds_frag, datatoc_lightprobe_filter_visibility_frag_glsl);
-		shader_str = BLI_dynstr_get_cstring(ds_frag);
-		BLI_dynstr_free(ds_frag);
-
-		e_data.probe_filter_visibility_sh = DRW_shader_create_fullscreen(
-		        shader_str,
-		        "#define HAMMERSLEY_SIZE " STRINGIFY(HAMMERSLEY_SIZE) "\n"
-		        "#define NOISE_SIZE 64\n");
-
-		MEM_freeN(shader_str);
-
-		ds_frag = BLI_dynstr_new();
-		BLI_dynstr_append(ds_frag, datatoc_octahedron_lib_glsl);
-		BLI_dynstr_append(ds_frag, datatoc_bsdf_common_lib_glsl);
-		BLI_dynstr_append(ds_frag, datatoc_irradiance_lib_glsl);
-		BLI_dynstr_append(ds_frag, datatoc_lightprobe_lib_glsl);
-		BLI_dynstr_append(ds_frag, datatoc_lightprobe_grid_display_frag_glsl);
-		shader_str = BLI_dynstr_get_cstring(ds_frag);
-		BLI_dynstr_free(ds_frag);
-
-		e_data.probe_grid_display_sh = DRW_shader_create(
-		        datatoc_lightprobe_grid_display_vert_glsl, NULL, shader_str,
+	const char *filter_defines = "#define HAMMERSLEY_SIZE " STRINGIFY(HAMMERSLEY_SIZE) "\n"
 #if defined(IRRADIANCE_SH_L2)
-		        "#define IRRADIANCE_SH_L2\n"
+	                             "#define IRRADIANCE_SH_L2\n"
 #elif defined(IRRADIANCE_CUBEMAP)
-		        "#define IRRADIANCE_CUBEMAP\n"
+	                             "#define IRRADIANCE_CUBEMAP\n"
 #elif defined(IRRADIANCE_HL2)
-		        "#define IRRADIANCE_HL2\n"
+	                             "#define IRRADIANCE_HL2\n"
 #endif
-		        );
+	                             "#define NOISE_SIZE 64\n";
 
-		MEM_freeN(shader_str);
+	char *shader_str = NULL;
 
-		e_data.probe_grid_fill_sh = DRW_shader_create_fullscreen(datatoc_lightprobe_grid_fill_frag_glsl,
-#if defined(IRRADIANCE_SH_L2)
-		        "#define IRRADIANCE_SH_L2\n"
-#elif defined(IRRADIANCE_CUBEMAP)
-		        "#define IRRADIANCE_CUBEMAP\n"
-#elif defined(IRRADIANCE_HL2)
-		        "#define IRRADIANCE_HL2\n"
-#endif
-		        );
+	DynStr *ds_frag = BLI_dynstr_new();
+	BLI_dynstr_append(ds_frag, datatoc_bsdf_common_lib_glsl);
+	BLI_dynstr_append(ds_frag, datatoc_bsdf_sampling_lib_glsl);
+	BLI_dynstr_append(ds_frag, datatoc_lightprobe_filter_glossy_frag_glsl);
+	shader_str = BLI_dynstr_get_cstring(ds_frag);
+	BLI_dynstr_free(ds_frag);
+
+	e_data.probe_filter_glossy_sh = DRW_shader_create(
+	        datatoc_lightprobe_vert_glsl, datatoc_lightprobe_geom_glsl, shader_str, filter_defines);
+
+	e_data.probe_default_sh = DRW_shader_create(
+	        datatoc_background_vert_glsl, NULL, datatoc_default_world_frag_glsl, NULL);
+
+	MEM_freeN(shader_str);
+
+	ds_frag = BLI_dynstr_new();
+	BLI_dynstr_append(ds_frag, datatoc_bsdf_common_lib_glsl);
+	BLI_dynstr_append(ds_frag, datatoc_bsdf_sampling_lib_glsl);
+	BLI_dynstr_append(ds_frag, datatoc_lightprobe_filter_diffuse_frag_glsl);
+	shader_str = BLI_dynstr_get_cstring(ds_frag);
+	BLI_dynstr_free(ds_frag);
 
-		ds_frag = BLI_dynstr_new();
-		BLI_dynstr_append(ds_frag, datatoc_octahedron_lib_glsl);
-		BLI_dynstr_append(ds_frag, datatoc_bsdf_common_lib_glsl);
-		BLI_dynstr_append(ds_frag, datatoc_lightprobe_lib_glsl);
-		BLI_dynstr_append(ds_frag, datatoc_lightprobe_cube_display_frag_glsl);
-		shader_str = BLI_dynstr_get_cstring(ds_frag);
-		BLI_dynstr_free(ds_frag);
+	e_data.probe_filter_diffuse_sh = DRW_shader_create_fullscreen(shader_str, filter_defines);
 
-		e_data.probe_cube_display_sh = DRW_shader_create(
-		        datatoc_lightprobe_cube_display_vert_glsl, NULL, shader_str, NULL);
+	MEM_freeN(shader_str);
 
-		MEM_freeN(shader_str);
+	ds_frag = BLI_dynstr_new();
+	BLI_dynstr_append(ds_frag, datatoc_bsdf_common_lib_glsl);
+	BLI_dynstr_append(ds_frag, datatoc_bsdf_sampling_lib_glsl);
+	BLI_dynstr_append(ds_frag, datatoc_lightprobe_filter_visibility_frag_glsl);
+	shader_str = BLI_dynstr_get_cstring(ds_frag);
+	BLI_dynstr_free(ds_frag);
 
-		e_data.probe_planar_display_sh = DRW_shader_create(
-		        datatoc_lightprobe_planar_display_vert_glsl, NULL,
-		        datatoc_lightprobe_planar_display_frag_glsl, NULL);
+	e_data.probe_filter_visibility_sh = DRW_shader_create_fullscreen(shader_str, filter_defines);
 
-		e_data.probe_planar_downsample_sh = DRW_shader_create(
-		        datatoc_lightprobe_planar_downsample_vert_glsl,
-		        datatoc_lightprobe_planar_downsample_geom_glsl,
-		        datatoc_lightprobe_planar_downsample_frag_glsl,
-		        NULL);
+	MEM_freeN(shader_str);
 
-		e_data.hammersley = create_hammersley_sample_texture(HAMMERSLEY_SIZE);
+	ds_frag = BLI_dynstr_new();
+	BLI_dynstr_append(ds_frag, datatoc_octahedron_lib_glsl);
+	BLI_dynstr_append(ds_frag, datatoc_bsdf_common_lib_glsl);
+	BLI_dynstr_append(ds_frag, datatoc_irradiance_lib_glsl);
+	BLI_dynstr_append(ds_frag, datatoc_lightprobe_lib_glsl);
+	BLI_dynstr_append(ds_frag, datatoc_lightprobe_grid_display_frag_glsl);
+	shader_str = BLI_dynstr_get_cstring(ds_frag);
+	BLI_dynstr_free(ds_frag);
+
+	e_data.probe_grid_display_sh = DRW_shader_create(
+	        datatoc_lightprobe_grid_display_vert_glsl, NULL, shader_str, filter_defines);
+
+	MEM_freeN(shader_str);
+
+	e_data.probe_grid_fill_sh = DRW_shader_create_fullscreen(
+	        datatoc_lightprobe_grid_fill_frag_glsl, filter_defines);
+
+	ds_frag = BLI_dynstr_new();
+	BLI_dynstr_append(ds_frag, datatoc_octahedron_lib_glsl);
+	BLI_dynstr_append(ds_frag, datatoc_bsdf_common_lib_glsl);
+	BLI_dynstr_append(ds_frag, datatoc_lightprobe_lib_glsl);
+	BLI_dynstr_append(ds_frag, datatoc_lightprobe_cube_display_frag_glsl);
+	shader_str = BLI_dynstr_get_cstring(ds_frag);
+	BLI_dynstr_free(ds_frag);
+
+	e_data.probe_cube_display_sh = DRW_shader_create(
+	        datatoc_lightprobe_cube_display_vert_glsl, NULL, shader_str, NULL);
+
+	MEM_freeN(shader_str);
+
+	e_data.probe_planar_display_sh = DRW_shader_create(
+	        datatoc_lightprobe_planar_display_vert_glsl, NULL,
+	        datatoc_lightprobe_planar_display_frag_glsl, NULL);
+
+	e_data.probe_planar_downsample_sh = DRW_shader_create(
+	        datatoc_lightprobe_planar_downsample_vert_glsl,
+	        datatoc_lightprobe_planar_downsample_geom_glsl,
+	        datatoc_lightprobe_planar_downsample_frag_glsl,
+	        NULL);
+
+	e_data.hammersley = create_hammersley_sample_texture(HAMMERSLEY_SIZE);
+}
+
+void EEVEE_lightprobes_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *UNUSED(vedata))
+{
+	bool update_all = false;
+	const DRWContextState *draw_ctx = DRW_context_state_get();
+	ViewLayer *view_layer = draw_ctx->view_layer;
+	IDProperty *props = BKE_view_layer_engine_evaluated_get(view_layer, COLLECTION_MODE_NONE, RE_engine_id_BLENDER_EEVEE);
+
+	/* Shaders */
+	if (!e_data.probe_filter_glossy_sh) {
+		lightprobe_shaders_init();
 	}
 
 	if (!sldata->probes) {



More information about the Bf-blender-cvs mailing list