[Bf-blender-cvs] [f1fb605ec9f] blender2.8: GPUFramebuffer: Allow to bind a specific texture mip to framebuffer.

Clément Foucault noreply at git.blender.org
Tue Apr 18 13:28:04 CEST 2017


Commit: f1fb605ec9ffd69b82652f3702de8b7ada570fd8
Author: Clément Foucault
Date:   Tue Apr 18 11:28:11 2017 +0200
Branches: blender2.8
https://developer.blender.org/rBf1fb605ec9ffd69b82652f3702de8b7ada570fd8

GPUFramebuffer: Allow to bind a specific texture mip to framebuffer.

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

M	source/blender/draw/engines/eevee/eevee.c
M	source/blender/draw/engines/eevee/eevee_lights.c
M	source/blender/draw/intern/draw_manager.c
M	source/blender/draw/modes/edit_curve_mode.c
M	source/blender/draw/modes/edit_lattice_mode.c
M	source/blender/draw/modes/edit_mesh_mode.c
M	source/blender/draw/modes/edit_metaball_mode.c
M	source/blender/draw/modes/edit_surface_mode.c
M	source/blender/draw/modes/edit_text_mode.c
M	source/blender/draw/modes/object_mode.c
M	source/blender/draw/modes/paint_texture_mode.c
M	source/blender/draw/modes/paint_vertex_mode.c
M	source/blender/draw/modes/paint_weight_mode.c
M	source/blender/draw/modes/particle_mode.c
M	source/blender/draw/modes/pose_mode.c
M	source/blender/draw/modes/sculpt_mode.c
M	source/blender/gpu/GPU_framebuffer.h
M	source/blender/gpu/intern/gpu_compositing.c
M	source/blender/gpu/intern/gpu_framebuffer.c
M	source/blender/gpu/intern/gpu_lamp.c
M	source/blender/gpu/intern/gpu_viewport.c

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

diff --git a/source/blender/draw/engines/eevee/eevee.c b/source/blender/draw/engines/eevee/eevee.c
index 224eb296b33..e028249d2bb 100644
--- a/source/blender/draw/engines/eevee/eevee.c
+++ b/source/blender/draw/engines/eevee/eevee.c
@@ -226,7 +226,7 @@ static void EEVEE_draw_scene(void *vedata)
 
 	/* Attach depth to the hdr buffer and bind it */	
 	DRW_framebuffer_texture_detach(dtxl->depth);
-	DRW_framebuffer_texture_attach(fbl->main, dtxl->depth, 0);
+	DRW_framebuffer_texture_attach(fbl->main, dtxl->depth, 0, 0);
 	DRW_framebuffer_bind(fbl->main);
 
 	/* Clear Depth */
@@ -240,7 +240,7 @@ static void EEVEE_draw_scene(void *vedata)
 
 	/* Restore default framebuffer */
 	DRW_framebuffer_texture_detach(dtxl->depth);
-	DRW_framebuffer_texture_attach(dfbl->default_fb, dtxl->depth, 0);
+	DRW_framebuffer_texture_attach(dfbl->default_fb, dtxl->depth, 0, 0);
 	DRW_framebuffer_bind(dfbl->default_fb);
 
 	DRW_draw_pass(psl->tonemap);
