22using namespace Qt::StringLiterals;
26 return u
"metalrough"_s;
64 return *
this == *otherMetal;
69 return mAnisotropy > 0;
75 if ( elem.hasAttribute( u
"emission_color"_s ) )
78 mEmissiveColor = QColor();
79 mEmissionFactor = elem.attribute( u
"emission_factor"_s, u
"1.0"_s ).toDouble();
81 mClearCoatFactor = elem.attribute( u
"clear_coat_factor"_s, u
"0.0"_s ).toDouble();
82 mClearCoatRoughness = elem.attribute( u
"clear_coat_roughness"_s, u
"0.0"_s ).toDouble();
84 mMetalness = elem.attribute( u
"metalness"_s, u
"0.0"_s ).toDouble();
85 mRoughness = elem.attribute( u
"roughness"_s, u
"0.5"_s ).toDouble();
86 mOpacity = elem.attribute( u
"opacity"_s, u
"1.0"_s ).toDouble();
87 mReflectance = elem.attribute( u
"reflectance"_s, u
"0.5"_s ).toDouble();
88 mAnisotropy = elem.attribute( u
"anisotropy"_s, u
"0.0"_s ).toDouble();
89 mAnisotropyRotation = elem.attribute( u
"anisotropy_rotation"_s, u
"0.0"_s ).toDouble();
97 elem.setAttribute( u
"metalness"_s, mMetalness );
98 elem.setAttribute( u
"roughness"_s, mRoughness );
101 elem.setAttribute( u
"reflectance"_s, mReflectance );
105 elem.setAttribute( u
"anisotropy"_s, mAnisotropy );
109 elem.setAttribute( u
"anisotropy_rotation"_s, mAnisotropyRotation );
111 if ( mEmissiveColor.isValid() )
115 elem.setAttribute( u
"emission_factor"_s, mEmissionFactor );
120 elem.setAttribute( u
"clear_coat_factor"_s, mClearCoatFactor );
124 elem.setAttribute( u
"clear_coat_roughness"_s, mClearCoatRoughness );
129 elem.setAttribute( u
"opacity"_s, mOpacity );
MaterialRenderingTechnique
Material rendering techniques.
@ Points
Point based rendering, requires point data.
@ Triangles
Triangle based rendering (default).
@ TrianglesFromModel
Triangle based rendering, using a model object source.
@ Lines
Line based rendering, requires line data.
@ Billboards
Flat billboard rendering.
@ TrianglesDataDefined
Triangle based rendering with possibility of datadefined color.
@ InstancedPoints
Instanced based rendering, requiring triangles and point data.
@ TrianglesWithFixedTexture
Triangle based rendering, using a fixed, non-user-configurable texture (e.g. for terrain rendering).
Abstract base class for material settings.
virtual void writeXml(QDomElement &element, const QgsReadWriteContext &) const
Writes settings to a DOM element.
virtual void readXml(const QDomElement &element, const QgsReadWriteContext &)
Reads settings from a DOM element.
A container for the context for various read/write operations on objects.
static QColor decodeColor(const QString &str)
static QString encodeColor(const QColor &color)
bool qgsDoubleNear(double a, double b, double epsilon=4 *std::numeric_limits< double >::epsilon())
Compare two doubles (but allow some difference).