diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2019-05-11 16:58:49 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2019-05-14 11:57:03 +0300 |
commit | cf8109d2aaaba00dd048be3f941a2050809e9a7f (patch) | |
tree | 2e2a895fffb274ba7bc1ae373f5a184693ad4493 /source/blender | |
parent | ad0e95688d254abee315622ebdc3aeb0d2ba979d (diff) |
Cleanup: Eevee: Make planar downsampling not use instance drawing
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/draw/engines/eevee/eevee_lightprobes.c | 27 | ||||
-rw-r--r-- | source/blender/draw/engines/eevee/shaders/lightprobe_planar_downsample_vert.glsl | 9 |
2 files changed, 19 insertions, 17 deletions
diff --git a/source/blender/draw/engines/eevee/eevee_lightprobes.c b/source/blender/draw/engines/eevee/eevee_lightprobes.c index a4a17de7a57..71c1aa99ed2 100644 --- a/source/blender/draw/engines/eevee/eevee_lightprobes.c +++ b/source/blender/draw/engines/eevee/eevee_lightprobes.c @@ -444,19 +444,6 @@ void EEVEE_lightprobes_cache_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedat else { stl->g_data->planar_display_shgrp = NULL; } - - { - psl->probe_planar_downsample_ps = DRW_pass_create("LightProbe Planar Downsample", - DRW_STATE_WRITE_COLOR); - - DRWShadingGroup *grp = DRW_shgroup_create(EEVEE_shaders_probe_planar_downsample_sh_get(), - psl->probe_planar_downsample_ps); - - DRW_shgroup_uniform_texture_ref(grp, "source", &txl->planar_pool); - DRW_shgroup_uniform_float(grp, "fireflyFactor", &sldata->common_data.ssr_firefly_fac, 1); - DRW_shgroup_call_instances_add( - grp, DRW_cache_fullscreen_quad_get(), NULL, (uint *)&pinfo->num_planar); - } } static bool eevee_lightprobes_culling_test(Object *ob) @@ -772,6 +759,20 @@ void EEVEE_lightprobes_cache_finish(EEVEE_ViewLayerData *sldata, EEVEE_Data *ved } } } + + if (pinfo->num_planar) { + EEVEE_PassList *psl = vedata->psl; + EEVEE_TextureList *txl = vedata->txl; + psl->probe_planar_downsample_ps = DRW_pass_create("LightProbe Planar Downsample", + DRW_STATE_WRITE_COLOR); + + DRWShadingGroup *grp = DRW_shgroup_create(EEVEE_shaders_probe_planar_downsample_sh_get(), + psl->probe_planar_downsample_ps); + + DRW_shgroup_uniform_texture_ref(grp, "source", &txl->planar_pool); + DRW_shgroup_uniform_float(grp, "fireflyFactor", &sldata->common_data.ssr_firefly_fac, 1); + DRW_shgroup_call_procedural_triangles_add(grp, pinfo->num_planar, NULL); + } } /* -------------------------------------------------------------------- */ diff --git a/source/blender/draw/engines/eevee/shaders/lightprobe_planar_downsample_vert.glsl b/source/blender/draw/engines/eevee/shaders/lightprobe_planar_downsample_vert.glsl index 1c943bd51bc..588cd402bb3 100644 --- a/source/blender/draw/engines/eevee/shaders/lightprobe_planar_downsample_vert.glsl +++ b/source/blender/draw/engines/eevee/shaders/lightprobe_planar_downsample_vert.glsl @@ -1,11 +1,12 @@ -in vec2 pos; - out int instance; out vec2 vPos; void main() { - instance = gl_InstanceID; - vPos = pos; + int v = gl_VertexID % 3; + vPos.x = -1.0 + float((v & 1) << 2); + vPos.y = -1.0 + float((v & 2) << 1); + + instance = gl_VertexID / 3; } |