[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