[Bf-blender-cvs] [f7dad2b0f8f] greasepencil-object: Merge branch 'blender2.8' into greasepencil-object

Antonio Vazquez noreply at git.blender.org
Tue Feb 20 17:02:27 CET 2018


Commit: f7dad2b0f8faf128b7cf5b11d1499e20c337b609
Author: Antonio Vazquez
Date:   Tue Feb 20 16:13:05 2018 +0100
Branches: greasepencil-object
https://developer.blender.org/rBf7dad2b0f8faf128b7cf5b11d1499e20c337b609

Merge branch 'blender2.8' into greasepencil-object

 Conflicts:
	source/blender/draw/intern/draw_manager.c

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



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

diff --cc source/blender/draw/intern/draw_manager.c
index 114e7e2d140,0e9a586440a..ed1dc2eef29
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@@ -3637,39 -3606,13 +3637,38 @@@ void DRW_draw_render_loop_offscreen
  	GPU_offscreen_bind(ofs, false);
  }
  
 -void DRW_render_to_image(RenderEngine *engine, struct Depsgraph *depsgraph)
 +/* helper to check if exit object type to render */
 +static bool DRW_render_check_object_type(struct Depsgraph *depsgraph, short obtype)
 +{
 +	DEG_OBJECT_ITER_FOR_RENDER_ENGINE(depsgraph, ob, DRW_iterator_mode_get())
 +	{
 +		if ((ob->type == obtype) && (DRW_check_object_visible_within_active_context(ob))) {
 +			return true;
 +		}
 +	}
 +	DEG_OBJECT_ITER_FOR_RENDER_ENGINE_END
 +
 +	return false;
 +}
 +
 +void DRW_render_gpencil_to_image(RenderEngine *re, struct Depsgraph *depsgraph)
 +{
 +	if (draw_engine_gpencil_type.render_to_image) {
 +		if (DRW_render_check_object_type(depsgraph, OB_GPENCIL)) {
 +			ViewportEngineData *gpdata = DRW_viewport_engine_data_ensure(&draw_engine_gpencil_type);
 +			draw_engine_gpencil_type.render_to_image(gpdata, re, depsgraph);
 +		}
 +	}
 +
 +}
 +
 +void DRW_render_to_image(RenderEngine *re, struct Depsgraph *depsgraph)
  {
  	Scene *scene = DEG_get_evaluated_scene(depsgraph);
- 	ViewLayer *view_layer = DEG_get_evaluated_view_layer(depsgraph);
- 	RenderEngineType *engine_type = re->type;
+ 	RenderEngineType *engine_type = engine->type;
  	DrawEngineType *draw_engine_type = engine_type->draw_engine;
  	RenderData *r = &scene->r;
- 	Render *render = re->re;
+ 	Render *render = engine->re;
  	const EvaluationContext *eval_ctx = RE_GetEvalCtx(render);
  
  	/* Reset before using it. */
@@@ -3696,24 -3639,36 +3695,38 @@@
  	glDisable(GL_SCISSOR_TEST);
  	glViewport(0, 0, size[0], size[1]);
  
- 	if ((r->scemode & R_MULTIVIEW) != 0) {
- 		for (SceneRenderView *srv = r->views.first; srv; srv = srv->next) {
- 			if (BKE_scene_multiview_is_render_view_active(r, srv) == false)
- 				continue;
+ 	/* Main rendering loop. */
+ 
+ 	/* Init render result. */
+ 	const float *render_size = DRW_viewport_size_get();
+ 	RenderResult *render_result = RE_engine_begin_result(engine, 0, 0, (int)render_size[0], (int)render_size[1], NULL, NULL);
  
- 			RE_SetActiveRenderView(render, srv->name);
+ 	for (RenderView *render_view = render_result->views.first;
+ 	     render_view != NULL;
+ 	     render_view = render_view->next)
+ 	{
+ 		RE_SetActiveRenderView(render, render_view->name);
+ 		for (RenderLayer *render_layer = render_result->layers.first;
+ 			 render_layer != NULL;
+ 			 render_layer = render_layer->next)
+ 		{
+ 			ViewLayer *view_layer = BLI_findstring(&scene->view_layers, render_layer->name, offsetof(ViewLayer, name));
+ 			DST.draw_ctx.view_layer = view_layer;
  
- 			engine_type->draw_engine->render_to_image(data, re, depsgraph);
+ 			/* TODO(dfelinto/sergey) we should not get depsgraph from scene.
+ 			 * For rendering depsgraph is to be owned by Render. */
+ 			DST.draw_ctx.depsgraph = BKE_scene_get_depsgraph(scene, view_layer, true);
+ 
+ 			engine_type->draw_engine->render_to_image(data, engine, render_result, render_layer);
+ 			DST.buffer_finish_called = false;
  		}
  	}
- 	else {
- 		engine_type->draw_engine->render_to_image(data, re, depsgraph);
- 	}
  
+ 	RE_engine_end_result(engine, render_result, false, false, false);
 +	/* grease pencil: render result is merged in the previous render result. */
 +	DRW_render_gpencil_to_image(re, depsgraph);
  
 -	/* TODO grease pencil */
 +	DST.buffer_finish_called = false;
  
  	GPU_viewport_free(DST.viewport);
  	MEM_freeN(DST.viewport);



More information about the Bf-blender-cvs mailing list