20 object_layer_ =
nullptr;
21 asset_layer_ =
nullptr;
22 material_layer_ =
nullptr;
27 for (
const std::string &layer_name :
32 *session_, layer_name);
34 object_layer_ = layer;
40 material_layer_ = layer;
49 cryptomatte_object_buf.resize(16);
63 float2 object_hashes(0.0f, 0.0f);
76 cryptomatte_object_buf.get_or_resize(resource_id) = object_hashes;
83 if (material_layer_ && material) {
84 material_layer_->add_ID(material->id);
90 cryptomatte_object_buf.push_update();
92 object_layer_ =
nullptr;
93 asset_layer_ =
nullptr;
94 material_layer_ =
nullptr;
104 uint32_t cryptomatte_hash = 0;
108 cryptomatte_hash = object_layer_->add_ID(
id);
112 cryptomatte_hash = asset_layer_->add_ID(
id);
116 cryptomatte_hash = material_layer_->add_ID(
id);
120 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
uint resource_index() const
float register_id(const eViewLayerEEVEEPassType layer, const ID &id) const
void store_metadata(RenderResult *render_result)
void sync_material(const ::Material *material)
void sync_object(Object *ob, ResourceHandleRange res_handle)
CryptomatteLayer * BKE_cryptomatte_layer_get(CryptomatteSession &session, StringRef layer_name)
const blender::Vector< std::string > & BKE_cryptomatte_layer_names_get(const CryptomatteSession &session)
static eViewLayerEEVEEPassType enabled_passes(const ViewLayer *view_layer)
VecBase< float, 2 > float2