16#ifndef QGSMETALROUGHMATERIAL_H
17#define QGSMETALROUGHMATERIAL_H
36 class QAbstractTexture;
40 class QShaderProgramBuilder;
52class _3D_EXPORT QgsMetalRoughMaterial :
public QgsMaterial
59 explicit QgsMetalRoughMaterial( Qt3DCore::QNode *parent =
nullptr );
60 ~QgsMetalRoughMaterial()
override;
64 void setBaseColor(
const QColor &baseColor );
71 void setBaseColorTexture( Qt3DRender::QAbstractTexture *baseColor );
74 void setMetalness(
float metalness );
77 void setMetalnessTexture( Qt3DRender::QAbstractTexture *metalness );
80 void setRoughness(
float roughness );
83 void setRoughnessTexture( Qt3DRender::QAbstractTexture *roughness );
86 void setReflectance(
float reflectance );
89 void setAnisotropy(
float anisotropy );
92 void setAnisotropyRotation(
float rotation );
95 void setAmbientOcclusionTexture( Qt3DRender::QAbstractTexture *ambientOcclusion );
98 void setNormalTexture( Qt3DRender::QAbstractTexture *normal );
101 void setHeightTexture( Qt3DRender::QAbstractTexture *height );
103 void setParallaxScale(
double scale );
110 void setEmissionTexture( Qt3DRender::QAbstractTexture *emission );
115 void setEmissionColor(
const QColor &color );
118 void setEmissionFactor(
double factor );
121 void setClearCoatFactor(
float factor );
124 void setClearCoatRoughness(
float roughness );
137 void setInstancingMeshTransform(
const QMatrix4x4 &transform );
139 void setTextureScale(
float textureScale );
140 void setTextureRotation(
float textureRotation );
141 void setTextureOffset(
float textureOffsetX,
float textureOffsetY );
142 void setFlatShadingEnabled(
bool enabled );
144 void setOpacity(
float opacity );
151 void setDataDefinedEnabled(
bool enabled );
158 void setDataDefinedTextureTransformEnabled(
bool enabled );
165 void setEnvironmentalLightingEnabled(
bool enabled );
170 void updateShaders();
172 Qt3DRender::QParameter *mBaseColorParameter =
nullptr;
173 Qt3DRender::QParameter *mMetalnessParameter =
nullptr;
174 Qt3DRender::QParameter *mRoughnessParameter =
nullptr;
175 Qt3DRender::QParameter *mReflectanceParameter =
nullptr;
176 Qt3DRender::QParameter *mAnisotropyParameter =
nullptr;
177 Qt3DRender::QParameter *mAnisotropyRotationParameter =
nullptr;
178 Qt3DRender::QParameter *mBaseColorMapParameter =
nullptr;
179 Qt3DRender::QParameter *mMetalnessMapParameter =
nullptr;
180 Qt3DRender::QParameter *mRoughnessMapParameter =
nullptr;
181 Qt3DRender::QParameter *mAmbientOcclusionMapParameter =
nullptr;
182 Qt3DRender::QParameter *mNormalMapParameter =
nullptr;
183 Qt3DRender::QParameter *mHeightMapParameter =
nullptr;
184 Qt3DRender::QParameter *mParallaxScaleParameter =
nullptr;
185 Qt3DRender::QParameter *mEmissionMapParameter =
nullptr;
186 Qt3DRender::QParameter *mEmissiveColorParameter =
nullptr;
187 Qt3DRender::QParameter *mEmissionFactorParameter =
nullptr;
188 Qt3DRender::QParameter *mClearCoatFactorParameter =
nullptr;
189 Qt3DRender::QParameter *mClearCoatRoughnessParameter =
nullptr;
190 Qt3DRender::QParameter *mTextureScaleParameter =
nullptr;
191 Qt3DRender::QParameter *mTextureRotationParameter =
nullptr;
192 Qt3DRender::QParameter *mTextureOffsetParameter =
nullptr;
193 Qt3DRender::QParameter *mOpacityParameter =
nullptr;
194 Qt3DRender::QEffect *mMetalRoughEffect =
nullptr;
195 Qt3DRender::QTechnique *mMetalRoughGL3Technique =
nullptr;
196 Qt3DRender::QRenderPass *mMetalRoughGL3RenderPass =
nullptr;
197 Qt3DRender::QShaderProgram *mMetalRoughGL3Shader =
nullptr;
198 Qt3DRender::QFilterKey *mFilterKey =
nullptr;
199 bool mUsingBaseColorMap =
false;
200 bool mUsingMetalnessMap =
false;
201 bool mUsingRoughnessMap =
false;
202 bool mUsingAmbientOcclusionMap =
false;
203 bool mUsingNormalMap =
false;
204 bool mUsingHeightMap =
false;
205 bool mUsingEmissionMap =
false;
206 bool mFlatShading =
false;
207 bool mInstanced =
false;
209 Qt3DRender::QParameter *mTransformParameter =
nullptr;
210 Qt3DRender::QParameter *mNormalTransformParameter =
nullptr;
212 bool mDataDefinedEnabled =
false;
213 bool mDataDefinedTextureTransformEnabled =
false;
214 bool mEnableEnvironmentalLighting =
false;
216 friend class TestQgsGltf3DUtils;
QFlags< InstancedMaterialFlag > InstancedMaterialFlags
Base class for all materials used within QGIS 3D views.