Cycles: light and shadow linking
With light linking, lights can be set to affect only specific objects in the scene. Shadow linking additionally gives control over which objects acts a shadow blockers for a light. Usage: https://wiki.blender.org/wiki/Reference/Release_Notes/4.0/Cycles Implementation: https://wiki.blender.org/wiki/Source/Render/Cycles/LightLinking Ref #104972 Co-authored-by: Brecht Van Lommel <brecht@blender.org>
This commit is contained in:
committed by
Brecht Van Lommel
parent
60d97fb5fa
commit
ba3f26fac5
@@ -68,6 +68,12 @@ void Node::set(const SocketType &input, uint value)
|
||||
set_if_different(input, value);
|
||||
}
|
||||
|
||||
void Node::set(const SocketType &input, uint64_t value)
|
||||
{
|
||||
assert(input.type == SocketType::UINT64);
|
||||
set_if_different(input, value);
|
||||
}
|
||||
|
||||
void Node::set(const SocketType &input, float value)
|
||||
{
|
||||
assert(input.type == SocketType::FLOAT);
|
||||
@@ -190,6 +196,12 @@ uint Node::get_uint(const SocketType &input) const
|
||||
return get_socket_value<uint>(this, input);
|
||||
}
|
||||
|
||||
uint64_t Node::get_uint64(const SocketType &input) const
|
||||
{
|
||||
assert(input.type == SocketType::UINT64);
|
||||
return get_socket_value<uint64_t>(this, input);
|
||||
}
|
||||
|
||||
float Node::get_float(const SocketType &input) const
|
||||
{
|
||||
assert(input.type == SocketType::FLOAT);
|
||||
@@ -434,6 +446,9 @@ void Node::set_value(const SocketType &socket, const Node &other, const SocketTy
|
||||
case SocketType::UINT:
|
||||
set(socket, get_socket_value<uint>(&other, socket));
|
||||
break;
|
||||
case SocketType::UINT64:
|
||||
set(socket, get_socket_value<uint64_t>(&other, socket));
|
||||
break;
|
||||
case SocketType::COLOR:
|
||||
case SocketType::VECTOR:
|
||||
case SocketType::POINT:
|
||||
@@ -489,6 +504,8 @@ bool Node::equals_value(const Node &other, const SocketType &socket) const
|
||||
return is_value_equal<int>(this, &other, socket);
|
||||
case SocketType::UINT:
|
||||
return is_value_equal<uint>(this, &other, socket);
|
||||
case SocketType::UINT64:
|
||||
return is_value_equal<uint64_t>(this, &other, socket);
|
||||
case SocketType::COLOR:
|
||||
return is_value_equal<float3>(this, &other, socket);
|
||||
case SocketType::VECTOR:
|
||||
@@ -534,6 +551,7 @@ bool Node::equals_value(const Node &other, const SocketType &socket) const
|
||||
return is_array_equal<void *>(this, &other, socket);
|
||||
|
||||
case SocketType::UNDEFINED:
|
||||
case SocketType::NUM_TYPES:
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -608,6 +626,9 @@ void Node::hash(MD5Hash &md5)
|
||||
case SocketType::UINT:
|
||||
value_hash<uint>(this, socket, md5);
|
||||
break;
|
||||
case SocketType::UINT64:
|
||||
value_hash<uint64_t>(this, socket, md5);
|
||||
break;
|
||||
case SocketType::COLOR:
|
||||
float3_hash(this, socket, md5);
|
||||
break;
|
||||
@@ -673,6 +694,7 @@ void Node::hash(MD5Hash &md5)
|
||||
break;
|
||||
|
||||
case SocketType::UNDEFINED:
|
||||
case SocketType::NUM_TYPES:
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -697,6 +719,7 @@ size_t Node::get_total_size_in_bytes() const
|
||||
case SocketType::FLOAT:
|
||||
case SocketType::INT:
|
||||
case SocketType::UINT:
|
||||
case SocketType::UINT64:
|
||||
case SocketType::COLOR:
|
||||
case SocketType::VECTOR:
|
||||
case SocketType::POINT:
|
||||
@@ -745,6 +768,7 @@ size_t Node::get_total_size_in_bytes() const
|
||||
break;
|
||||
|
||||
case SocketType::UNDEFINED:
|
||||
case SocketType::NUM_TYPES:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user