79 uint32_t mantissa =
hash & ((1 << 23) - 1);
80 uint32_t exponent = (
hash >> 23) & ((1 << 8) - 1);
81 exponent = std::max(exponent, uint32_t(1));
82 exponent = std::min(exponent, uint32_t(254));
83 exponent = exponent << 23;
86 uint32_t float_bits =
sign | exponent | mantissa;
88 memcpy(&f, &float_bits,
sizeof(uint32_t));
96 MEM_CXX_CLASS_ALLOC_FUNCS(
"cryptomatte:CryptomatteLayer")
103 std::optional<std::
string> operator[](
float encoded_hash) const;
119 const char *propname,
121 int propvalue_maxncpy);
124 const char *propname,
126 int propvalue_maxncpy);
void BKE_cryptomatte_free(struct CryptomatteSession *session)
uint32_t BLI_hash_mm3(const unsigned char *data, size_t len, uint32_t seed)
StringRef BKE_cryptomatte_extract_layer_name(StringRef render_pass_name)
std::unique_ptr< CryptomatteSession, CryptomatteSessionDeleter > CryptomatteSessionPtr
CryptomatteLayer * BKE_cryptomatte_layer_get(CryptomatteSession &session, StringRef layer_name)
std::string BKE_cryptomatte_meta_data_key(StringRef layer_name, StringRefNull key_name)
const blender::Vector< std::string > & BKE_cryptomatte_layer_names_get(const CryptomatteSession &session)
static CryptomatteHash from_hex_encoded(blender::StringRef hex_encoded)
CryptomatteHash(const char *name, int name_len)
CryptomatteHash(uint32_t hash)
std::string hex_encoded() const
float float_encoded() const
void add_hash(blender::StringRef name, CryptomatteHash cryptomatte_hash)
blender::Map< std::string, CryptomatteHash > hashes
static std::unique_ptr< CryptomatteLayer > read_from_manifest(blender::StringRefNull manifest)
std::string manifest() const
uint32_t add_ID(const ID &id)
void operator()(CryptomatteSession *session)
static void extract_layer_manifest(void *_data, const char *propname, char *propvalue, int propvalue_maxncpy)
static blender::StringRef extract_layer_hash(blender::StringRefNull key)
static void extract_layer_names(void *_data, const char *propname, char *propvalue, int propvalue_maxncpy)
blender::Map< std::string, std::string > hash_to_layer_name
CryptomatteSession * session