[Bf-blender-cvs] [cf8109d2aaa] master: Cleanup: Eevee: Make planar downsampling not use instance drawing

Clément Foucault noreply at git.blender.org
Tue May 14 11:01:18 CEST 2019


Commit: cf8109d2aaaba00dd048be3f941a2050809e9a7f
Author: Clément Foucault
Date:   Sat May 11 15:58:49 2019 +0200
Branches: master
https://developer.blender.org/rBcf8109d2aaaba00dd048be3f941a2050809e9a7f

Cleanup: Eevee: Make planar downsampling not use instance drawing

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

M	source/blender/draw/engines/eevee/eevee_lightprobes.c
M	source/blender/draw/engines/eevee/shaders/lightprobe_planar_downsample_vert.glsl

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

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;
 }



More information about the Bf-blender-cvs mailing list