diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2019-03-15 21:27:54 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2019-03-15 21:28:10 +0300 |
commit | 99fe7742987202035031727d9cd181d574d7e810 (patch) | |
tree | e12607e9c0bbdda9f09149321c3a25d646febd50 /source | |
parent | 9ad9d38786c5d9f3e7f288f2e8255f3e7722da1f (diff) |
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.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/draw/engines/workbench/workbench_deferred.c | 5 | ||||
-rw-r--r-- | source/blender/draw/engines/workbench/workbench_render.c | 2 |
2 files changed, 4 insertions, 3 deletions
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)) { |