22 object_layer_ =
nullptr;
23 asset_layer_ =
nullptr;
24 material_layer_ =
nullptr;
29 for (
const std::string &layer_name :
34 *session_, layer_name);
36 object_layer_ = layer;
42 material_layer_ = layer;
51 cryptomatte_object_buf.
resize(16);
65 float2 object_hashes(0.0f, 0.0f);
78 cryptomatte_object_buf.
get_or_resize(resource_id) = object_hashes;
85 if (material_layer_ && material) {
86 material_layer_->
add_ID(material->id);
94 object_layer_ =
nullptr;
95 asset_layer_ =
nullptr;
96 material_layer_ =
nullptr;
110 cryptomatte_hash = object_layer_->
add_ID(
id);
114 cryptomatte_hash = asset_layer_->
add_ID(
id);
118 cryptomatte_hash = material_layer_->
add_ID(
id);
122 const char *name = &
id.name[2];
void BKE_cryptomatte_store_metadata(const struct CryptomatteSession *session, struct RenderResult *render_result)
float BKE_cryptomatte_hash_to_float(uint32_t cryptomatte_hash)
struct CryptomatteSession * BKE_cryptomatte_init_from_view_layer(const struct ViewLayer *view_layer)
uint32_t BKE_cryptomatte_hash(const char *name, int name_len)
int char char int int int int size_t BLI_strnlen(const char *str, size_t maxlen) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
@ EEVEE_RENDER_PASS_CRYPTOMATTE_MATERIAL
@ EEVEE_RENDER_PASS_CRYPTOMATTE_OBJECT
@ EEVEE_RENDER_PASS_CRYPTOMATTE_ASSET
#define RE_PASSNAME_CRYPTOMATTE_MATERIAL
#define RE_PASSNAME_CRYPTOMATTE_ASSET
#define RE_PASSNAME_CRYPTOMATTE_OBJECT
constexpr bool endswith(StringRef suffix) const
void resize(int64_t new_size)
T & get_or_resize(int64_t index)
float register_id(const eViewLayerEEVEEPassType layer, const ID &id) const
void sync_object(Object *ob, ResourceHandle res_handle)
void store_metadata(RenderResult *render_result)
void sync_material(const ::Material *material)
eViewLayerEEVEEPassType enabled_passes_get() const
CryptomatteLayer * BKE_cryptomatte_layer_get(CryptomatteSession &session, const StringRef layer_name)
const blender::Vector< std::string > & BKE_cryptomatte_layer_names_get(const CryptomatteSession &session)
static eViewLayerEEVEEPassType enabled_passes(const ViewLayer *view_layer)
uint32_t add_ID(const ID &id)
uint resource_index() const