MNE-CPP 0.1.9
A Framework for Electrophysiology
Loading...
Searching...
No Matches
pervertextessphongalphamaterial.cpp
Go to the documentation of this file.
1//=============================================================================================================
35//=============================================================================================================
36// INCLUDES
37//=============================================================================================================
38
40
41//=============================================================================================================
42// QT INCLUDES
43//=============================================================================================================
44
45#include <Qt3DRender/qeffect.h>
46#include <Qt3DRender/qtechnique.h>
47#include <Qt3DRender/qshaderprogram.h>
48#include <Qt3DRender/qparameter.h>
49#include <Qt3DRender/qrenderpass.h>
50#include <Qt3DRender/qgraphicsapifilter.h>
51
52#include <QUrl>
53
54//=============================================================================================================
55// USED NAMESPACES
56//=============================================================================================================
57
58using namespace DISP3DLIB;
59using namespace Qt3DRender;
60
61//=============================================================================================================
62// DEFINE MEMBER METHODS
63//=============================================================================================================
64
66: AbstractPhongAlphaMaterial(bUseSortPolicy, parent)
67, m_pInnerTessParameter(new QParameter("innerTess", 1.0f))
68, m_pOuterTessParameter(new QParameter("outerTess", 1.0f))
69, m_pTriangleScaleParameter(new QParameter("triangleScale", 1.0f))
70, m_pVertexGL4Technique(new QTechnique())
71, m_pVertexGL4RenderPass(new QRenderPass())
72, m_pVertexGL4Shader(new QShaderProgram())
73{
74 init();
75 setShaderCode();
76}
77
78//=============================================================================================================
79
80void PerVertexTessPhongAlphaMaterial::init()
81{
82 //Set OpenGL version - This material can only be used with opengl 4.0 or higher since it is using tesselation
83 m_pVertexGL4Technique->graphicsApiFilter()->setApi(QGraphicsApiFilter::OpenGL);
84 m_pVertexGL4Technique->graphicsApiFilter()->setMajorVersion(4);
85 m_pVertexGL4Technique->graphicsApiFilter()->setMinorVersion(0);
86 m_pVertexGL4Technique->graphicsApiFilter()->setProfile(QGraphicsApiFilter::CoreProfile);
87
88 m_pVertexGL4Technique->addFilterKey(m_pDrawFilterKey);
89
90 m_pVertexGL4Technique->addRenderPass(m_pVertexGL4RenderPass);
91
92 m_pEffect->addTechnique(m_pVertexGL4Technique);
93
94 m_pEffect->addParameter(m_pDiffuseParameter);
95 m_pEffect->addParameter(m_pSpecularParameter);
96 m_pEffect->addParameter(m_pShininessParameter);
97 m_pEffect->addParameter(m_pAlphaParameter);
98 m_pEffect->addParameter(m_pInnerTessParameter);
99 m_pEffect->addParameter(m_pOuterTessParameter);
100 m_pEffect->addParameter(m_pTriangleScaleParameter);
101
102 this->setEffect(m_pEffect);
103}
104
105//=============================================================================================================
106
107void PerVertexTessPhongAlphaMaterial::setShaderCode()
108{
109 m_pVertexGL4Shader->setVertexShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/engine/model/materials/shaders/gl4/pervertextessphongalpha.vert"))));
110 m_pVertexGL4Shader->setTessellationControlShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/engine/model/materials/shaders/gl4/pervertextessphongalpha.tcs"))));
111 //m_pVertexGL4Shader->setTessellationEvaluationShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/engine/model/materials/shaders/gl4/pervertextessphongalpha_simple.tes"))));
112 m_pVertexGL4Shader->setTessellationEvaluationShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/engine/model/materials/shaders/gl4/pervertextessphongalpha_pn_triangles.tes"))));
113 m_pVertexGL4Shader->setGeometryShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/engine/model/materials/shaders/gl4/pervertextessphongalpha.geom"))));
114 m_pVertexGL4Shader->setFragmentShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/engine/model/materials/shaders/gl4/pervertextessphongalpha.frag"))));
115
116 m_pVertexGL4RenderPass->setShaderProgram(m_pVertexGL4Shader);
117}
118
119//=============================================================================================================
PerVertexTessPhongAlphaMaterial class declaration.
This abstract class is used as a base class for all materials that are using the phong alpha lightini...
QPointer< Qt3DRender::QParameter > m_pShininessParameter
QPointer< Qt3DRender::QParameter > m_pSpecularParameter
QPointer< Qt3DRender::QParameter > m_pAlphaParameter
QPointer< Qt3DRender::QFilterKey > m_pDrawFilterKey
QPointer< Qt3DRender::QParameter > m_pDiffuseParameter
PerVertexTessPhongAlphaMaterial(bool bUseSortPolicy=false, Qt3DCore::QNode *parent=nullptr)