diff --git a/source/blender/draw/engines/eevee/eevee_lights.c b/source/blender/draw/engines/eevee/eevee_lights.c
index 3dc1f7cb48f..9c19020050d 100644
--- a/source/blender/draw/engines/eevee/eevee_lights.c
+++ b/source/blender/draw/engines/eevee/eevee_lights.c
@@ -141,17 +141,17 @@ void EEVEE_lights_cache_finish(EEVEE_StorageList *stl, EEVEE_TextureList *txl, E
 	if (!txl->shadow_depth_cube_pool) {
 		txl->shadow_depth_cube_pool = DRW_texture_create_2D_array(512, 512, MAX2(1, linfo->num_cube * 6), DRW_TEX_DEPTH_24, DRW_TEX_FILTER | DRW_TEX_COMPARE, NULL);
 		if (fbl->shadow_cube_fb)
-			DRW_framebuffer_texture_attach(fbl->shadow_cube_fb, txl->shadow_depth_cube_pool, 0);
+			DRW_framebuffer_texture_attach(fbl->shadow_cube_fb, txl->shadow_depth_cube_pool, 0, 0);
 	}
 	if (!txl->shadow_depth_map_pool) {
 		txl->shadow_depth_map_pool = DRW_texture_create_2D_array(512, 512, MAX2(1, linfo->num_map), DRW_TEX_DEPTH_24, DRW_TEX_FILTER | DRW_TEX_COMPARE, NULL);
 		if (fbl->shadow_map_fb)
-			DRW_framebuffer_texture_attach(fbl->shadow_map_fb, txl->shadow_depth_map_pool, 0);
+			DRW_framebuffer_texture_attach(fbl->shadow_map_fb, txl->shadow_depth_map_pool, 0, 0);
 	}
 	if (!txl->shadow_depth_cascade_pool) {
 		txl->shadow_depth_cascade_pool = DRW_texture_create_2D_array(512, 512, MAX2(1, linfo->num_cascade), DRW_TEX_DEPTH_24, DRW_TEX_FILTER | DRW_TEX_COMPARE, NULL);
 		if (fbl->shadow_cascade_fb)
-			DRW_framebuffer_texture_attach(fbl->shadow_cascade_fb, txl->shadow_depth_map_pool, 0);
+			DRW_framebuffer_texture_attach(fbl->shadow_cascade_fb, txl->shadow_depth_map_pool, 0, 0);
 	}
 
 	DRWFboTexture tex_cube = {&txl->shadow_depth_cube_pool, DRW_BUF_DEPTH_24, DRW_TEX_FILTER | DRW_TEX_COMPARE};
diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c
index b0864f5ed9a..84a8ed5e931 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -1256,7 +1256,7 @@ void DRW_framebuffer_init(struct GPUFrameBuffer **fb, int width, int height, DRW
 				}
 			}
 
-			GPU_framebuffer_texture_attach(*fb, *fbotex.tex, color_attachment);
+			GPU_framebuffer_texture_attach(*fb, *fbotex.tex, color_attachment, 0);
 		}
 
 		if (!GPU_framebuffer_check_valid(*fb, NULL)) {
@@ -1290,9 +1290,9 @@ void DRW_framebuffer_clear(bool color, bool depth, bool stencil, float clear_col
 	        ((stencil) ? GL_STENCIL_BUFFER_BIT : 0));
 }
 
-void DRW_framebuffer_texture_attach(struct GPUFrameBuffer *fb, GPUTexture *tex, int slot)
+void DRW_framebuffer_texture_attach(struct GPUFrameBuffer *fb, GPUTexture *tex, int slot, int mip)
 {
-	GPU_framebuffer_texture_attach(fb, tex, slot);
+	GPU_framebuffer_texture_attach(fb, tex, slot, mip);
 }
 
 void DRW_framebuffer_texture_detach(GPUTexture *tex)
diff --git a/source/blender/draw/modes/edit_curve_mode.c b/source/blender/draw/modes/edit_curve_mode.c
index e0b1a4eac0c..084550a0445 100644
--- a/source/blender/draw/modes/edit_curve_mode.c
+++ b/source/blender/draw/modes/edit_curve_mode.c
@@ -214,7 +214,7 @@ static void EDIT_CURVE_draw_scene(void *vedata)
 	 * DRW_framebuffer_texture_detach(dtxl->depth);
 	 * DRW_framebuffer_bind(fbl->custom_fb);
 	 * DRW_draw_pass(psl->pass);
-	 * DRW_framebuffer_texture_attach(dfbl->default_fb, dtxl->depth, 0);
+	 * DRW_framebuffer_texture_attach(dfbl->default_fb, dtxl->depth, 0, 0);
 	 * DRW_framebuffer_bind(dfbl->default_fb);
 	 */
 
