QGIS API Documentation 4.1.0-Master (31622b25bb0)
Loading...
Searching...
No Matches
qgsmetalroughtexturedmaterialsettings.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsmetalroughtexturedmaterialsettings.h
3 --------------------------------------
4 Date : April 2026
5 Copyright : (C) 2026 by Nyall Dawson
6 Email : nyall dot dawson at gmail dot com
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
16#ifndef QGSMETALROUGHTEXTUREDMATERIALSETTINGS_H
17#define QGSMETALROUGHTEXTUREDMATERIALSETTINGS_H
18
19#include "qgis_core.h"
21
22#include <QColor>
23
24class QDomElement;
25
36{
37 public:
39
40 QString type() const override;
41
46
51
53 bool equals( const QgsAbstractMaterialSettings *other ) const override;
54
60 QString baseColorTexturePath() const { return mBaseColorTexturePath; }
61
67 QString metalnessTexturePath() const { return mMetalnessTexturePath; }
68
74 QString roughnessTexturePath() const { return mRoughnessTexturePath; }
75
81 QString normalTexturePath() const { return mNormalTexturePath; }
82
88 QString heightTexturePath() const { return mHeightTexturePath; }
89
96 double parallaxScale() const { return mParallaxScale; }
97
104 QString emissionTexturePath() const { return mEmissionTexturePath; }
105
115 double emissionFactor() const { return mEmissionFactor; }
116
122 QString ambientOcclusionTexturePath() const { return mAmbientOcclusionTexturePath; }
123
132 double textureScale() const { return mTextureScale; }
133
139 double textureRotation() const { return mTextureRotation; }
140
147 double opacity() const { return mOpacity; }
148
154 void setBaseColorTexturePath( const QString &path ) { mBaseColorTexturePath = path; }
155
161 void setMetalnessTexturePath( const QString &path ) { mMetalnessTexturePath = path; }
162
168 void setRoughnessTexturePath( const QString &path ) { mRoughnessTexturePath = path; }
169
175 void setNormalTexturePath( const QString &path ) { mNormalTexturePath = path; }
176
182 void setHeightTexturePath( const QString &path ) { mHeightTexturePath = path; }
183
190 void setParallaxScale( double scale ) { mParallaxScale = scale; }
191
197 void setAmbientOcclusionTexturePath( const QString &path ) { mAmbientOcclusionTexturePath = path; }
198
205 void setEmissionTexturePath( const QString &path ) { mEmissionTexturePath = path; }
206
216 void setEmissionFactor( double factor ) { mEmissionFactor = factor; }
217
226 void setTextureScale( double scale ) { mTextureScale = scale; }
227
233 void setTextureRotation( double rotation ) { mTextureRotation = rotation; }
234
241 void setOpacity( double opacity ) { mOpacity = opacity; }
242
243 bool requiresTextureCoordinates() const override;
244 bool requiresTangents() const override;
245 void readXml( const QDomElement &elem, const QgsReadWriteContext &context ) override;
246 void writeXml( QDomElement &elem, const QgsReadWriteContext &context ) const override;
247
256 QColor averageColor() const override;
257
268 void setColorsFromBase( const QColor &baseColor ) override;
269
271 {
272 return mBaseColorTexturePath == other.mBaseColorTexturePath
273 && mMetalnessTexturePath == other.mMetalnessTexturePath
274 && mRoughnessTexturePath == other.mRoughnessTexturePath
275 && mNormalTexturePath == other.mNormalTexturePath
276 && mAmbientOcclusionTexturePath == other.mAmbientOcclusionTexturePath
277 && mHeightTexturePath == other.mHeightTexturePath
278 && mEmissionTexturePath == other.mEmissionTexturePath
279 && qgsDoubleNear( mTextureScale, other.mTextureScale )
280 && qgsDoubleNear( mTextureRotation, other.mTextureRotation )
281 && qgsDoubleNear( mEmissionFactor, other.mEmissionFactor )
282 && qgsDoubleNear( mParallaxScale, other.mParallaxScale )
283 && qgsDoubleNear( mOpacity, other.mOpacity )
285 }
286
287 private:
288 QColor textureAverageColor( const QString &texturePath ) const;
289
290 private:
291 QString mBaseColorTexturePath;
292 QString mMetalnessTexturePath;
293 QString mRoughnessTexturePath;
294 QString mNormalTexturePath;
295 QString mHeightTexturePath;
296 double mParallaxScale { 0.1 };
297
298 QString mAmbientOcclusionTexturePath;
299
300 QString mEmissionTexturePath;
301 double mEmissionFactor { 1.0 };
302
303 double mTextureScale { 1.0 };
304 double mTextureRotation { 0.0 };
305 double mOpacity { 1.0 };
306
307 mutable std::optional<QColor> mAverageColor;
308};
309
310
311#endif // QGSMETALROUGHTEXTUREDMATERIALSETTINGS_H
MaterialRenderingTechnique
Material rendering techniques.
Definition qgis.h:4342
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.
virtual bool requiresTangents() const
Returns true if the material requires tangents generated during triangulation.
virtual QColor averageColor() const =0
Returns an approximate color representing the blended material color.
virtual QString type() const =0
Returns the unique type name for the material.
virtual void setColorsFromBase(const QColor &baseColor)=0
Decomposes a base color into the material's color components, and sets the material's colors accordin...
QgsPropertyCollection dataDefinedProperties() const
Returns the symbol material property collection, used for data defined overrides.
virtual bool requiresTextureCoordinates() const
Returns true if the material requires texture coordinates to be generated during triangulation.
double emissionFactor() const
Returns the emission factor, which dictates the strength of the emission effect.
void setTextureScale(double scale)
Sets the texture scale.
QgsMetalRoughTexturedMaterialSettings * clone() const override
Clones the material settings.
static QgsAbstractMaterialSettings * create()
Returns a new instance of QgsMetalRoughTexturedMaterialSettings.
QString roughnessTexturePath() const
Returns the path to the roughness texture map.
double textureRotation() const
Returns the texture rotation, in degrees.
double textureScale() const
Returns the texture scale.
double opacity() const
Returns the opacity of the surface.
void setTextureRotation(double rotation)
Sets the texture rotation, in degrees.
void setMetalnessTexturePath(const QString &path)
Sets the path to the metalness texture map.
void setEmissionTexturePath(const QString &path)
Sets the path to the emission/luminosity texture map.
QString normalTexturePath() const
Returns the path to the normal texture map.
QString ambientOcclusionTexturePath() const
Returns the path to the ambient occlusion texture map.
void setHeightTexturePath(const QString &path)
Sets the path to the height texture map.
void setAmbientOcclusionTexturePath(const QString &path)
Sets the path to the ambient occlusion texture map.
QString metalnessTexturePath() const
Returns the path to the metalness texture map.
void setNormalTexturePath(const QString &path)
Sets the path to the normal texture map.
bool equals(const QgsAbstractMaterialSettings *other) const override
Returns true if this settings exactly matches an other settings.
QString baseColorTexturePath() const
Returns the path to the base color texture map.
void setEmissionFactor(double factor)
Sets the emission factor, which dictates the strength of the emission effect.
static bool supportsTechnique(Qgis::MaterialRenderingTechnique technique)
Returns true if the specified technique is supported by the metal rough material.
QString heightTexturePath() const
Returns the path to the height texture map.
QString emissionTexturePath() const
Returns the path to the emission/luminosity texture map.
void setBaseColorTexturePath(const QString &path)
Sets the path to the base color texture map.
void setOpacity(double opacity)
Sets the opacity of the surface.
bool operator==(const QgsMetalRoughTexturedMaterialSettings &other) const
void setRoughnessTexturePath(const QString &path)
Sets the path to the roughness texture map.
void setParallaxScale(double scale)
Sets the parallax scale, which dictates the strength of the height displacement effect.
double parallaxScale() const
Returns the parallax scale, which dictates the strength of the height displacement effect.
A container for the context for various read/write operations on objects.
bool qgsDoubleNear(double a, double b, double epsilon=4 *std::numeric_limits< double >::epsilon())
Compare two doubles (but allow some difference).
Definition qgis.h:7222
#define SIP_FACTORY
Definition qgis_sip.h:83