[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