MNE-CPP 0.1.9
A Framework for Electrophysiology
Loading...
Searching...
No Matches
gpuinterpolationmaterial.cpp
Go to the documentation of this file.
1//=============================================================================================================
36//=============================================================================================================
37// INCLUDES
38//=============================================================================================================
39
41
42//=============================================================================================================
43// QT INCLUDES
44//=============================================================================================================
45
46#include <Qt3DRender/QEffect>
47#include <Qt3DRender/QParameter>
48#include <Qt3DRender/QRenderPass>
49#include <Qt3DRender/QFilterKey>
50#include <Qt3DRender/QTechnique>
51#include <Qt3DRender/QShaderProgram>
52#include <Qt3DRender/QGraphicsApiFilter>
53#include <QUrl>
54
55//=============================================================================================================
56// EIGEN INCLUDES
57//=============================================================================================================
58
59//=============================================================================================================
60// USED NAMESPACES
61//=============================================================================================================
62
63using namespace DISP3DLIB;
64using namespace Qt3DRender;
65
66//=============================================================================================================
67// DEFINE GLOBAL METHODS
68//=============================================================================================================
69
70//=============================================================================================================
71// DEFINE MEMBER METHODS
72//=============================================================================================================
73
74GpuInterpolationMaterial::GpuInterpolationMaterial(bool bUseSortPolicy, Qt3DCore::QNode *parent)
75 : AbstractPhongAlphaMaterial(bUseSortPolicy, parent)
76 , m_pComputeShader(new QShaderProgram)
77 , m_pComputeRenderPass(new QRenderPass)
78 , m_pComputeFilterKey(new QFilterKey)
79 , m_pComputeTechnique(new QTechnique)
80 , m_pDrawShader(new QShaderProgram)
81 , m_pDrawRenderPass(new QRenderPass)
82 , m_pDrawTechnique(new QTechnique)
83 , m_pSignalDataParameter(new QParameter)
84 , m_pColsParameter(new QParameter)
85 , m_pRowsParameter(new QParameter)
86 , m_pInterpolationMatParameter(new QParameter)
87 , m_pOutputColorParameter(new QParameter)
88 , m_pThresholdXParameter(new QParameter(QStringLiteral("fThresholdX"), 1e-10f))
89 , m_pThresholdZParameter(new QParameter(QStringLiteral("fThresholdZ"), 6e-6f))
90 , m_pColormapParameter(new QParameter(QStringLiteral("ColormapType"), 3))
91{
92 init();
94}
95
96//=============================================================================================================
97
99{
100 //Compute part
101 //Set OpenGL version
102 m_pComputeTechnique->graphicsApiFilter()->setApi(QGraphicsApiFilter::OpenGL);
103 m_pComputeTechnique->graphicsApiFilter()->setMajorVersion(4);
104 m_pComputeTechnique->graphicsApiFilter()->setMinorVersion(3);
105 m_pComputeTechnique->graphicsApiFilter()->setProfile(QGraphicsApiFilter::CoreProfile);
106
107 //Set filter Keys
108 m_pComputeFilterKey->setName(QStringLiteral("renderingStyle"));
109 m_pComputeFilterKey->setValue(QStringLiteral("compute"));
110
111 //Add to technique
114
115 //Set default Interpolation matrix parameters
116 m_pColsParameter->setName(QStringLiteral("cols"));
117 m_pColsParameter->setValue(1);
118 m_pRowsParameter->setName(QStringLiteral("rows"));
119 m_pRowsParameter->setValue(1);
120 m_pInterpolationMatParameter->setName(QStringLiteral("InterpolationMat"));
121
122 //Set default output
123 m_pOutputColorParameter->setName(QStringLiteral("OutputColor"));
124
125 //Set default input
126 m_pSignalDataParameter->setName(QStringLiteral("InputVec"));
127
128 //Add compute Parameter
134
135 //Add Threshold parameter
138
139 //Add ColormapType
141
142 //Draw part
143 //Add Phongalpha parameter
148
149 //Set OpenGL version
150 m_pDrawTechnique->graphicsApiFilter()->setApi(QGraphicsApiFilter::OpenGL);
151 m_pDrawTechnique->graphicsApiFilter()->setMajorVersion(4);
152 m_pDrawTechnique->graphicsApiFilter()->setMinorVersion(3);
153 m_pDrawTechnique->graphicsApiFilter()->setProfile(QGraphicsApiFilter::CoreProfile);
154
155 //Add to technique
156 m_pDrawTechnique->addFilterKey(m_pDrawFilterKey);
157 m_pDrawTechnique->addRenderPass(m_pDrawRenderPass);
158
159 //Effect
160 //Link shader and uniforms
161 m_pEffect->addTechnique(m_pComputeTechnique);
162 m_pEffect->addTechnique(m_pDrawTechnique);
163
164 //Add to material
165 this->setEffect(m_pEffect);
166}
167
168//=============================================================================================================
169
171{
172 m_pComputeShader->setComputeShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/engine/model/materials/shaders/compute/interpolation.csh"))));
173 m_pComputeRenderPass->setShaderProgram(m_pComputeShader);
174
175 m_pDrawShader->setVertexShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/engine/model/materials/shaders/compute/interpolation.vert"))));
176 m_pDrawShader->setFragmentShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/engine/model/materials/shaders/compute/interpolation.frag"))));
177 m_pDrawRenderPass->setShaderProgram(m_pDrawShader);
178}
179
180//=============================================================================================================
181
GpuInterpolationMaterial 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
QPointer< Qt3DRender::QParameter > m_pOutputColorParameter
QPointer< Qt3DRender::QRenderPass > m_pDrawRenderPass
QPointer< Qt3DRender::QShaderProgram > m_pComputeShader
QPointer< Qt3DRender::QRenderPass > m_pComputeRenderPass
QPointer< Qt3DRender::QParameter > m_pRowsParameter
QPointer< Qt3DRender::QTechnique > m_pComputeTechnique
QPointer< Qt3DRender::QParameter > m_pSignalDataParameter
QPointer< Qt3DRender::QShaderProgram > m_pDrawShader
GpuInterpolationMaterial(bool bUseSortPolicy=false, Qt3DCore::QNode *parent=nullptr)
QPointer< Qt3DRender::QParameter > m_pThresholdZParameter
QPointer< Qt3DRender::QParameter > m_pColormapParameter
QPointer< Qt3DRender::QTechnique > m_pDrawTechnique
QPointer< Qt3DRender::QParameter > m_pColsParameter
QPointer< Qt3DRender::QFilterKey > m_pComputeFilterKey
QPointer< Qt3DRender::QParameter > m_pThresholdXParameter
QPointer< Qt3DRender::QParameter > m_pInterpolationMatParameter