[Bf-blender-cvs] [ccb9f683e52] blender2.8: Eevee: fix HDR buffer

Clément Foucault noreply at git.blender.org
Thu Mar 30 01:38:36 CEST 2017


Commit: ccb9f683e52ced60ba055545637f9775f761aa98
Author: Clément Foucault
Date:   Wed Mar 29 23:35:06 2017 +0200
Branches: blender2.8
https://developer.blender.org/rBccb9f683e52ced60ba055545637f9775f761aa98

Eevee: fix HDR buffer

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

M	source/blender/draw/engines/eevee/eevee.c
M	source/blender/draw/intern/draw_manager.c

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

diff --git a/source/blender/draw/engines/eevee/eevee.c b/source/blender/draw/engines/eevee/eevee.c
index fea62f73615..5ab14537919 100644
--- a/source/blender/draw/engines/eevee/eevee.c
+++ b/source/blender/draw/engines/eevee/eevee.c
@@ -53,7 +53,7 @@ static void EEVEE_engine_init(void *vedata)
 	EEVEE_FramebufferList *fbl = ((EEVEE_Data *)vedata)->fbl;
 	EEVEE_StorageList *stl = ((EEVEE_Data *)vedata)->stl;
 
-	DRWFboTexture tex = {&txl->color, DRW_BUF_RGBA_32};
+	DRWFboTexture tex = {&txl->color, DRW_BUF_RGBA_16};
 
 	float *viewport_size = DRW_viewport_size_get();
 	DRW_framebuffer_init(&fbl->main,
diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c
index 7f8e70c877a..8eafeb8b749 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -1265,6 +1265,18 @@ void *DRW_render_settings_get(Scene *scene, const char *engine_name)
 }
 /* ****************************************** Framebuffers ******************************************/
 
+static GPUTextureFormat convert_tex_format(int fbo_format, int *channels)
+{
+	switch (fbo_format) {
+		case DRW_BUF_RGBA_8:   *channels = 4; return GPU_RGBA8;
+		case DRW_BUF_RGBA_16:  *channels = 4; return GPU_RGBA16F;
+		case DRW_BUF_DEPTH_24: *channels = 1; return GPU_DEPTH_COMPONENT24;
+		default:
+			BLI_assert(false);
+	}
+}
+
+
 void DRW_framebuffer_init(struct GPUFrameBuffer **fb, int width, int height, DRWFboTexture textures[MAX_FBO_TEX],
                           int texnbr)
 {
@@ -1278,6 +1290,9 @@ void DRW_framebuffer_init(struct GPUFrameBuffer **fb, int width, int height, DRW
 			DRWFboTexture fbotex = textures[i];
 			
 			if (!*fbotex.tex) {
+				int channels;
+				GPUTextureFormat gpu_format = convert_tex_format(fbotex.format, &channels);
+
 				/* TODO refine to opengl formats */
 				if (fbotex.format == DRW_BUF_DEPTH_16 ||
 				    fbotex.format == DRW_BUF_DEPTH_24)
@@ -1287,7 +1302,7 @@ void DRW_framebuffer_init(struct GPUFrameBuffer **fb, int width, int height, DRW
 					GPU_texture_filter_mode(*fbotex.tex, false);
 				}
 				else {
-					*fbotex.tex = GPU_texture_create_2D(width, height, NULL, NULL);
+					*fbotex.tex = GPU_texture_create_2D_custom(width, height, channels, gpu_format, NULL, NULL);
 					++color_attachment;
 				}
 			}




More information about the Bf-blender-cvs mailing list