[Bf-blender-cvs] [56ba01a561f] blender2.8: Eevee: SSR: Fixed problem with un-initialized texture.

Clément Foucault noreply at git.blender.org
Mon Jul 24 15:56:09 CEST 2017


Commit: 56ba01a561f26d620dde51804f79da48950f199a
Author: Clément Foucault
Date:   Sat Jul 22 16:22:01 2017 +0200
Branches: blender2.8
https://developer.blender.org/rB56ba01a561f26d620dde51804f79da48950f199a

Eevee: SSR: Fixed problem with un-initialized texture.

Also add another debug buffer and cleanup in effect_ssr_frag.glsl

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

M	source/blender/draw/engines/eevee/eevee_effects.c
M	source/blender/draw/engines/eevee/shaders/effect_ssr_frag.glsl

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

diff --git a/source/blender/draw/engines/eevee/eevee_effects.c b/source/blender/draw/engines/eevee/eevee_effects.c
index 8707de281a4..837d0a3b317 100644
--- a/source/blender/draw/engines/eevee/eevee_effects.c
+++ b/source/blender/draw/engines/eevee/eevee_effects.c
@@ -1013,17 +1013,15 @@ void EEVEE_effects_do_ssr(EEVEE_SceneLayerData *UNUSED(sldata), EEVEE_Data *veda
 
 	if ((effects->enabled_effects & EFFECT_SSR) != 0) {
 		DefaultTextureList *dtxl = DRW_viewport_texture_list_get();
+		e_data.depth_src = dtxl->depth;
 
 		DRW_framebuffer_texture_attach(fbl->screen_tracing_fb, stl->g_data->ssr_hit_output, 0, 0);
 		DRW_framebuffer_texture_attach(fbl->screen_tracing_fb, stl->g_data->ssr_pdf_output, 1, 0);
 		DRW_framebuffer_bind(fbl->screen_tracing_fb);
 
 		if (stl->g_data->valid_double_buffer) {
-			/* Raytrace at halfres. */
-			e_data.depth_src = dtxl->depth;
+			/* Raytrace. */
 			DRW_draw_pass(psl->ssr_raytrace);
-
-			EEVEE_downsample_buffer(vedata, fbl->downsample_fb, txl->color_double_buffer, 9);
 		}
 		else {
 			float clear_col[4] = {-1.0f, -1.0f, -1.0f, -1.0f};
@@ -1033,8 +1031,9 @@ void EEVEE_effects_do_ssr(EEVEE_SceneLayerData *UNUSED(sldata), EEVEE_Data *veda
 		DRW_framebuffer_texture_detach(stl->g_data->ssr_hit_output);
 		DRW_framebuffer_texture_detach(stl->g_data->ssr_pdf_output);
 
+		EEVEE_downsample_buffer(vedata, fbl->downsample_fb, txl->color_double_buffer, 9);
+
 		/* Resolve at fullres */
-		e_data.depth_src = dtxl->depth;
 		DRW_framebuffer_texture_detach(dtxl->depth);
 		DRW_framebuffer_texture_detach(txl->ssr_normal_input);
 		DRW_framebuffer_texture_detach(txl->ssr_specrough_input);
@@ -1191,17 +1190,8 @@ void EEVEE_draw_effects(EEVEE_Data *vedata)
 	/* Tonemapping */
 	DRW_transform_to_display(effects->source_buffer);
 
-	/* If no post processes is enabled, buffers are still not swapped, do it now. */
-	SWAP_DOUBLE_BUFFERS();
-
-	if (!stl->g_data->valid_double_buffer && ((effects->enabled_effects & EFFECT_DOUBLE_BUFFER) != 0)) {
-		/* If history buffer is not valid request another frame.
-		 * This fix black reflections on area resize. */
-		DRW_viewport_request_redraw();
-	}
-
 	/* Debug : Ouput buffer to view. */
-	if ((G.debug_value > 0) && (G.debug_value <= 5)) {
+	if ((G.debug_value > 0) && (G.debug_value <= 6)) {
 		switch (G.debug_value) {
 			case 1:
 				if (stl->g_data->minzbuffer) DRW_transform_to_display(stl->g_data->minzbuffer);
@@ -1218,10 +1208,23 @@ void EEVEE_draw_effects(EEVEE_Data *vedata)
 			case 5:
 				if (txl->ssr_specrough_input) DRW_transform_to_display(txl->ssr_specrough_input);
 				break;
+			case 6:
+				if (txl->color_double_buffer) DRW_transform_to_display(txl->color_double_buffer);
+				break;
 			default:
 				break;
 		}
 	}
+
+	/* If no post processes is enabled, buffers are still not swapped, do it now. */
+	SWAP_DOUBLE_BUFFERS();
+
+	if (!stl->g_data->valid_double_buffer && ((effects->enabled_effects & EFFECT_DOUBLE_BUFFER) != 0)) {
+		/* If history buffer is not valid request another frame.
+		 * This fix black reflections on area resize. */
+		DRW_viewport_request_redraw();
+	}
+
 }
 
 void EEVEE_effects_free(void)
diff --git a/source/blender/draw/engines/eevee/shaders/effect_ssr_frag.glsl b/source/blender/draw/engines/eevee/shaders/effect_ssr_frag.glsl
index 83f238ce782..b61b191c2d1 100644
--- a/source/blender/draw/engines/eevee/shaders/effect_ssr_frag.glsl
+++ b/source/blender/draw/engines/eevee/shaders/effect_ssr_frag.glsl
@@ -268,9 +268,6 @@ void main()
 
 	vec4 ssr_accum = vec4(0.0);
 	float weight_acc = 0.0;
-	float mask_acc = 0.0;
-	float dist_acc = 0.0;
-	float hit_acc = 0.0;
 	const ivec2 neighbors[9] = ivec2[9](
 		ivec2(0, 0),
 		ivec2(-1,  1), ivec2(0,  1), ivec2(1,  1),
@@ -311,7 +308,7 @@ void main()
 		vec3 sample = textureLod(colorBuffer, ref_uvs, mip).rgb ;
 
 		/* Firefly removal */
-		sample /= 1 + brightness(sample);
+		sample /= 1.0 + brightness(sample);
 
 		float mask = screen_border_mask(ref_uvs, hit_pos);
 		mask *= view_facing_mask(V, N);




More information about the Bf-blender-cvs mailing list