[Bf-blender-cvs] [d438120fe3f] master: Fix T61526 hair doesn't render in workbench but does with openGL

Clément Foucault noreply at git.blender.org
Sat Mar 16 02:48:26 CET 2019


Commit: d438120fe3ff564d8b3184aca82060f76b4829c0
Author: Clément Foucault
Date:   Sat Mar 16 02:47:03 2019 +0100
Branches: master
https://developer.blender.org/rBd438120fe3ff564d8b3184aca82060f76b4829c0

Fix T61526 hair doesn't render in workbench but does with openGL

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

M	source/blender/draw/engines/workbench/workbench_render.c

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

diff --git a/source/blender/draw/engines/workbench/workbench_render.c b/source/blender/draw/engines/workbench/workbench_render.c
index 423134f5d6c..7a0e4150d28 100644
--- a/source/blender/draw/engines/workbench/workbench_render.c
+++ b/source/blender/draw/engines/workbench/workbench_render.c
@@ -124,6 +124,7 @@ static void workbench_render_framebuffers_finish(void)
 
 void workbench_render(WORKBENCH_Data *data, RenderEngine *engine, RenderLayer *render_layer, const rcti *rect)
 {
+	DefaultFramebufferList *dfbl = DRW_viewport_framebuffer_list_get();
 	const DRWContextState *draw_ctx = DRW_context_state_get();
 	const Scene *scene = draw_ctx->scene;
 	Depsgraph *depsgraph = draw_ctx->depsgraph;
@@ -146,6 +147,10 @@ void workbench_render(WORKBENCH_Data *data, RenderEngine *engine, RenderLayer *r
 		workbench_deferred_cache_finish(data);
 		DRW_render_instance_buffer_finish();
 
+		/* Also we weed to have a correct fbo bound for DRW_hair_update */
+		GPU_framebuffer_bind(dfbl->color_only_fb);
+		DRW_hair_update();
+
 		/* Draw. */
 		int num_samples = workbench_taa_calculate_num_iterations(data);
 		for (int sample = 0; sample < num_samples; sample++) {
@@ -171,6 +176,10 @@ void workbench_render(WORKBENCH_Data *data, RenderEngine *engine, RenderLayer *r
 		workbench_forward_cache_finish(data);
 		DRW_render_instance_buffer_finish();
 
+		/* Also we weed to have a correct fbo bound for DRW_hair_update */
+		GPU_framebuffer_bind(dfbl->color_only_fb);
+		DRW_hair_update();
+
 		/* Draw. */
 		int num_samples = workbench_taa_calculate_num_iterations(data);
 		for (int sample = 0; sample < num_samples; sample++) {
@@ -189,7 +198,6 @@ void workbench_render(WORKBENCH_Data *data, RenderEngine *engine, RenderLayer *r
 	const char *viewname = RE_GetActiveRenderView(engine->re);
 	RenderPass *rp = RE_pass_find_by_name(render_layer, RE_PASSNAME_COMBINED, viewname);
 
-	DefaultFramebufferList *dfbl = DRW_viewport_framebuffer_list_get();
 	GPU_framebuffer_bind(dfbl->color_only_fb);
 	GPU_framebuffer_read_color(dfbl->color_only_fb,
 	                           rect->xmin, rect->ymin,



More information about the Bf-blender-cvs mailing list