16#ifndef QGSMETALROUGHMATERIAL_H
17#define QGSMETALROUGHMATERIAL_H
32 class QAbstractTexture;
36 class QShaderProgramBuilder;
48class _3D_EXPORT QgsMetalRoughMaterial :
public QgsMaterial
55 explicit QgsMetalRoughMaterial( Qt3DCore::QNode *parent =
nullptr );
56 ~QgsMetalRoughMaterial()
override;
60 void setBaseColor(
const QColor &baseColor );
67 void setBaseColorTexture( Qt3DRender::QAbstractTexture *baseColor );
70 void setMetalness(
float metalness );
73 void setMetalnessTexture( Qt3DRender::QAbstractTexture *metalness );
76 void setRoughness(
float roughness );
79 void setRoughnessTexture( Qt3DRender::QAbstractTexture *roughness );
82 void setAmbientOcclusionTexture( Qt3DRender::QAbstractTexture *ambientOcclusion );
85 void setNormalTexture( Qt3DRender::QAbstractTexture *normal );
88 void setHeightTexture( Qt3DRender::QAbstractTexture *height );
90 void setParallaxScale(
double scale );
97 void setEmissionTexture( Qt3DRender::QAbstractTexture *emission );
102 void setEmissionColor(
const QColor &color );
105 void setEmissionFactor(
double factor );
111 void setInstancingEnabled(
bool enabled );
113 void setTextureScale(
float textureScale );
114 void setTextureRotation(
float textureRotation );
115 void setFlatShadingEnabled(
bool enabled );
117 void setOpacity(
float opacity );
122 void updateFragmentShader();
124 Qt3DRender::QParameter *mBaseColorParameter =
nullptr;
125 Qt3DRender::QParameter *mMetalnessParameter =
nullptr;
126 Qt3DRender::QParameter *mRoughnessParameter =
nullptr;
127 Qt3DRender::QParameter *mBaseColorMapParameter =
nullptr;
128 Qt3DRender::QParameter *mMetalnessMapParameter =
nullptr;
129 Qt3DRender::QParameter *mRoughnessMapParameter =
nullptr;
130 Qt3DRender::QParameter *mAmbientOcclusionMapParameter =
nullptr;
131 Qt3DRender::QParameter *mNormalMapParameter =
nullptr;
132 Qt3DRender::QParameter *mHeightMapParameter =
nullptr;
133 Qt3DRender::QParameter *mParallaxScaleParameter =
nullptr;
134 Qt3DRender::QParameter *mEmissionMapParameter =
nullptr;
135 Qt3DRender::QParameter *mEmissiveColorParameter =
nullptr;
136 Qt3DRender::QParameter *mEmissionFactorParameter =
nullptr;
137 Qt3DRender::QParameter *mTextureScaleParameter =
nullptr;
138 Qt3DRender::QParameter *mTextureRotationParameter =
nullptr;
139 Qt3DRender::QParameter *mOpacityParameter =
nullptr;
140 Qt3DRender::QEffect *mMetalRoughEffect =
nullptr;
141 Qt3DRender::QTechnique *mMetalRoughGL3Technique =
nullptr;
142 Qt3DRender::QRenderPass *mMetalRoughGL3RenderPass =
nullptr;
143 Qt3DRender::QShaderProgram *mMetalRoughGL3Shader =
nullptr;
144 Qt3DRender::QFilterKey *mFilterKey =
nullptr;
145 bool mUsingBaseColorMap =
false;
146 bool mUsingMetalnessMap =
false;
147 bool mUsingRoughnessMap =
false;
148 bool mUsingAmbientOcclusionMap =
false;
149 bool mUsingNormalMap =
false;
150 bool mUsingHeightMap =
false;
151 bool mUsingEmissionMap =
false;
152 bool mFlatShading =
false;
153 bool mInstancingEnabled =
false;
155 friend class TestQgsGltf3DUtils;
Base class for all materials used within QGIS 3D views.