Code improvements + Mix node #30

Merged
Bogdan Nagirniak merged 18 commits from BogdanNagirniak/blender:matx-code-improvements into matx-export-material 2023-09-22 18:23:13 +02:00
5 changed files with 17 additions and 15 deletions
Showing only changes of commit 4ca83bc08f - Show all commits

View File

@ -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)))

View File

@ -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;

View File

@ -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,

View File

@ -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:

View File

@ -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);