[Bf-blender-cvs] [114ccbccf96] tmp-workbench-rewrite2: Use UniformArrayBuffer for cavity_samples

Miguel Pozo noreply at git.blender.org
Fri Oct 28 15:11:16 CEST 2022


Commit: 114ccbccf9696677d3f25ac0b3f5f680b7d919b9
Author: Miguel Pozo
Date:   Mon Oct 24 16:01:36 2022 +0200
Branches: tmp-workbench-rewrite2
https://developer.blender.org/rB114ccbccf9696677d3f25ac0b3f5f680b7d919b9

Use UniformArrayBuffer for cavity_samples

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

M	source/blender/draw/engines/workbench/shaders/infos/workbench_composite_info.hh
M	source/blender/draw/engines/workbench/shaders/workbench_cavity_lib.glsl
M	source/blender/draw/engines/workbench/workbench_effect_cavity.cc
M	source/blender/draw/engines/workbench/workbench_private.hh
M	source/blender/draw/engines/workbench/workbench_shader_shared.h

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

diff --git a/source/blender/draw/engines/workbench/shaders/infos/workbench_composite_info.hh b/source/blender/draw/engines/workbench/shaders/infos/workbench_composite_info.hh
index 8618e860d8c..4ef47c253e0 100644
--- a/source/blender/draw/engines/workbench/shaders/infos/workbench_composite_info.hh
+++ b/source/blender/draw/engines/workbench/shaders/infos/workbench_composite_info.hh
@@ -78,7 +78,7 @@ GPU_SHADER_CREATE_INFO(workbench_next_resolve_cavity)
     .define("WORKBENCH_CAVITY")
     .sampler(7, ImageType::FLOAT_2D, "jitter_tx") /* TODO(Miguel Pozo): GPU_SAMPLER_REPEAT is set
                                                      in CavityEffect, it doesn't work here ? */
-    .uniform_buf(5, "CavitySamples", "cavity_samples", Frequency::PASS);
+    .uniform_buf(5, "float4", "cavity_samples[512]", Frequency::PASS);
 
 // Variations
 
diff --git a/source/blender/draw/engines/workbench/shaders/workbench_cavity_lib.glsl b/source/blender/draw/engines/workbench/shaders/workbench_cavity_lib.glsl
index d715825c268..0bdea739f35 100644
--- a/source/blender/draw/engines/workbench/shaders/workbench_cavity_lib.glsl
+++ b/source/blender/draw/engines/workbench/shaders/workbench_cavity_lib.glsl
@@ -8,7 +8,7 @@
 #ifdef WORKBENCH_CAVITY
 #  define USE_CAVITY
 #  define cavityJitter jitter_tx
-#  define samples_coords cavity_samples.samples
+#  define samples_coords cavity_samples
 #endif
 
 #ifdef USE_CAVITY
diff --git a/source/blender/draw/engines/workbench/workbench_effect_cavity.cc b/source/blender/draw/engines/workbench/workbench_effect_cavity.cc
index 9b6a82425a7..5e395cff494 100644
--- a/source/blender/draw/engines/workbench/workbench_effect_cavity.cc
+++ b/source/blender/draw/engines/workbench/workbench_effect_cavity.cc
@@ -69,11 +69,11 @@ void CavityEffect::setup_resources(int sample_count)
       BLI_hammersley_1d(i, &dphi);
 
       float phi = (float)dphi * 2.0f * M_PI + it_add;
-      samples_buf.samples[i].x = cosf(phi);
-      samples_buf.samples[i].y = sinf(phi);
+      samples_buf[i].x = cosf(phi);
+      samples_buf[i].y = sinf(phi);
       /* This deliberately distribute more samples
        * at the center of the disk (and thus the shadow). */
-      samples_buf.samples[i].z = r;
+      samples_buf[i].z = r;
     }
 
     samples_buf.push_update();
diff --git a/source/blender/draw/engines/workbench/workbench_private.hh b/source/blender/draw/engines/workbench/workbench_private.hh
index edce2e819bc..c5c2b52ec52 100644
--- a/source/blender/draw/engines/workbench/workbench_private.hh
+++ b/source/blender/draw/engines/workbench/workbench_private.hh
@@ -56,9 +56,10 @@ class ShaderCache {
 
 class CavityEffect {
   static const int JITTER_TEX_SIZE = 64;
-  static const int MAX_SAMPLES = MAX_CAVITY_SAMPLES;
+  static const int MAX_SAMPLES = 512;  // This value must be kept in sync with the one declared at
+                                       // workbench_composite_info.hh (cavity_samples)
 
-  UniformBuffer<CavitySamples> samples_buf;
+  UniformArrayBuffer<float4, MAX_SAMPLES> samples_buf;
   int sample_count;
   Texture jitter_tx;
 
diff --git a/source/blender/draw/engines/workbench/workbench_shader_shared.h b/source/blender/draw/engines/workbench/workbench_shader_shared.h
index eab3f7e6ac1..de485e37917 100644
--- a/source/blender/draw/engines/workbench/workbench_shader_shared.h
+++ b/source/blender/draw/engines/workbench/workbench_shader_shared.h
@@ -47,8 +47,3 @@ struct WorldData {
 
   float4 background_color;
 };
-
-static const int MAX_CAVITY_SAMPLES = 512;
-struct CavitySamples {
-  float4 samples[MAX_CAVITY_SAMPLES];
-};



More information about the Bf-blender-cvs mailing list