Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brecht@blender.org>2020-10-27 13:40:42 +0300
committerBrecht Van Lommel <brecht@blender.org>2020-10-27 13:40:42 +0300
commit30f626fe4cd62f406468ef0ff2169694424b1a29 (patch)
treed428586cd3a6e689ab1e2f5a4222d1e0eb77ada7 /intern/cycles/graph
parent17381c7b90eb3acde53eca013ae5a5a55699f17d (diff)
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.
Diffstat (limited to 'intern/cycles/graph')
-rw-r--r--intern/cycles/graph/node.cpp85
-rw-r--r--intern/cycles/graph/node.h61
2 files changed, 5 insertions, 141 deletions
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<typename T> 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<array<bool>>(&other, socket));
- break;
- case SocketType::FLOAT_ARRAY:
- set(socket, get_socket_value<array<float>>(&other, socket));
- break;
- case SocketType::INT_ARRAY:
- set(socket, get_socket_value<array<int>>(&other, socket));
- break;
- case SocketType::COLOR_ARRAY:
- case SocketType::VECTOR_ARRAY:
- case SocketType::POINT_ARRAY:
- case SocketType::NORMAL_ARRAY:
- set(socket, get_socket_value<array<float3>>(&other, socket));
- break;
- case SocketType::POINT2_ARRAY:
- set(socket, get_socket_value<array<float2>>(&other, socket));
- break;
- case SocketType::STRING_ARRAY:
- set(socket, get_socket_value<array<ustring>>(&other, socket));
- break;
- case SocketType::TRANSFORM_ARRAY:
- set(socket, get_socket_value<array<Transform>>(&other, socket));
- break;
- case SocketType::NODE_ARRAY:
- set(socket, get_socket_value<array<Node *>>(&other, socket));
- break;
- default:
- assert(0);
- break;
- }
- }
- else {
- switch (socket.type) {
- case SocketType::BOOLEAN:
- set(socket, get_socket_value<bool>(&other, socket));
- break;
- case SocketType::FLOAT:
- set(socket, get_socket_value<float>(&other, socket));
- break;
- case SocketType::INT:
- set(socket, get_socket_value<int>(&other, socket));
- break;
- case SocketType::UINT:
- set(socket, get_socket_value<uint>(&other, socket));
- break;
- case SocketType::COLOR:
- case SocketType::VECTOR:
- case SocketType::POINT:
- case SocketType::NORMAL:
- set(socket, get_socket_value<float3>(&other, socket));
- break;
- case SocketType::POINT2:
- set(socket, get_socket_value<float2>(&other, socket));
- break;
- case SocketType::STRING:
- set(socket, get_socket_value<ustring>(&other, socket));
- break;
- case SocketType::ENUM:
- set(socket, get_socket_value<int>(&other, socket));
- break;
- case SocketType::TRANSFORM:
- set(socket, get_socket_value<Transform>(&other, socket));
- break;
- case SocketType::NODE:
- set(socket, get_socket_value<Node *>(&other, socket));
- break;
- default:
- assert(0);
- break;
- }
- }
-}
-
template<typename T>
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<type_>(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<typename T> static T &get_socket_value(const Node *node, const SocketType &socket)
- {
- return (T &)*(((char *)node) + socket.struct_offset);
- }
-
SocketModifiedFlags socket_modified;
template<typename T> void set_if_different(const SocketType &input, T value);