[Bf-blender-cvs] [208b018edff] greasepencil-object: Adapt render code after merge

Antonio Vazquez noreply at git.blender.org
Sat Feb 24 18:28:33 CET 2018


Commit: 208b018edff5bce25c943ec35abe4ab7bf351dfa
Author: Antonio Vazquez
Date:   Sat Feb 24 18:28:19 2018 +0100
Branches: greasepencil-object
https://developer.blender.org/rB208b018edff5bce25c943ec35abe4ab7bf351dfa

Adapt render code after merge

Again, the function parameter list has changed in Draw Manager and the gpencil code need changes.

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

M	source/blender/draw/engines/gpencil/gpencil_engine.c
M	source/blender/draw/intern/DRW_render.h
M	source/blender/draw/intern/draw_manager.c

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

diff --git a/source/blender/draw/engines/gpencil/gpencil_engine.c b/source/blender/draw/engines/gpencil/gpencil_engine.c
index 0c14c0228cb..d8b4a167fb3 100644
--- a/source/blender/draw/engines/gpencil/gpencil_engine.c
+++ b/source/blender/draw/engines/gpencil/gpencil_engine.c
@@ -22,6 +22,7 @@
 /** \file blender/draw/engines/gpencil/gpencil_engine.c
  *  \ingroup draw
  */
+#include "BLI_rect.h" 
 
 #include "DRW_engine.h"
 #include "DRW_render.h"
@@ -1024,24 +1025,23 @@ static void GPENCIL_render_update_vecs(GPENCIL_Data *vedata)
 }
 
 /* read z-depth render result */
