QGIS API Documentation 4.1.0-Master (9af12b5a203)
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_3d.h"
20#include "qgsmaterial.h"
21
22#include <QObject>
23
24#define SIP_NO_FILE
25
26// adapted from Qt's qmetalroughmaterial.h
27namespace Qt3DRender
28{
29
30 class QFilterKey;
31 class QEffect;
32 class QAbstractTexture;
33 class QTechnique;
34 class QParameter;
35 class QShaderProgram;
36 class QShaderProgramBuilder;
37 class QRenderPass;
38
39} // namespace Qt3DRender
40
42
48class _3D_EXPORT QgsMetalRoughMaterial : public QgsMaterial
49{
50 Q_OBJECT
51 public:
55 explicit QgsMetalRoughMaterial( Qt3DCore::QNode *parent = nullptr );
56 ~QgsMetalRoughMaterial() override;
57
58 public slots:
60 void setBaseColor( const QColor &baseColor );
61
67 void setBaseColorTexture( Qt3DRender::QAbstractTexture *baseColor );
68
70 void setMetalness( float metalness );
71
73 void setMetalnessTexture( Qt3DRender::QAbstractTexture *metalness );
74
76 void setRoughness( float roughness );
77
79 void setRoughnessTexture( Qt3DRender::QAbstractTexture *roughness );
80
82 void setAmbientOcclusionTexture( Qt3DRender::QAbstractTexture *ambientOcclusion );
83
85 void setNormalTexture( Qt3DRender::QAbstractTexture *normal );
86
88 void setHeightTexture( Qt3DRender::QAbstractTexture *height );
90 void setParallaxScale( double scale );
91
97 void setEmissionTexture( Qt3DRender::QAbstractTexture *emission );
98
102 void setEmissionColor( const QColor &color );
103
105 void setEmissionFactor( double factor );
106
111 void setInstancingEnabled( bool enabled );
112
113 void setTextureScale( float textureScale );
114 void setTextureRotation( float textureRotation );
115 void setFlatShadingEnabled( bool enabled );
116
117 void setOpacity( float opacity );
118
119 private:
120 void init();
121
122 void updateFragmentShader();
123
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;
154
155 friend class TestQgsGltf3DUtils;
156};
157
159
160#endif // QGSMETALROUGHMATERIAL_H
Base class for all materials used within QGIS 3D views.
Definition qgsmaterial.h:40