[Bf-blender-cvs] [42ddafedf5b] soc-2018-npr: debugging f12 weird behavior

Nick Wu noreply at git.blender.org
Wed Jul 4 11:38:24 CEST 2018


Commit: 42ddafedf5b95e291feeeb7164176a752469cddb
Author: Nick Wu
Date:   Wed Jul 4 15:52:20 2018 +0800
Branches: soc-2018-npr
https://developer.blender.org/rB42ddafedf5b95e291feeeb7164176a752469cddb

debugging f12 weird behavior

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

M	source/blender/draw/engines/lanpr/lanpr_engine.c

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

diff --git a/source/blender/draw/engines/lanpr/lanpr_engine.c b/source/blender/draw/engines/lanpr/lanpr_engine.c
index bc514380939..1dfa94f5b4c 100644
--- a/source/blender/draw/engines/lanpr/lanpr_engine.c
+++ b/source/blender/draw/engines/lanpr/lanpr_engine.c
@@ -345,8 +345,8 @@ static void lanpr_cache_init(void *vedata){
 			BLI_mempool_clear(pd->mp_batch_list);
 		}
 	}elif(lanpr->master_mode == LANPR_MASTER_MODE_SOFTWARE) {
-		psl->software_pass = DRW_pass_create("Software Render Preview",  DRW_STATE_WRITE_COLOR | DRW_STATE_WRITE_DEPTH | DRW_STATE_DEPTH_ALWAYS);
-		LANPR_LineLayer* ll;
+		psl->software_pass = DRW_pass_create("Software Render Preview",  DRW_STATE_WRITE_COLOR | DRW_STATE_WRITE_DEPTH | DRW_STATE_DEPTH_LESS_EQUAL);
+		LANPR_LineLayer* ll; 
 		for (ll = lanpr->line_layers.first; ll; ll = ll->next) {
 			ll->shgrp = DRW_shgroup_create(OneTime.software_shader, psl->software_pass);
 			DRW_shgroup_uniform_vec4(ll->shgrp, "color", ll->color, 1);
@@ -381,7 +381,7 @@ static void lanpr_cache_populate(void *vedata, Object *ob){
 
 	struct Gwn_Batch *geom = DRW_cache_object_surface_get(ob);
 	if (geom) {
-		DRW_shgroup_call_object_add(stl->g_data->multipass_shgrp, geom, ob);
+		DRW_shgroup_call_object_add_no_cull(stl->g_data->multipass_shgrp, geom, ob);
 	}
 
 	if (lanpr->master_mode == LANPR_MASTER_MODE_DPIX && lanpr->active_layer) {
@@ -444,7 +444,7 @@ static void lanpr_draw_scene_exec(void *vedata, GPUFrameBuffer* dfb) {
 	LANPR_StorageList *stl = ((LANPR_Data *)vedata)->stl;
 	LANPR_FramebufferList *fbl = ((LANPR_Data *)vedata)->fbl;
 
-	float clear_col[4] = { 0.0f, 0.0f, 0.0f, 0.0f };
+	float clear_col[4] = { 1.0f, 0.0f, 0.0f, 1.0f };
 	float clear_depth = 1.0f;
 	uint clear_stencil = 0xFF;
 
@@ -475,14 +475,14 @@ static void lanpr_draw_scene_exec(void *vedata, GPUFrameBuffer* dfb) {
 	}
 	elif(lanpr->master_mode == LANPR_MASTER_MODE_SOFTWARE) {
 
-		//DRW_draw_pass(psl->color_pass);
 		GPU_framebuffer_bind(fbl->software_ms);
-		// almost forgot
+
 	    GPU_framebuffer_clear(fbl->software_ms, clear_bits, lanpr->background_color, clear_depth, clear_stencil);
-		DRW_draw_pass(psl->software_pass);
 
-		GPU_framebuffer_bind(dfb);
-		DRW_multisamples_resolve(txl->ms_resolve_depth,txl->ms_resolve_color);
+		DRW_draw_pass(psl->color_pass);
+		//DRW_draw_pass(psl->software_pass);
+
+		GPU_framebuffer_blit(fbl->software_ms,0,dfb,0,GPU_COLOR_BIT);
 
 	}
 }
@@ -535,6 +535,14 @@ static void lanpr_render_to_image(LANPR_Data *vedata, RenderEngine *engine, stru
 	DRW_render_object_iter(vedata, engine, draw_ctx->depsgraph, LANPR_render_cache);
 	lanpr_cache_finish(vedata);
 
+	float clear_col[4] = { 0.0f, 0.0f, 0.0f, 0.0f };
+	float clear_depth = 1.0f;
+	uint clear_stencil = 0xFF;
+	GPUFrameBufferBits clear_bits = GPU_DEPTH_BIT | GPU_COLOR_BIT;
+
+	GPU_framebuffer_bind(dfbl->default_fb);
+	GPU_framebuffer_clear(dfbl->default_fb, clear_bits, clear_col, clear_depth, clear_stencil);
+
 	lanpr_draw_scene_exec(vedata, dfbl->default_fb);
 
 	// read it back so we can again display and save it.



More information about the Bf-blender-cvs mailing list