diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2018-06-13 23:20:48 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2018-06-13 23:20:48 +0300 |
commit | 2f3e890b94eb905b13243af955da2baeae9a1f5c (patch) | |
tree | fadeeeee3f2d0bad833d5d02fe4e4afa2cab0b8d /source/blender | |
parent | 8d2309f94f4610eb3d513c31d967d0a5b63ef6ff (diff) |
DRW: Fix crash caused by hair transform feedback
Seem to be cause by the lack of proper FBO bound.
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/draw/engines/eevee/eevee_render.c | 2 | ||||
-rw-r--r-- | source/blender/draw/intern/draw_manager.c | 12 |
2 files changed, 9 insertions, 5 deletions
diff --git a/source/blender/draw/engines/eevee/eevee_render.c b/source/blender/draw/engines/eevee/eevee_render.c index 5d31488d75f..d24551976f9 100644 --- a/source/blender/draw/engines/eevee/eevee_render.c +++ b/source/blender/draw/engines/eevee/eevee_render.c @@ -423,6 +423,8 @@ void EEVEE_render_draw(EEVEE_Data *vedata, RenderEngine *engine, RenderLayer *rl DRW_render_instance_buffer_finish(); /* Need to be called after DRW_render_instance_buffer_finish() */ + /* Also we weed to have a correct fbo bound for DRW_hair_update */ + GPU_framebuffer_bind(fbl->main_fb); DRW_hair_update(); if ((view_layer->passflag & (SCE_PASS_SUBSURFACE_COLOR | diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c index ee876275d9e..4991f325e13 100644 --- a/source/blender/draw/intern/draw_manager.c +++ b/source/blender/draw/intern/draw_manager.c @@ -1311,13 +1311,14 @@ void DRW_draw_render_loop_ex( } DRW_stats_begin(); - DRW_hair_update(); GPU_framebuffer_bind(DST.default_framebuffer); /* Start Drawing */ DRW_state_reset(); + DRW_hair_update(); + drw_engines_draw_background(); /* WIP, single image drawn over the camera view (replace) */ @@ -1737,8 +1738,6 @@ void DRW_draw_select_loop( DRW_render_instance_buffer_finish(); } - DRW_hair_update(); - /* Setup framebuffer */ draw_select_framebuffer_setup(rect); GPU_framebuffer_bind(g_select_buffer.framebuffer); @@ -1748,6 +1747,8 @@ void DRW_draw_select_loop( DRW_state_reset(); DRW_draw_callbacks_pre_scene(); + DRW_hair_update(); + DRW_state_lock( DRW_STATE_WRITE_DEPTH | DRW_STATE_DEPTH_ALWAYS | @@ -1897,10 +1898,11 @@ void DRW_draw_depth_loop( DRW_render_instance_buffer_finish(); } - DRW_hair_update(); - /* Start Drawing */ DRW_state_reset(); + + DRW_hair_update(); + DRW_draw_callbacks_pre_scene(); drw_engines_draw_scene(); DRW_draw_callbacks_post_scene(); |