QGIS API Documentation 4.1.0-Master (ca2ac17535b)
Loading...
Searching...
No Matches
qgsmetalroughmaterial.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsmetalroughmaterial.h
3 --------------------------------------
4 Date : December 2023
5 Copyright : (C) 2023 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 QGSMETALROUGHMATERIAL_H
17#define QGSMETALROUGHMATERIAL_H
18
19#include "qgis.h"
20#include "qgis_3d.h"
21#include "qgsmaterial.h"
22
23#include <QObject>
24
25#define SIP_NO_FILE
26
27// adapted from Qt's qmetalroughmaterial.h
28namespace Qt3DRender
29{
30
31 class QFilterKey;
32 class QEffect;
33 class QAbstractTexture;
34 class QTechnique;
35 class QParameter;
36 class QShaderProgram;
37 class QShaderProgramBuilder;
38 class QRenderPass;
39
40} // namespace Qt3DRender
41
43
49class _3D_EXPORT QgsMetalRoughMaterial : public QgsMaterial
50{
51 Q_OBJECT
52 public:
56 explicit QgsMetalRoughMaterial( Qt3DCore::QNode *parent = nullptr );
57 ~QgsMetalRoughMaterial() override;
58
59 public slots:
61 void setBaseColor( const QColor &baseColor );
62
68 void setBaseColorTexture( Qt3DRender::QAbstractTexture *baseColor );
69
71 void setMetalness( float metalness );
72
74 void setMetalnessTexture( Qt3DRender::QAbstractTexture *metalness );
75
77 void setRoughness( float roughness );
78
80 void setRoughnessTexture( Qt3DRender::QAbstractTexture *roughness );
81
83 void setAmbientOcclusionTexture( Qt3DRender::QAbstractTexture *ambientOcclusion );
84
86 void setNormalTexture( Qt3DRender::QAbstractTexture *normal );
87
89 void setHeightTexture( Qt3DRender::QAbstractTexture *height );
91 void setParallaxScale( double scale );
92
98 void setEmissionTexture( Qt3DRender::QAbstractTexture *emission );
99
103 void setEmissionColor( const QColor &color );
104
106 void setEmissionFactor( double factor );
107
113 void setInstancingEnabled( bool enabled, Qgis::InstancedMaterialFlags flags );
114
115 void setTextureScale( float textureScale );
116 void setTextureRotation( float textureRotation );
117 void setFlatShadingEnabled( bool enabled );
118
119 void setOpacity( float opacity );
120
126 void setDataDefinedEnabled( bool enabled );
127
133 void setEnvironmentalLightingEnabled( bool enabled );
134
135 private:
136 void init();
137
138 void updateShaders();
139
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;
170 Qgis::InstancedMaterialFlags mInstanceFlags;
171
172 bool mDataDefinedEnabled = false;
173 bool mEnableEnvironmentalLighting = false;
174
175 friend class TestQgsGltf3DUtils;
176};
177
179
180#endif // QGSMETALROUGHMATERIAL_H
QFlags< InstancedMaterialFlag > InstancedMaterialFlags
Definition qgis.h:4365
Base class for all materials used within QGIS 3D views.
Definition qgsmaterial.h:40