diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2020-08-29 16:17:13 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2020-08-30 14:11:03 +0300 |
commit | 8527d84d3588563123bfad7ccbdeeff62ee90bdb (patch) | |
tree | 51ccbaa3c129c62a54af5aed43b55b9c89b901e6 /source/blender/draw/engines/eevee/eevee_lightprobes.c | |
parent | 4f395c84fe9f05b59b81be36b464521bcf92331e (diff) |
GPUState: Move Scissor and Viewport state to framebuffer
This way it is way clearer what each viewport state is. There is
no more save and reset. The scissor test is also saved per
framebuffer.
The only rule to remember is that the viewport state (size and
origin) is reset for both the viewport and scissor when a texture
is attached or detached from an attachment slot.
Diffstat (limited to 'source/blender/draw/engines/eevee/eevee_lightprobes.c')
-rw-r--r-- | source/blender/draw/engines/eevee/eevee_lightprobes.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/source/blender/draw/engines/eevee/eevee_lightprobes.c b/source/blender/draw/engines/eevee/eevee_lightprobes.c index 63cc07c321e..9f86958cef8 100644 --- a/source/blender/draw/engines/eevee/eevee_lightprobes.c +++ b/source/blender/draw/engines/eevee/eevee_lightprobes.c @@ -1080,10 +1080,12 @@ void EEVEE_lightbake_filter_glossy(EEVEE_ViewLayerData *sldata, log(2); pinfo->firefly_fac = (firefly_fac > 0.0) ? firefly_fac : 1e16; - GPU_framebuffer_ensure_config( - &fb, {GPU_ATTACHMENT_NONE, GPU_ATTACHMENT_TEXTURE_MIP(light_cache->cube_tx.tex, i)}); + GPU_framebuffer_ensure_config(&fb, + { + GPU_ATTACHMENT_NONE, + GPU_ATTACHMENT_TEXTURE_MIP(light_cache->cube_tx.tex, i), + }); GPU_framebuffer_bind(fb); - GPU_framebuffer_viewport_set(fb, 0, 0, mipsize, mipsize); DRW_draw_pass(psl->probe_glossy_compute); mipsize /= 2; @@ -1144,6 +1146,7 @@ void EEVEE_lightbake_filter_diffuse(EEVEE_ViewLayerData *sldata, GPU_framebuffer_bind(fb); GPU_framebuffer_viewport_set(fb, x, y, size[0], size[1]); DRW_draw_pass(psl->probe_diffuse_compute); + GPU_framebuffer_viewport_reset(fb); } /* Filter rt_depth to light_cache->grid_tx.tex at index grid_offset */ @@ -1182,6 +1185,7 @@ void EEVEE_lightbake_filter_visibility(EEVEE_ViewLayerData *sldata, GPU_framebuffer_bind(fb); GPU_framebuffer_viewport_set(fb, x, y, vis_size, vis_size); DRW_draw_pass(psl->probe_visibility_compute); + GPU_framebuffer_viewport_reset(fb); } /* Actually a simple down-sampling. */ |