diff options
author | Sean Harmer <sean.harmer@kdab.com> | 2017-08-19 15:53:30 +0100 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2017-08-19 16:28:52 +0100 |
commit | 8f863343a9e2e2f3630f22407f4e5e30e72745cf (patch) | |
tree | 5574e3c2215d74345e15df5f45ed3211e065541a /src/render/renderstates/renderstates.cpp | |
parent | 3edb85002b848033bbeefa33001d19fb514ef489 (diff) | |
parent | 9d8c9ada161ad97634992c444196add0abb4f9d1 (diff) |
Merge branch '5.9' into dev
Conflicts:
src/render/backend/renderer.cpp
src/render/backend/renderview.cpp
src/render/graphicshelpers/graphicscontext_p.h
src/render/graphicshelpers/graphicshelperes2_p.h
src/render/graphicshelpers/graphicshelpergl2_p.h
src/render/graphicshelpers/graphicshelpergl3_2_p.h
src/render/graphicshelpers/graphicshelpergl3_3_p.h
src/render/graphicshelpers/graphicshelpergl4_p.h
src/render/graphicshelpers/graphicshelperinterface_p.h
src/render/jobs/pickboundingvolumejob.cpp
tests/auto/animation/clipanimator/tst_clipanimator.cpp
tests/auto/auto.pro
tests/manual/manual.pro
Also disabled the QQmlMetaType codepaths following commit
49a11e882059ee1729f776722e085dd21d378c36 in qtdeclarative. The
QQmlMetaType codepaths will be re-enabled once a qt5.git
integration has succeeded.
Change-Id: Ia654d75425e6d406c472d19864383612208cad2b
Diffstat (limited to 'src/render/renderstates/renderstates.cpp')
-rw-r--r-- | src/render/renderstates/renderstates.cpp | 59 |
1 files changed, 48 insertions, 11 deletions
diff --git a/src/render/renderstates/renderstates.cpp b/src/render/renderstates/renderstates.cpp index d94191a13..d5e12aeab 100644 --- a/src/render/renderstates/renderstates.cpp +++ b/src/render/renderstates/renderstates.cpp @@ -43,8 +43,11 @@ #include <Qt3DCore/qpropertyupdatedchange.h> #include <Qt3DRender/qrenderstate.h> #include <Qt3DRender/qcullface.h> +#include <Qt3DRender/qpointsize.h> #include <Qt3DRender/private/graphicscontext_p.h> +#include <Qt3DRender/private/qstenciloperation_p.h> +#include <Qt3DRender/private/qstenciltest_p.h> QT_BEGIN_NAMESPACE @@ -102,7 +105,7 @@ void BlendEquation::apply(GraphicsContext *gc) const void BlendEquation::updateProperty(const char *name, const QVariant &value) { - if (name == QByteArrayLiteral("mode")) std::get<0>(m_values) = value.toInt(); + if (name == QByteArrayLiteral("blendFunction")) std::get<0>(m_values) = value.toInt(); } void AlphaFunc::apply(GraphicsContext* gc) const @@ -110,6 +113,14 @@ void AlphaFunc::apply(GraphicsContext* gc) const gc->alphaTest(std::get<0>(m_values), std::get<1>(m_values)); } +void AlphaFunc::updateProperty(const char *name, const QVariant &value) +{ + if (name == QByteArrayLiteral("alphaFunction")) + std::get<0>(m_values) = value.toInt(); + if (name == QByteArrayLiteral("referenceValue")) + std::get<1>(m_values) = value.toFloat(); +} + void MSAAEnabled::apply(GraphicsContext *gc) const { gc->setMSAAEnabled(std::get<0>(m_values)); @@ -128,7 +139,7 @@ void DepthTest::apply(GraphicsContext *gc) const void DepthTest::updateProperty(const char *name, const QVariant &value) { - if (name == QByteArrayLiteral("func")) std::get<0>(m_values) = value.toInt(); + if (name == QByteArrayLiteral("depthFunction")) std::get<0>(m_values) = value.toInt(); } void CullFace::apply(GraphicsContext *gc) const @@ -192,6 +203,19 @@ void StencilTest::apply(GraphicsContext *gc) const gc->openGLContext()->functions()->glStencilFuncSeparate(GL_BACK, std::get<3>(m_values), std::get<4>(m_values), std::get<5>(m_values)); } +void StencilTest::updateProperty(const char *name, const QVariant &value) +{ + if (name == QByteArrayLiteral("arguments")) { + const QStencilTestData data = value.value<QStencilTestData>(); + std::get<0>(m_values) = data.front.stencilFunction; + std::get<1>(m_values) = data.front.referenceValue; + std::get<2>(m_values) = data.front.comparisonMask; + std::get<3>(m_values) = data.back.stencilFunction; + std::get<4>(m_values) = data.back.referenceValue; + std::get<5>(m_values) = data.back.comparisonMask; + } +} + void AlphaCoverage::apply(GraphicsContext *gc) const { gc->setAlphaCoverageEnabled(true); @@ -204,7 +228,7 @@ void PointSize::apply(GraphicsContext *gc) const void PointSize::updateProperty(const char *name, const QVariant &value) { - if (name == QByteArrayLiteral("specification")) std::get<0>(m_values) = value.toBool(); + if (name == QByteArrayLiteral("sizeMode")) std::get<0>(m_values) = (value.toInt() == QPointSize::Programmable); else if (name == QByteArrayLiteral("value")) std::get<1>(m_values) = value.toFloat(); } @@ -216,8 +240,8 @@ void PolygonOffset::apply(GraphicsContext *gc) const void PolygonOffset::updateProperty(const char *name, const QVariant &value) { - if (name == QByteArrayLiteral("factor")) std::get<0>(m_values) = value.toFloat(); - else if (name == QByteArrayLiteral("units")) std::get<1>(m_values) = value.toFloat(); + if (name == QByteArrayLiteral("scaleFactor")) std::get<0>(m_values) = value.toFloat(); + else if (name == QByteArrayLiteral("depthSteps")) std::get<1>(m_values) = value.toFloat(); } void ColorMask::apply(GraphicsContext *gc) const @@ -227,10 +251,10 @@ void ColorMask::apply(GraphicsContext *gc) const void ColorMask::updateProperty(const char *name, const QVariant &value) { - if (name == QByteArrayLiteral("red")) std::get<0>(m_values) = value.toBool(); - else if (name == QByteArrayLiteral("green")) std::get<1>(m_values) = value.toBool(); - else if (name == QByteArrayLiteral("blue")) std::get<2>(m_values) = value.toBool(); - else if (name == QByteArrayLiteral("alpha")) std::get<3>(m_values) = value.toBool(); + if (name == QByteArrayLiteral("redMasked")) std::get<0>(m_values) = value.toBool(); + else if (name == QByteArrayLiteral("greenMasked")) std::get<1>(m_values) = value.toBool(); + else if (name == QByteArrayLiteral("blueMasked")) std::get<2>(m_values) = value.toBool(); + else if (name == QByteArrayLiteral("alphaMasked")) std::get<3>(m_values) = value.toBool(); } void ClipPlane::apply(GraphicsContext *gc) const @@ -257,6 +281,19 @@ void StencilOp::apply(GraphicsContext *gc) const gc->openGLContext()->functions()->glStencilOpSeparate(GL_BACK, std::get<3>(m_values), std::get<4>(m_values), std::get<5>(m_values)); } +void StencilOp::updateProperty(const char *name, const QVariant &value) +{ + if (name == QByteArrayLiteral("arguments")) { + const QStencilOperationData data = value.value<QStencilOperationData>(); + std::get<0>(m_values) = data.front.stencilTestFailureOperation; + std::get<1>(m_values) = data.front.depthTestFailureOperation; + std::get<2>(m_values) = data.front.allTestsPassOperation; + std::get<3>(m_values) = data.back.stencilTestFailureOperation; + std::get<4>(m_values) = data.back.depthTestFailureOperation; + std::get<5>(m_values) = data.back.allTestsPassOperation; + } +} + void StencilMask::apply(GraphicsContext *gc) const { gc->openGLContext()->functions()->glStencilMaskSeparate(GL_FRONT, std::get<0>(m_values)); @@ -265,8 +302,8 @@ void StencilMask::apply(GraphicsContext *gc) const void StencilMask::updateProperty(const char *name, const QVariant &value) { - if (name == QByteArrayLiteral("frontMask")) std::get<0>(m_values) = value.toInt(); - else if (name == QByteArrayLiteral("backMask")) std::get<1>(m_values) = value.toInt(); + if (name == QByteArrayLiteral("frontOutputMask")) std::get<0>(m_values) = value.toInt(); + else if (name == QByteArrayLiteral("backOutputMask")) std::get<1>(m_values) = value.toInt(); } #ifndef GL_LINE_SMOOTH |