2022-06-08 12:47:24 +00:00
|
|
|
// Copyright (C) 2014 Klaralvdalens Datakonsult AB (KDAB).
|
2024-02-23 14:41:04 +00:00
|
|
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
|
2014-09-04 14:54:05 +00:00
|
|
|
|
2016-05-07 14:33:52 +00:00
|
|
|
#include "finaleffect.h"
|
2014-09-04 14:54:05 +00:00
|
|
|
|
2016-05-07 14:33:52 +00:00
|
|
|
#include <Qt3DRender/QGraphicsApiFilter>
|
|
|
|
#include <Qt3DRender/QShaderProgram>
|
|
|
|
#include <QUrl>
|
2014-09-04 14:54:05 +00:00
|
|
|
|
2016-06-02 12:28:56 +00:00
|
|
|
QT_BEGIN_NAMESPACE
|
|
|
|
|
2016-05-07 14:33:52 +00:00
|
|
|
FinalEffect::FinalEffect(Qt3DCore::QNode *parent)
|
|
|
|
: Qt3DRender::QEffect(parent)
|
|
|
|
, m_gl3Technique(new Qt3DRender::QTechnique())
|
|
|
|
, m_gl2Technique(new Qt3DRender::QTechnique())
|
|
|
|
, m_gl2Pass(new Qt3DRender::QRenderPass())
|
|
|
|
, m_gl3Pass(new Qt3DRender::QRenderPass())
|
|
|
|
, m_passCriterion(new Qt3DRender::QFilterKey(this))
|
2014-09-11 09:23:21 +00:00
|
|
|
{
|
2016-05-07 14:33:52 +00:00
|
|
|
m_gl3Technique->graphicsApiFilter()->setApi(Qt3DRender::QGraphicsApiFilter::OpenGL);
|
|
|
|
m_gl3Technique->graphicsApiFilter()->setMajorVersion(3);
|
|
|
|
m_gl3Technique->graphicsApiFilter()->setMinorVersion(1);
|
|
|
|
m_gl3Technique->graphicsApiFilter()->setProfile(Qt3DRender::QGraphicsApiFilter::CoreProfile);
|
2014-09-05 15:47:20 +00:00
|
|
|
|
2016-05-07 14:33:52 +00:00
|
|
|
m_gl2Technique->graphicsApiFilter()->setApi(Qt3DRender::QGraphicsApiFilter::OpenGL);
|
|
|
|
m_gl2Technique->graphicsApiFilter()->setMajorVersion(2);
|
|
|
|
m_gl2Technique->graphicsApiFilter()->setMinorVersion(0);
|
|
|
|
m_gl2Technique->graphicsApiFilter()->setProfile(Qt3DRender::QGraphicsApiFilter::NoProfile);
|
2014-09-04 14:54:05 +00:00
|
|
|
|
2016-05-07 14:33:52 +00:00
|
|
|
m_passCriterion->setName(QStringLiteral("pass"));
|
|
|
|
m_passCriterion->setValue(QStringLiteral("final"));
|
2014-09-04 14:54:05 +00:00
|
|
|
|
2016-05-07 14:33:52 +00:00
|
|
|
Qt3DRender::QShaderProgram *gl3Shader = new Qt3DRender::QShaderProgram();
|
|
|
|
gl3Shader->setVertexShaderCode(gl3Shader->loadSource(QUrl(QStringLiteral("qrc:/final_gl3.vert"))));
|
|
|
|
gl3Shader->setFragmentShaderCode(gl3Shader->loadSource(QUrl(QStringLiteral("qrc:/final_gl3.frag"))));
|
2014-09-05 15:47:20 +00:00
|
|
|
|
2016-05-07 14:33:52 +00:00
|
|
|
m_gl3Pass->addFilterKey(m_passCriterion);
|
|
|
|
m_gl3Pass->setShaderProgram(gl3Shader);
|
|
|
|
m_gl3Technique->addRenderPass(m_gl3Pass);
|
2014-09-05 15:47:20 +00:00
|
|
|
|
2016-05-07 14:33:52 +00:00
|
|
|
Qt3DRender::QShaderProgram *gl2Shader = new Qt3DRender::QShaderProgram();
|
|
|
|
gl2Shader->setVertexShaderCode(gl2Shader->loadSource(QUrl(QStringLiteral("qrc:/final_gl2.vert"))));
|
|
|
|
gl2Shader->setFragmentShaderCode(gl2Shader->loadSource(QUrl(QStringLiteral("qrc:/final_gl2.frag"))));
|
|
|
|
|
|
|
|
m_gl2Pass->addFilterKey(m_passCriterion);
|
|
|
|
m_gl2Pass->setShaderProgram(gl2Shader);
|
|
|
|
m_gl2Technique->addRenderPass(m_gl2Pass);
|
|
|
|
|
|
|
|
addTechnique(m_gl3Technique);
|
|
|
|
addTechnique(m_gl2Technique);
|
2014-09-11 09:23:21 +00:00
|
|
|
}
|
2014-09-05 15:47:20 +00:00
|
|
|
|
2016-05-07 14:33:52 +00:00
|
|
|
QList<Qt3DRender::QFilterKey *> FinalEffect::passCriteria() const
|
2014-09-11 09:23:21 +00:00
|
|
|
{
|
2020-07-08 12:17:04 +00:00
|
|
|
return { m_passCriterion };
|
2014-09-04 14:54:05 +00:00
|
|
|
}
|
2016-06-02 12:28:56 +00:00
|
|
|
|
|
|
|
QT_END_NAMESPACE
|