[Bf-blender-cvs] [a28b14e760f] temp-eevee-next-cryptomatte: Use cryptomatte_samples_per_layer.

Jeroen Bakker noreply at git.blender.org
Mon Aug 29 15:51:33 CEST 2022


Commit: a28b14e760f16fd499c3a58f292ba4ba31d2cf46
Author: Jeroen Bakker
Date:   Mon Aug 29 14:43:13 2022 +0200
Branches: temp-eevee-next-cryptomatte
https://developer.blender.org/rBa28b14e760f16fd499c3a58f292ba4ba31d2cf46

Use cryptomatte_samples_per_layer.

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

M	source/blender/draw/engines/eevee_next/eevee_cryptomatte.cc
M	source/blender/draw/engines/eevee_next/shaders/eevee_cryptomatte_post_comp.glsl
M	source/blender/draw/engines/eevee_next/shaders/infos/eevee_cryptomatte_info.hh

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

diff --git a/source/blender/draw/engines/eevee_next/eevee_cryptomatte.cc b/source/blender/draw/engines/eevee_next/eevee_cryptomatte.cc
index 08821940444..d06c4c8cc76 100644
--- a/source/blender/draw/engines/eevee_next/eevee_cryptomatte.cc
+++ b/source/blender/draw/engines/eevee_next/eevee_cryptomatte.cc
@@ -43,7 +43,8 @@ void Cryptomatte::begin_sync()
   Texture &cryptomatte_tx = inst_.film.cryptomatte_tx_get();
   DRW_shgroup_uniform_image_ref(grp, "cryptomatte_img", &cryptomatte_tx);
   DRW_shgroup_uniform_int_copy(grp, "cryptomatte_layer_len", layer_len_);
-  DRW_shgroup_uniform_int_copy(grp, "cryptomatte_levels", inst_.view_layer->cryptomatte_levels);
+  DRW_shgroup_uniform_int_copy(
+      grp, "cryptomatte_samples_per_layer", inst_.view_layer->cryptomatte_levels);
   int3 dispatch_size = math::divide_ceil(cryptomatte_tx.size(), int3(FILM_GROUP_SIZE));
   DRW_shgroup_call_compute(grp, UNPACK2(dispatch_size), 1);
 }
diff --git a/source/blender/draw/engines/eevee_next/shaders/eevee_cryptomatte_post_comp.glsl b/source/blender/draw/engines/eevee_next/shaders/eevee_cryptomatte_post_comp.glsl
index 1a8f5956f18..e0cb9abd5c7 100644
--- a/source/blender/draw/engines/eevee_next/shaders/eevee_cryptomatte_post_comp.glsl
+++ b/source/blender/draw/engines/eevee_next/shaders/eevee_cryptomatte_post_comp.glsl
@@ -4,7 +4,7 @@
 
 void cryptomatte_load_samples(ivec2 texel, int layer, out vec2 samples[CRYPTOMATTE_LEVELS_MAX])
 {
-  int pass_len = divide_ceil(cryptomatte_levels, 2);
+  int pass_len = divide_ceil(cryptomatte_samples_per_layer, 2);
   int layer_id = layer * pass_len;
 
   /* Read all samples from the cryptomatte layer. */
@@ -22,10 +22,10 @@ bool cryptomatte_sort_samples(inout vec2 samples[CRYPTOMATTE_LEVELS_MAX])
 {
   /* Sort samples. Lame implementation, can be replaced with a more efficient algorithm. */
   bool changed = false;
-  for (int i = 0; i < cryptomatte_levels - 1 && samples[i].y != 0.0; i++) {
+  for (int i = 0; i < cryptomatte_samples_per_layer - 1 && samples[i].y != 0.0; i++) {
     int highest_index = i;
     float highest_weight = samples[i].y;
-    for (int j = i + 1; j < cryptomatte_levels && samples[j].y != 0.0; j++) {
+    for (int j = i + 1; j < cryptomatte_samples_per_layer && samples[j].y != 0.0; j++) {
       if (samples[j].y > highest_weight) {
         highest_index = j;
         highest_weight = samples[j].y;
@@ -44,7 +44,7 @@ bool cryptomatte_sort_samples(inout vec2 samples[CRYPTOMATTE_LEVELS_MAX])
 
 void cryptomatte_store_samples(ivec2 texel, int layer, in vec2 samples[CRYPTOMATTE_LEVELS_MAX])
 {
-  int pass_len = divide_ceil(cryptomatte_levels, 2);
+  int pass_len = divide_ceil(cryptomatte_samples_per_layer, 2);
   int layer_id = layer * pass_len;
 
   /* Store samples back to the cryptomatte layer. */
diff --git a/source/blender/draw/engines/eevee_next/shaders/infos/eevee_cryptomatte_info.hh b/source/blender/draw/engines/eevee_next/shaders/infos/eevee_cryptomatte_info.hh
index 5709a18b8b7..46068910143 100644
--- a/source/blender/draw/engines/eevee_next/shaders/infos/eevee_cryptomatte_info.hh
+++ b/source/blender/draw/engines/eevee_next/shaders/infos/eevee_cryptomatte_info.hh
@@ -7,6 +7,6 @@ GPU_SHADER_CREATE_INFO(eevee_cryptomatte_post)
     .do_static_compilation(true)
     .image(0, GPU_RGBA32F, Qualifier::READ_WRITE, ImageType::FLOAT_2D_ARRAY, "cryptomatte_img")
     .push_constant(Type::INT, "cryptomatte_layer_len")
-    .push_constant(Type::INT, "cryptomatte_levels")
+    .push_constant(Type::INT, "cryptomatte_samples_per_layer")
     .local_group_size(FILM_GROUP_SIZE, FILM_GROUP_SIZE)
     .compute_source("eevee_cryptomatte_post_comp.glsl");
\ No newline at end of file



More information about the Bf-blender-cvs mailing list