MNE-CPP  0.1.9
A Framework for Electrophysiology
geometrymultipliermaterial.cpp
Go to the documentation of this file.
1 //=============================================================================================================
36 //=============================================================================================================
37 // INCLUDES
38 //=============================================================================================================
39 
41 
42 //=============================================================================================================
43 // QT INCLUDES
44 //=============================================================================================================
45 
46 #include <QUrl>
47 #include <QColor>
48 #include <Qt3DRender/QEffect>
49 #include <Qt3DRender/qshaderprogram.h>
50 #include <Qt3DRender/qparameter.h>
51 #include <QFilterKey>
52 
53 //=============================================================================================================
54 // EIGEN INCLUDES
55 //=============================================================================================================
56 
57 //=============================================================================================================
58 // USED NAMESPACES
59 //=============================================================================================================
60 
61 using namespace DISP3DLIB;
62 using namespace Qt3DRender;
63 
64 //=============================================================================================================
65 // DEFINE GLOBAL METHODS
66 //=============================================================================================================
67 
68 //=============================================================================================================
69 // DEFINE MEMBER METHODS
70 //=============================================================================================================
71 
72 GeometryMultiplierMaterial::GeometryMultiplierMaterial(bool bUseSortPolicy, Qt3DCore::QNode *parent)
73 : AbstractPhongAlphaMaterial(bUseSortPolicy, parent)
74 , m_pAmbientColor(new QParameter(QStringLiteral("ka"), QColor::fromRgbF(0.2f, 0.2f, 0.2f, 1.0f)))
75 , m_pVertexGL3Shader(new QShaderProgram())
76 , m_pVertexES2Shader(new QShaderProgram())
77 {
78  init();
79  setShaderCode();
80  m_pEffect->addParameter(m_pAmbientColor);
81 }
82 
83 //=============================================================================================================
84 
85 void GeometryMultiplierMaterial::setShaderCode()
86 {
87  m_pVertexGL3Shader->setVertexShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/engine/model/materials/shaders/gl3/instancedposition.vert"))));
88  m_pVertexGL3Shader->setFragmentShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/engine/model/materials/shaders/gl3/instancedposition.frag"))));
89 
90  m_pVertexES2Shader->setVertexShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/engine/model/materials/shaders/es2/instancedposition.vert"))));
91  m_pVertexES2Shader->setFragmentShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/engine/model/materials/shaders/es2/instancedposition.frag"))));
92 
93  addShaderToRenderPass(QStringLiteral("pVertexGL3RenderPass"), m_pVertexGL3Shader);
94  addShaderToRenderPass(QStringLiteral("pVertexGL2RenderPass"), m_pVertexES2Shader);
95  addShaderToRenderPass(QStringLiteral("pVertexES2RenderPass"), m_pVertexES2Shader);
96 }
97 
98 //=============================================================================================================
99 
100 void GeometryMultiplierMaterial::setAmbient(const QColor &tColor)
101 {
102  m_pAmbientColor->setValue(tColor);
103 }
104 
105 //=============================================================================================================
106 
GeometryMultiplierMaterial(bool bUseSortPolicy=false, Qt3DCore::QNode *parent=nullptr)
virtual void addShaderToRenderPass(const QString &sObjectName, Qt3DRender::QShaderProgram *pShaderProgramm)
GeometryMultiplierMaterial class declaration.
This abstract class is used as a base class for all materials that are using the phong alpha lightini...