16#ifndef QGSMETALROUGHMATERIAL_H
17#define QGSMETALROUGHMATERIAL_H
33 class QAbstractTexture;
37 class QShaderProgramBuilder;
49class _3D_EXPORT QgsMetalRoughMaterial :
public QgsMaterial
56 explicit QgsMetalRoughMaterial( Qt3DCore::QNode *parent =
nullptr );
57 ~QgsMetalRoughMaterial()
override;
61 void setBaseColor(
const QColor &baseColor );
68 void setBaseColorTexture( Qt3DRender::QAbstractTexture *baseColor );
71 void setMetalness(
float metalness );
74 void setMetalnessTexture( Qt3DRender::QAbstractTexture *metalness );
77 void setRoughness(
float roughness );
80 void setRoughnessTexture( Qt3DRender::QAbstractTexture *roughness );
83 void setAmbientOcclusionTexture( Qt3DRender::QAbstractTexture *ambientOcclusion );
86 void setNormalTexture( Qt3DRender::QAbstractTexture *normal );
89 void setHeightTexture( Qt3DRender::QAbstractTexture *height );
91 void setParallaxScale(
double scale );
98 void setEmissionTexture( Qt3DRender::QAbstractTexture *emission );
103 void setEmissionColor(
const QColor &color );
106 void setEmissionFactor(
double factor );
115 void setTextureScale(
float textureScale );
116 void setTextureRotation(
float textureRotation );
117 void setFlatShadingEnabled(
bool enabled );
119 void setOpacity(
float opacity );
126 void setDataDefinedEnabled(
bool enabled );
133 void setEnvironmentalLightingEnabled(
bool enabled );
138 void updateShaders();
140 Qt3DRender::QParameter *mBaseColorParameter =
nullptr;
141 Qt3DRender::QParameter *mMetalnessParameter =
nullptr;
142 Qt3DRender::QParameter *mRoughnessParameter =
nullptr;
143 Qt3DRender::QParameter *mBaseColorMapParameter =
nullptr;
144 Qt3DRender::QParameter *mMetalnessMapParameter =
nullptr;
145 Qt3DRender::QParameter *mRoughnessMapParameter =
nullptr;
146 Qt3DRender::QParameter *mAmbientOcclusionMapParameter =
nullptr;
147 Qt3DRender::QParameter *mNormalMapParameter =
nullptr;
148 Qt3DRender::QParameter *mHeightMapParameter =
nullptr;
149 Qt3DRender::QParameter *mParallaxScaleParameter =
nullptr;
150 Qt3DRender::QParameter *mEmissionMapParameter =
nullptr;
151 Qt3DRender::QParameter *mEmissiveColorParameter =
nullptr;
152 Qt3DRender::QParameter *mEmissionFactorParameter =
nullptr;
153 Qt3DRender::QParameter *mTextureScaleParameter =
nullptr;
154 Qt3DRender::QParameter *mTextureRotationParameter =
nullptr;
155 Qt3DRender::QParameter *mOpacityParameter =
nullptr;
156 Qt3DRender::QEffect *mMetalRoughEffect =
nullptr;
157 Qt3DRender::QTechnique *mMetalRoughGL3Technique =
nullptr;
158 Qt3DRender::QRenderPass *mMetalRoughGL3RenderPass =
nullptr;
159 Qt3DRender::QShaderProgram *mMetalRoughGL3Shader =
nullptr;
160 Qt3DRender::QFilterKey *mFilterKey =
nullptr;
161 bool mUsingBaseColorMap =
false;
162 bool mUsingMetalnessMap =
false;
163 bool mUsingRoughnessMap =
false;
164 bool mUsingAmbientOcclusionMap =
false;
165 bool mUsingNormalMap =
false;
166 bool mUsingHeightMap =
false;
167 bool mUsingEmissionMap =
false;
168 bool mFlatShading =
false;
169 bool mInstanced =
false;
172 bool mDataDefinedEnabled =
false;
173 bool mEnableEnvironmentalLighting =
false;
175 friend class TestQgsGltf3DUtils;
QFlags< InstancedMaterialFlag > InstancedMaterialFlags
Base class for all materials used within QGIS 3D views.