Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2017-07-21 01:19:23 +0300
committerClément Foucault <foucault.clem@gmail.com>2017-07-24 16:28:27 +0300
commite8912dd84457ad71e605ea81258c948869f6945f (patch)
tree2984cf9822c01a21dc4f250f2dfc6b97b45a6c10 /source/blender/draw/engines/eevee/eevee_effects.c
parentf1bf9d6bfb9edf261586a3907d7197a805ce8c3b (diff)
Eevee: SSR: Do the SSR pass only for probes if there is no valid double buffer.
This prevent black reflection when initializing SSR.
Diffstat (limited to 'source/blender/draw/engines/eevee/eevee_effects.c')
-rw-r--r--source/blender/draw/engines/eevee/eevee_effects.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/source/blender/draw/engines/eevee/eevee_effects.c b/source/blender/draw/engines/eevee/eevee_effects.c
index e4c4cb5d790..9e221210d6e 100644
--- a/source/blender/draw/engines/eevee/eevee_effects.c
+++ b/source/blender/draw/engines/eevee/eevee_effects.c
@@ -929,16 +929,23 @@ void EEVEE_effects_do_ssr(EEVEE_SceneLayerData *UNUSED(sldata), EEVEE_Data *veda
EEVEE_TextureList *txl = vedata->txl;
EEVEE_EffectsInfo *effects = stl->effects;
- if ((effects->enabled_effects & EFFECT_SSR) != 0 && stl->g_data->valid_double_buffer) {
+ if ((effects->enabled_effects & EFFECT_SSR) != 0) {
DefaultTextureList *dtxl = DRW_viewport_texture_list_get();
- EEVEE_downsample_buffer(vedata, fbl->minmaxz_fb, txl->color_double_buffer, 5);
+ if (stl->g_data->valid_double_buffer) {
+ EEVEE_downsample_buffer(vedata, fbl->minmaxz_fb, txl->color_double_buffer, 9);
- /* Raytrace at halfres. */
- e_data.depth_src = dtxl->depth;
- // e_data.depth_src = stl->g_data->minmaxz;
- DRW_framebuffer_bind(fbl->screen_tracing_fb);
- DRW_draw_pass(psl->ssr_raytrace);
+ /* Raytrace at halfres. */
+ e_data.depth_src = dtxl->depth;
+ // e_data.depth_src = stl->g_data->minmaxz;
+ DRW_framebuffer_bind(fbl->screen_tracing_fb);
+ DRW_draw_pass(psl->ssr_raytrace);
+ }
+ else {
+ float clear_col[4] = {-1.0f, -1.0f, -1.0f, -1.0f};
+ DRW_framebuffer_bind(fbl->screen_tracing_fb);
+ DRW_framebuffer_clear(true, false, false, clear_col, 0.0f);
+ }
/* Resolve at fullres */
e_data.depth_src = dtxl->depth;