Commit: 99fe7742987202035031727d9cd181d574d7e810
Author: Clément Foucault
Date:   Fri Mar 15 19:27:54 2019 +0100
Branches: master
https://developer.blender.org/rB99fe7742987202035031727d9cd181d574d7e810

Fix T59943 Color banding present in Workbench render but not in viewport

I don't really like forcing RGBA16F for Albedo render but that's ok since
the texture is shared with the effect_fb.

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

M       source/blender/draw/engines/workbench/workbench_deferred.c
M       source/blender/draw/engines/workbench/workbench_render.c

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

diff --git a/source/blender/draw/engines/workbench/workbench_deferred.c 
b/source/blender/draw/engines/workbench/workbench_deferred.c
index 7baea8b9e39..fb8a3b47c54 100644
--- a/source/blender/draw/engines/workbench/workbench_deferred.c
+++ b/source/blender/draw/engines/workbench/workbench_deferred.c
@@ -445,6 +445,7 @@ void workbench_deferred_engine_init(WORKBENCH_Data *vedata)
                const int size[2] = {(int)viewport_size[0], 
(int)viewport_size[1]};
                const eGPUTextureFormat nor_tex_format = 
NORMAL_ENCODING_ENABLED() ? GPU_RG16 : GPU_RGBA32F;
                const eGPUTextureFormat comp_tex_format = 
DRW_state_is_image_render() ? GPU_RGBA16F : GPU_R11F_G11F_B10F;
+               const eGPUTextureFormat col_tex_format = 
DRW_state_is_image_render() ? GPU_RGBA16F : GPU_RGBA8;
                const eGPUTextureFormat id_tex_format = 
OBJECT_ID_PASS_ENABLED(wpd) ? GPU_R32UI : GPU_R8;
 
                e_data.object_id_tx = NULL;
@@ -456,7 +457,7 @@ void workbench_deferred_engine_init(WORKBENCH_Data *vedata)
                e_data.composite_buffer_tx = DRW_texture_pool_query_2D(size[0], 
size[1], comp_tex_format, &draw_engine_workbench_solid);
 
                if (MATDATA_PASS_ENABLED(wpd) || 
GPU_unused_fb_slot_workaround()) {
-                       e_data.color_buffer_tx = 
DRW_texture_pool_query_2D(size[0], size[1], GPU_RGBA8, 
&draw_engine_workbench_solid);
+                       e_data.color_buffer_tx = 
DRW_texture_pool_query_2D(size[0], size[1], col_tex_format, 
&draw_engine_workbench_solid);
                }
                if (OBJECT_ID_PASS_ENABLED(wpd) || 
GPU_unused_fb_slot_workaround()) {
                        e_data.object_id_tx = 
DRW_texture_pool_query_2D(size[0], size[1], id_tex_format, 
&draw_engine_workbench_solid);
@@ -488,7 +489,7 @@ void workbench_deferred_engine_init(WORKBENCH_Data *vedata)
                });
 
                if (!MATDATA_PASS_ENABLED(wpd) && 
!GPU_unused_fb_slot_workaround()) {
-                       e_data.color_buffer_tx = 
DRW_texture_pool_query_2D(size[0], size[1], GPU_RGBA8, 
&draw_engine_workbench_solid);
+                       e_data.color_buffer_tx = 
DRW_texture_pool_query_2D(size[0], size[1], col_tex_format, 
&draw_engine_workbench_solid);
                }
 
                GPU_framebuffer_ensure_config(&fbl->effect_fb, {
diff --git a/source/blender/draw/engines/workbench/workbench_render.c 
b/source/blender/draw/engines/workbench/workbench_render.c
index 528b4b6b815..423134f5d6c 100644
--- a/source/blender/draw/engines/workbench/workbench_render.c
+++ b/source/blender/draw/engines/workbench/workbench_render.c
@@ -86,7 +86,7 @@ static bool workbench_render_framebuffers_init(void)
        const int size[2] = {(int)viewport_size[0], (int)viewport_size[1]};
 
        DefaultTextureList *dtxl = DRW_viewport_texture_list_get();
-       dtxl->color = GPU_texture_create_2D(size[0], size[1], GPU_RGBA8, NULL, 
NULL);
+       dtxl->color = GPU_texture_create_2D(size[0], size[1], GPU_RGBA16F, 
NULL, NULL);
        dtxl->depth = GPU_texture_create_2D(size[0], size[1], 
GPU_DEPTH24_STENCIL8, NULL, NULL);
 
        if (!(dtxl->depth && dtxl->color)) {

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to