11 inputs.resize(num_inputs);
12 for (
size_t i = 0; i < num_inputs; i++) {
21 for (
size_t i = 0; i < inputs.size(); i++) {
28 if (object_index != 0.0f) {
29 object_index_.
append(object_index);
39 for (
int i = 0; i < it.get_num_inputs(); i++) {
40 const float *input = it.in(i);
45 ::memcpy(&m3hash, &input[0],
sizeof(
uint32_t));
51 for (
const float hash : object_index_) {
52 if (input[0] ==
hash) {
53 it.out[3] += input[1];
55 if (input[2] ==
hash) {
56 it.out[3] += input[3];
75 const float *color = it.in(0);
83 std::unique_ptr<MetaData> meta_data = std::make_unique<MetaData>();
84 meta_data->is_data =
true;
MINLINE void copy_v3_v3(float r[3], const float a[3])
MINLINE void zero_v4(float r[4])
void append(const T &value)
void add_object_index(float object_index)
CryptomatteOperation(size_t num_inputs=6)
void init_execution() override
void update_memory_buffer_partial(MemoryBuffer *output, const rcti &area, Span< MemoryBuffer * > inputs) override
std::unique_ptr< MetaData > get_meta_data() override
void update_memory_buffer_partial(MemoryBuffer *output, const rcti &area, Span< MemoryBuffer * > inputs) override
CryptomattePickOperation()
a MemoryBuffer contains access to the data
void add_output_socket(DataType datatype)
SocketReader * get_input_socket_reader(unsigned int index)
NodeOperationFlags flags_
void add_input_socket(DataType datatype, ResizeMode resize_mode=ResizeMode::Center)
draw_view in_light_buf[] float
typename BuffersIteratorBuilder< T >::Iterator BuffersIterator