diff --git a/source/blender/draw/modes/edit_lattice_mode.c b/source/blender/draw/modes/edit_lattice_mode.c
index b641b22186a..a73b49108bd 100644
--- a/source/blender/draw/modes/edit_lattice_mode.c
+++ b/source/blender/draw/modes/edit_lattice_mode.c
@@ -234,7 +234,7 @@ static void EDIT_LATTICE_draw_scene(void *vedata)
 	 * DRW_framebuffer_texture_detach(dtxl->depth);
 	 * DRW_framebuffer_bind(fbl->custom_fb);
 	 * DRW_draw_pass(psl->pass);
-	 * DRW_framebuffer_texture_attach(dfbl->default_fb, dtxl->depth, 0);
+	 * DRW_framebuffer_texture_attach(dfbl->default_fb, dtxl->depth, 0, 0);
 	 * DRW_framebuffer_bind(dfbl->default_fb);
 	 */
 
diff --git a/source/blender/draw/modes/edit_mesh_mode.c b/source/blender/draw/modes/edit_mesh_mode.c
index 5289d61661e..5331e8b1acc 100644
--- a/source/blender/draw/modes/edit_mesh_mode.c
+++ b/source/blender/draw/modes/edit_mesh_mode.c
@@ -476,7 +476,7 @@ static void EDIT_MESH_draw_scene(void *vedata)
 		DRW_draw_pass(psl->mix_occlude);
 
 		/* reattach */
