[Bf-blender-cvs] [647f9c2325e] temp-ssr: Eevee: SSR: Fixed problem with un-initialized texture.
Clément Foucault
noreply at git.blender.org
Mon Jul 24 15:25:45 CEST 2017
Commit: 647f9c2325ec6528fdef6012ab6aaf778c6fd9fa
Author: Clément Foucault
Date: Sat Jul 22 16:22:01 2017 +0200
Branches: temp-ssr
https://developer.blender.org/rB647f9c2325ec6528fdef6012ab6aaf778c6fd9fa
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 6a0dea8eadf..1da582d413f 100644
--- a/source/blender/draw/engines/eevee/eevee_effects.c
+++ b/source/blender/draw/engines/eevee/eevee_effects.c
@@ -1008,17 +1008,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};
@@ -1028,8 +1026,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);
@@ -1186,17 +1185,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);
@@ -1213,10 +1203,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