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); _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs