QGIS API Documentation 4.1.0-Master (659fe69c07c)
Loading...
Searching...
No Matches
qgsphongtexturedmaterial.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsphongtexturedmaterial.h
3 --------------------------------------
4 Date : August 2024
5 Copyright : (C) 2024 by Jean Felder
6 Email : jean dot felder at oslandia 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 QGSPHONGTEXTUREDMATERIAL_H
17#define QGSPHONGTEXTUREDMATERIAL_H
18
19#include "qgis.h"
20#include "qgis_3d.h"
21#include "qgsmaterial.h"
22
23#include <QColor>
24#include <QObject>
25#include <Qt3DRender/QTexture>
26
27#define SIP_NO_FILE
28
29class QMatrix4x4;
30
31
32namespace Qt3DRender
33{
34 class QParameter;
35 class QShaderProgram;
36 class QRenderPass;
37 class QFilterKey;
38} // namespace Qt3DRender
39
41
47class _3D_EXPORT QgsPhongTexturedMaterial : public QgsMaterial
48{
49 Q_OBJECT
50
51 public:
55 explicit QgsPhongTexturedMaterial( Qt3DCore::QNode *parent = nullptr );
56 ~QgsPhongTexturedMaterial() override;
57
64 void setInstancingEnabled( bool enabled, Qgis::InstancedMaterialFlags flags );
65
70 void setInstancingMeshTransform( const QMatrix4x4 &transform );
71
72 public slots:
74 void setAmbient( const QColor &ambient );
75
82 void setDiffuseTexture( Qt3DRender::QAbstractTexture *texture );
83
84 void setDiffuseTextureScale( float textureScale );
85 void setDiffuseTextureRotation( float textureRotation );
86 void setDiffuseTextureOffset( float textureOffsetX, float textureOffsetY );
88 void setSpecular( const QColor &specular );
89 void setShininess( float shininess );
90 void setOpacity( float opacity );
91
97 void setDataDefinedTextureTransformEnabled( bool enabled );
98
99 private:
100 void init();
101 void updateShaders();
102
103 Qt3DRender::QParameter *mAmbientParameter = nullptr;
104 Qt3DRender::QParameter *mDiffuseTextureParameter = nullptr;
105 Qt3DRender::QParameter *mDiffuseTextureScaleParameter = nullptr;
106 Qt3DRender::QParameter *mDiffuseTextureRotationParameter = nullptr;
107 Qt3DRender::QParameter *mDiffuseTextureOffsetParameter = nullptr;
108 Qt3DRender::QParameter *mSpecularParameter = nullptr;
109 Qt3DRender::QParameter *mShininessParameter = nullptr;
110 Qt3DRender::QParameter *mOpacityParameter = nullptr;
111
112 bool mInstanced = false;
113 Qgis::InstancedMaterialFlags mInstanceFlags;
114
115 Qt3DRender::QEffect *mEffect = nullptr;
116 Qt3DRender::QTechnique *mGL3Technique = nullptr;
117 Qt3DRender::QRenderPass *mGL3RenderPass = nullptr;
118 Qt3DRender::QShaderProgram *mShaderProgram = nullptr;
119 Qt3DRender::QFilterKey *mFilterKey = nullptr;
120 Qt3DRender::QParameter *mTransformParameter = nullptr;
121 Qt3DRender::QParameter *mNormalTransformParameter = nullptr;
122
123 bool mDataDefinedTextureTransformEnabled = false;
124};
125
127
128#endif // QGSPHONGTEXTUREDMATERIAL_H
QFlags< InstancedMaterialFlag > InstancedMaterialFlags
Definition qgis.h:4398
Base class for all materials used within QGIS 3D views.
Definition qgsmaterial.h:40