-		DRW_framebuffer_texture_attach(dfbl->default_fb, dtxl->depth, 0);
+		DRW_framebuffer_texture_attach(dfbl->default_fb, dtxl->depth, 0, 0);
 	}
 	else {
 		DRW_draw_pass(psl->normals);
diff --git a/source/blender/draw/modes/edit_metaball_mode.c b/source/blender/draw/modes/edit_metaball_mode.c
index 5d08d4e5076..b432d610d1b 100644
--- a/source/blender/draw/modes/edit_metaball_mode.c
+++ b/source/blender/draw/modes/edit_metaball_mode.c
@@ -212,7 +212,7 @@ static void EDIT_METABALL_draw_scene(void *vedata)
 	 * DRW_framebuffer_texture_detach(dtxl->depth);
 	 * DRW_framebuffer_bind(fbl->custom_fb);
 	 * DRW_draw_pass(psl->pass);
-	 * DRW_framebuffer_texture_attach(dfbl->default_fb, dtxl->depth, 0);
+	 * DRW_framebuffer_texture_attach(dfbl->default_fb, dtxl->depth, 0, 0);
 	 * DRW_framebuffer_bind(dfbl->default_fb);
 	 */
 
diff --git a/source/blender/draw/modes/edit_surface_mode.c b/source/blender/draw/modes/edit_surface_mode.c
index 783defaf4ec..de2e7c94045 100644
--- a/source/blender/draw/modes/edit_surface_mode.c
+++ b/source/blender/draw/modes/edit_surface_mode.c
@@ -212,7 +212,7 @@ static void EDIT_SURFACE_draw_scene(void *vedata)
 	 * DRW_framebuffer_texture_detach(dtxl->depth);
 	 * DRW_framebuffer_bind(fbl->custom_fb);
 	 * DRW_draw_pass(psl->pass);
-	 * DRW_framebuffer_texture_attach(dfbl->default_fb, dtxl->depth, 0);
+	 * DRW_framebuffer_texture_attach(dfbl->default_fb, dtxl->depth, 0, 0);
 	 * DRW_framebuffer_bind(dfbl->default_fb);
 	 */
 
diff --git a/source/blender/draw/modes/edit_text_mode.c b/source/blender/draw/modes/edit_text_mode.c
index 101202cea40..e5cb951051e 100644
--- a/source/blender/draw/modes/edit_text_mode.c
+++ b/source/blender/draw/modes/edit_text_mode.c
@@ -212,7 +212,7 @@ static void EDIT_TEXT_draw_scene(void *vedata)
 	 * DRW_framebuffer_texture_detach(dtxl->depth);
 	 * DRW_framebuffer_bind(fbl->custom_fb);
 	 * DRW_draw_pass(psl->pass);
-	 * DRW_framebuffer_texture_attach(dfbl->default_fb, dtxl->depth, 0);
+	 * DRW_framebuffer_texture_attach(dfbl->default_fb, dtxl->depth, 0, 0);
 	 * DRW_framebuffer_bind(dfbl->default_fb);
 	 */
 
diff --git a/source/blender/draw/modes/object_mode.c b/source/blender/draw/modes/object_mode.c
index 6ea4774d624..a57ec3bd912 100644
--- a/source/blender/draw/modes/object_mode.c
+++ b/source/blender/draw/modes/object_mode.c
@@ -1265,7 +1265,7 @@ static void OBJECT_draw_scene(void *vedata)
 	DRW_draw_pass(psl->outlines_fade5);
 
 	/* reattach */
-	DRW_framebuffer_texture_attach(fbl->outlines, txl->outlines_depth_tx, 0);
+	DRW_framebuffer_texture_attach(fbl->outlines, txl->outlines_depth_tx, 0, 0);
 	DRW_framebuffer_bind(dfbl->default_fb);
 
 	/* This needs to be drawn after the oultine */
diff --git a/source/blender/draw/modes/paint_texture_mode.c b/source/blender/draw/modes/paint_texture_mode.c
index 5bace8b2a77..4bd2d27a747 100644
--- a/source/blender/draw/modes/paint_texture_mode.c
+++ b/source/blender/draw/modes/paint_texture_mode.c
@@ -212,7 +212,7 @@ static void PAINT_TEXTURE_draw_scene(void *vedata)
 	 * DRW_framebuffer_texture_detach(dtxl->depth);
 	 * DRW_framebuffer_bind(fbl->custom_fb);
 	 * DRW_draw_pass(psl->pass);
-	 * DRW_framebuffer_texture_attach(dfbl->default_fb, dtxl->depth, 0);
+	 * DRW_framebuffer_texture_attach(dfbl->default_fb, dtxl->depth, 0, 0);
 	 * DRW_framebuffer_bind(dfbl->default_fb);
 	 */
 
diff --git a/source/blender/draw/modes/paint_vertex_mode.c b/source/blender/draw/modes/paint_vertex_mode.c
index 7f58efd73af..ff6eeb3068e 100644
--- a/source/blender/draw/modes/paint_vertex_mode.c
+++ b/source/blender/draw/modes/paint_vertex_mode.c
@@ -212,7 +212,7 @@ static void PAINT_VERTEX_draw_scene(void *vedata)
 	 * DRW_framebuffer_texture_detach(dtxl->depth);
 	 * DRW_framebuffer_bind(fbl->custom_fb);
 	 * DRW_draw_pass(psl->pass);
-	 * DRW_framebuffer_texture_attach(dfbl->default_fb, dtxl->depth, 0);
+	 * DRW_framebuffer_texture_attach(dfbl->default_fb, dtxl->depth, 0, 0);
 	 * DRW_framebuffer_bind(dfbl->default_fb);
 	 */
 
diff --git a/source/blender/draw/modes/paint_weight_mode.c b/source/blender/draw/modes/paint_weight_mode.c
index af9333cdd8f..0eb42cb51d5 100644
--- a/source/blender/draw/modes/paint_weight_mode.c
+++ b/source/blender/draw/modes/paint_weight_mode.c
@@ -209,7 +209,7 @@ static void PAINT_WEIGHT_draw_scene(void *vedata)
 	 * DRW_framebuffer_texture_detach(dtxl->depth);
 	 * DRW_framebuffer_bind(fbl->custom_fb);
 	 * DRW_draw_pass(psl->pass);
-	 * DRW_framebuffer_texture_attach(dfbl->default_fb, dtxl->depth, 0);
+	 * DRW_framebuffer_texture_attach(dfbl->default_fb, dtxl->depth, 0, 0);
 	 * DRW_framebuffer_bind(dfbl->default_fb);
 	 */
 
diff --git a/source/blender/draw/modes/particle_mode.c b/source/blender/draw/modes/particle_mode.c
index b9fb8d031a8..8b87636a62e 100644
--- a/source/blender/draw/modes/particle_mode.c
+++ b/source/blender/draw/modes/particle_mode.c
@@ -207,7 +207,7 @@ static voi

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list