From 30f626fe4cd62f406468ef0ff2169694424b1a29 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Tue, 27 Oct 2020 11:40:42 +0100 Subject: Revert "Cycles API: encapsulate Node socket members" This reverts commit 527f8b32b32187f754e5b176db6377736f9cb8ff. It is causing motion blur test failures and crashes in some renders, reverting until this is fixed. --- intern/cycles/graph/node.cpp | 85 +++----------------------------------------- intern/cycles/graph/node.h | 61 ------------------------------- 2 files changed, 5 insertions(+), 141 deletions(-) (limited to 'intern/cycles/graph') diff --git a/intern/cycles/graph/node.cpp b/intern/cycles/graph/node.cpp index 8c355b66f13..f239040ee3d 100644 --- a/intern/cycles/graph/node.cpp +++ b/intern/cycles/graph/node.cpp @@ -52,6 +52,11 @@ Node::~Node() { } +template static T &get_socket_value(const Node *node, const SocketType &socket) +{ + return (T &)*(((char *)node) + socket.struct_offset); +} + #ifndef NDEBUG static bool is_socket_float3(const SocketType &socket) { @@ -382,86 +387,6 @@ void Node::copy_value(const SocketType &socket, const Node &other, const SocketT } } -void Node::set_value(const SocketType &socket, const Node &other, const SocketType &other_socket) -{ - assert(socket.type == other_socket.type); - - if (socket.is_array()) { - switch (socket.type) { - case SocketType::BOOLEAN_ARRAY: - set(socket, get_socket_value>(&other, socket)); - break; - case SocketType::FLOAT_ARRAY: - set(socket, get_socket_value>(&other, socket)); - break; - case SocketType::INT_ARRAY: - set(socket, get_socket_value>(&other, socket)); - break; - case SocketType::COLOR_ARRAY: - case SocketType::VECTOR_ARRAY: - case SocketType::POINT_ARRAY: - case SocketType::NORMAL_ARRAY: - set(socket, get_socket_value>(&other, socket)); - break; - case SocketType::POINT2_ARRAY: - set(socket, get_socket_value>(&other, socket)); - break; - case SocketType::STRING_ARRAY: - set(socket, get_socket_value>(&other, socket)); - break; - case SocketType::TRANSFORM_ARRAY: - set(socket, get_socket_value>(&other, socket)); - break; - case SocketType::NODE_ARRAY: - set(socket, get_socket_value>(&other, socket)); - break; - default: - assert(0); - break; - } - } - else { - switch (socket.type) { - case SocketType::BOOLEAN: - set(socket, get_socket_value(&other, socket)); - break; - case SocketType::FLOAT: - set(socket, get_socket_value(&other, socket)); - break; - case SocketType::INT: - set(socket, get_socket_value(&other, socket)); - break; - case SocketType::UINT: - set(socket, get_socket_value(&other, socket)); - break; - case SocketType::COLOR: - case SocketType::VECTOR: - case SocketType::POINT: - case SocketType::NORMAL: - set(socket, get_socket_value(&other, socket)); - break; - case SocketType::POINT2: - set(socket, get_socket_value(&other, socket)); - break; - case SocketType::STRING: - set(socket, get_socket_value(&other, socket)); - break; - case SocketType::ENUM: - set(socket, get_socket_value(&other, socket)); - break; - case SocketType::TRANSFORM: - set(socket, get_socket_value(&other, socket)); - break; - case SocketType::NODE: - set(socket, get_socket_value(&other, socket)); - break; - default: - assert(0); - break; - } - } -} - template static bool is_array_equal(const Node *node, const Node *other, const SocketType &socket) { diff --git a/intern/cycles/graph/node.h b/intern/cycles/graph/node.h index b28ea09282b..16bd5e4358a 100644 --- a/intern/cycles/graph/node.h +++ b/intern/cycles/graph/node.h @@ -29,61 +29,6 @@ struct Node; struct NodeType; struct Transform; -/* Note: in the following macros we use "type const &" instead of "const type &" - * to avoid issues when pasting a pointer type. */ -#define NODE_SOCKET_API_BASE_METHODS(type_, name, string_name) \ - const SocketType *get_##name##_socket() const \ - { \ - static const SocketType *socket = type->find_input(ustring(string_name)); \ - return socket; \ - } \ - bool name##_is_modified() const \ - { \ - const SocketType *socket = get_##name##_socket(); \ - return socket_is_modified(*socket); \ - } \ - void tag_##name##_modified() \ - { \ - const SocketType *socket = get_##name##_socket(); \ - socket_modified |= socket->modified_flag_bit; \ - } \ - type_ const &get_##name() const \ - { \ - const SocketType *socket = get_##name##_socket(); \ - return get_socket_value(this, *socket); \ - } - -#define NODE_SOCKET_API_BASE(type_, name, string_name) \ - protected: \ - type_ name; \ -\ - public: \ - NODE_SOCKET_API_BASE_METHODS(type_, name, string_name) - -#define NODE_SOCKET_API(type_, name) \ - NODE_SOCKET_API_BASE(type_, name, #name) \ - void set_##name(type_ value) \ - { \ - const SocketType *socket = get_##name##_socket(); \ - this->set(*socket, value); \ - } - -#define NODE_SOCKET_API_ARRAY(type_, name) \ - NODE_SOCKET_API_BASE(type_, name, #name) \ - void set_##name(type_ &value) \ - { \ - const SocketType *socket = get_##name##_socket(); \ - this->set(*socket, value); \ - } - -#define NODE_SOCKET_API_STRUCT_MEMBER(type_, name, member) \ - NODE_SOCKET_API_BASE_METHODS(type_, name##_##member, #name "." #member) \ - void set_##name##_##member(type_ value) \ - { \ - const SocketType *socket = get_##name##_##member##_socket(); \ - this->set(*socket, value); \ - } - /* Node */ struct NodeOwner { @@ -143,7 +88,6 @@ struct Node { void set_default_value(const SocketType &input); bool equals_value(const Node &other, const SocketType &input) const; void copy_value(const SocketType &input, const Node &other, const SocketType &other_input); - void set_value(const SocketType &input, const Node &other, const SocketType &other_input); /* equals */ bool equals(const Node &other) const; @@ -175,11 +119,6 @@ struct Node { protected: const NodeOwner *owner; - template static T &get_socket_value(const Node *node, const SocketType &socket) - { - return (T &)*(((char *)node) + socket.struct_offset); - } - SocketModifiedFlags socket_modified; template void set_if_different(const SocketType &input, T value); -- cgit v1.2.3