-static void GPENCIL_render_result_z(RenderResult *rr, const char *viewname,	GPENCIL_Data *vedata)
+static void GPENCIL_render_result_z(struct RenderLayer *rl, const char *viewname, GPENCIL_Data *vedata, const rcti *rect)
 {
 	const DRWContextState *draw_ctx = DRW_context_state_get();
 	ViewLayer *view_layer = draw_ctx->view_layer;
 	GPENCIL_StorageList *stl = vedata->stl;
 
 	if ((view_layer->passflag & SCE_PASS_Z) != 0) {
-		RenderLayer *rl = rr->layers.first;
 		RenderPass *rp = RE_pass_find_by_name(rl, RE_PASSNAME_Z, viewname);
 
-		DRW_framebuffer_read_depth(rr->xof, rr->yof, rr->rectx, rr->recty, rp->rect);
+		DRW_framebuffer_read_depth(rect->xmin, rect->ymin, BLI_rcti_size_x(rect), BLI_rcti_size_y(rect), rp->rect);
 
 		bool is_persp = DRW_viewport_is_persp_get();
 
 		GPENCIL_render_update_vecs(vedata);
 
 		/* Convert ogl depth [0..1] to view Z [near..far] */
-		for (int i = 0; i < rr->rectx * rr->recty; i++) {
+		for (int i = 0; i < BLI_rcti_size_x(rect) * BLI_rcti_size_y(rect); i++) {
 			if (rp->rect[i] == 1.0f) {
 				rp->rect[i] = 1e10f; /* Background */
 			}
@@ -1059,23 +1059,21 @@ static void GPENCIL_render_result_z(RenderResult *rr, const char *viewname,	GPEN
 }
 
 /* read combined render result */
-static void GPENCIL_render_result_combined(RenderResult *rr, const char *viewname, GPENCIL_Data *vedata)
+static void GPENCIL_render_result_combined(struct RenderLayer *rl, const char *viewname, GPENCIL_Data *vedata, const rcti *rect)
 {
-	RenderLayer *rl = rr->layers.first;
 	RenderPass *rp = RE_pass_find_by_name(rl, RE_PASSNAME_COMBINED, viewname);
 	GPENCIL_FramebufferList *fbl = ((GPENCIL_Data *)vedata)->fbl;
 
 	DRW_framebuffer_bind(fbl->main);
-	DRW_framebuffer_read_data(rr->xof, rr->yof, rr->rectx, rr->recty, 4, 0, rp->rect);
+	DRW_framebuffer_read_data(rect->xmin, rect->ymin, BLI_rcti_size_x(rect), BLI_rcti_size_y(rect), 4, 0, rp->rect);
 }
 
 /* render grease pencil to image */
-static void GPENCIL_render_to_image(void *vedata, RenderEngine *engine, struct RenderResult *render_result, struct RenderLayer *render_layer)
+static void GPENCIL_render_to_image(void *vedata, RenderEngine *engine, struct RenderLayer *render_layer, const rcti *rect)
 {
 	const char *viewname = RE_GetActiveRenderView(engine->re);
 	const DRWContextState *draw_ctx = DRW_context_state_get();
-	RenderResult *rr = render_result;
-	int imgsize = rr->rectx * rr->recty;
+	int imgsize = BLI_rcti_size_x(rect) * BLI_rcti_size_y(rect);
 
 	/* save previous render data */
 	RenderPass *rp_color_src = RE_pass_find_by_name(render_layer, RE_PASSNAME_COMBINED, viewname);
@@ -1111,9 +1109,9 @@ static void GPENCIL_render_to_image(void *vedata, RenderEngine *engine, struct R
 	GPENCIL_draw_scene(vedata);
 	
 	/* combined data */
-	GPENCIL_render_result_combined(rr, viewname, vedata);
+	GPENCIL_render_result_combined(render_layer, viewname, vedata, rect);
 	/* z-depth data */
-	GPENCIL_render_result_z(rr, viewname, vedata);
+	GPENCIL_render_result_z(render_layer, viewname, vedata, rect);
 	
 	/* detach textures */
 	if (fbl->main) {
diff --git a/source/blender/draw/intern/DRW_render.h b/source/blender/draw/intern/DRW_render.h
index f420580748c..ef23f8c9240 100644
--- a/source/blender/draw/intern/DRW_render.h
+++ b/source/blender/draw/intern/DRW_render.h
@@ -413,7 +413,7 @@ struct DefaultTextureList     *DRW_viewport_texture_list_get(void);
 void DRW_viewport_request_redraw(void);
 
 void DRW_render_to_image(struct RenderEngine *re, struct Depsgraph *depsgraph);
-void DRW_render_gpencil_to_image(struct RenderEngine *engine, struct RenderResult *render_result, struct RenderLayer *render_layer);
+void DRW_render_gpencil_to_image(struct RenderEngine *engine, struct RenderLayer *render_layer, const rcti *rect);
 void DRW_render_object_iter(
 	void *vedata, struct RenderEngine *engine, struct Depsgraph *graph,
 	void (*callback)(void *vedata, struct Object *ob, struct RenderEngine *engine, struct Depsgraph *graph));
diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c
index b55f5853dad..455641d9ebe 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -3663,14 +3663,14 @@ static bool DRW_render_check_object_type(struct Depsgraph *depsgraph, short obty
 	return false;
 }
 
-void DRW_render_gpencil_to_image(RenderEngine *engine, struct RenderResult *render_result, struct RenderLayer *render_layer)
+void DRW_render_gpencil_to_image(RenderEngine *engine, struct RenderLayer *render_layer, const rcti *rect)
 {
 	const DRWContextState *draw_ctx = DRW_context_state_get();
 
 	if (draw_engine_gpencil_type.render_to_image) {
 		if (DRW_render_check_object_type(draw_ctx->depsgraph, OB_GPENCIL)) {
 			ViewportEngineData *gpdata = DRW_viewport_engine_data_ensure(&draw_engine_gpencil_type);
-			draw_engine_gpencil_type.render_to_image(gpdata, engine, render_result, render_layer);
+			draw_engine_gpencil_type.render_to_image(gpdata, engine, render_layer, rect);
 		}
 	}
 }
@@ -3740,8 +3740,7 @@ void DRW_render_to_image(RenderEngine *engine, struct Depsgraph *depsgraph)
 			engine_type->draw_engine->render_to_image(data, engine, render_layer, &render_rect);
 
 			/* grease pencil: render result is merged in the previous render result. */
-			DRW_render_gpencil_to_image(engine, render_result, render_layer);
-
+			DRW_render_gpencil_to_image(engine, render_layer, &render_rect);
 			DST.buffer_finish_called = false;
 			/* Force cache to reset. */
 			drw_viewport_cache_resize();



More information about the Bf-blender-cvs mailing list