forked from blender/blender
Code improvements + Mix node #30
@ -379,18 +379,18 @@ NodeItem NodeItem::rotate(const NodeItem &angle, const NodeItem &axis)
|
||||
BLI_assert(angle.type() == Type::Float);
|
||||
BLI_assert(axis.type() == Type::Vector3);
|
||||
|
||||
return create_node(
|
||||
"rotate3d",
|
||||
NodeItem::Type::Vector3,
|
||||
{{"in", *this}, {"amount", angle * val(float(180.0f / M_PI))}, {"axis", axis}});
|
||||
return create_node("rotate3d",
|
||||
NodeItem::Type::Vector3,
|
||||
{{"in", *this},
|
||||
{"amount", angle},
|
||||
{"axis", axis}});
|
||||
}
|
||||
|
||||
NodeItem NodeItem::rotate(const NodeItem &angle_xyz, bool invert)
|
||||
{
|
||||
NodeItem angle = angle_xyz * val(float(180.0f / M_PI));
|
||||
NodeItem x = angle[0];
|
||||
NodeItem y = angle[1];
|
||||
NodeItem z = angle[2];
|
||||
NodeItem x = angle_xyz[0];
|
||||
NodeItem y = angle_xyz[1];
|
||||
NodeItem z = angle_xyz[2];
|
||||
if (invert) {
|
||||
return rotate(z, val(MaterialX::Vector3(0.0f, 0.0f, 1.0f)))
|
||||
.rotate(y, val(MaterialX::Vector3(0.0f, 1.0f, 0.0f)))
|
||||
|
@ -92,8 +92,8 @@ class NodeItem {
|
||||
NodeItem mix(const NodeItem &val1, const NodeItem &val2) const;
|
||||
NodeItem clamp(const NodeItem &min_val, const NodeItem &max_val) const;
|
||||
NodeItem clamp(float min_val = 0.0f, float max_val = 1.0f) const;
|
||||
NodeItem rotate(const NodeItem &angle, const NodeItem &axis);
|
||||
NodeItem rotate(const NodeItem &angle_xyz, bool invert = false);
|
||||
NodeItem rotate(const NodeItem &angle, const NodeItem &axis); /* angle in degrees */
|
||||
NodeItem rotate(const NodeItem &angle_xyz, bool invert = false); /* angle in degrees */
|
||||
NodeItem sin() const;
|
||||
NodeItem cos() const;
|
||||
NodeItem tan() const;
|
||||
|
@ -337,7 +337,7 @@ NODE_SHADER_MATERIALX_BEGIN
|
||||
|
||||
NodeItem roughness = in["roughness"];
|
||||
NodeItem anisotropy = in["anisotropic"];
|
||||
NodeItem rotation = in["anisotropic_rotation"];
|
||||
NodeItem rotation = in["anisotropic_rotation"] * val(float(180.0f / M_PI));;
|
||||
NodeItem base_color = in["base_color"];
|
||||
NodeItem specular = in["specular"];
|
||||
NodeItem coat = in["coat"];
|
||||
@ -348,7 +348,8 @@ NODE_SHADER_MATERIALX_BEGIN
|
||||
|
||||
NodeItem n_main_tangent = empty();
|
||||
if (tangent && normal) {
|
||||
NodeItem n_tangent_rotate_normalize = tangent.rotate(rotation, normal).normalize();
|
||||
NodeItem n_tangent_rotate_normalize =
|
||||
tangent.rotate(rotation, normal).normalize();
|
||||
n_main_tangent = anisotropy.if_else(
|
||||
NodeItem::CompareOp::Greater, val(0.0f), n_tangent_rotate_normalize, tangent);
|
||||
}
|
||||
@ -501,7 +502,7 @@ NODE_SHADER_MATERIALX_BEGIN
|
||||
NodeItem roughness = in["roughness"];
|
||||
NodeItem base_color = in["base_color"];
|
||||
NodeItem anisotropic = in["anisotropic"];
|
||||
NodeItem rotation = in["anisotropic_rotation"];
|
||||
NodeItem rotation = in["anisotropic_rotation"] * val(float(180.0f / M_PI));
|
||||
|
||||
res = create_node("standard_surface",
|
||||
NodeItem::Type::SurfaceShader,
|
||||
|
@ -85,7 +85,8 @@ NODE_SHADER_MATERIALX_BEGIN
|
||||
|
||||
NodeItem scale = get_input_value("Scale", NodeItem::Type::Vector3);
|
||||
NodeItem location = get_input_value("Location", NodeItem::Type::Vector3);
|
||||
NodeItem rotation = get_input_value("Rotation", NodeItem::Type::Vector3);
|
||||
NodeItem rotation = get_input_value("Rotation", NodeItem::Type::Vector3) *
|
||||
val(float(180.0f / M_PI));
|
||||
|
||||
switch (node_->custom1) {
|
||||
case NODE_MAPPING_TYPE_POINT:
|
||||
|
@ -227,7 +227,7 @@ NODE_SHADER_MATERIALX_BEGIN
|
||||
val(MaterialX::Vector3(1.0f, 1.0f, -1.0f));
|
||||
NodeItem res = vector - center;
|
||||
int mode = node_->custom1;
|
||||
bool invert = node_->custom1;
|
||||
bool invert = node_->custom2;
|
||||
|
||||
if (mode == NODE_VECTOR_ROTATE_TYPE_EULER_XYZ) {
|
||||
angle = get_input_value("Rotation", NodeItem::Type::Vector3);
|
||||
|
Loading…
Reference in New Issue
Block a user