diff options
author | Kevin Ottens <kevin.ottens@kdab.com> | 2017-02-23 16:27:24 +0100 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2017-02-24 16:59:13 +0000 |
commit | 2a485273c1da1f56412bfd19795ac5a29331b770 (patch) | |
tree | 1e206d595d23cb1a7d44f376cc8a47cd2d1af17e /src/extras/defaults | |
parent | 271ff077ed2235eee149f23f157d8e17d058af4b (diff) |
Remove env light API from metal/rough materials
Now that EnvironmentLight is available in Qt3DRender this is no longer
necessary. We have a much better way to set the environment lighting
now.
Change-Id: I492d1383aaf4e60b434c7ab94f3696e499545f9f
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/extras/defaults')
-rw-r--r-- | src/extras/defaults/qmetalroughmaterial.cpp | 75 | ||||
-rw-r--r-- | src/extras/defaults/qmetalroughmaterial.h | 8 | ||||
-rw-r--r-- | src/extras/defaults/qmetalroughmaterial_p.h | 2 | ||||
-rw-r--r-- | src/extras/defaults/qtexturedmetalroughmaterial.cpp | 74 | ||||
-rw-r--r-- | src/extras/defaults/qtexturedmetalroughmaterial.h | 8 | ||||
-rw-r--r-- | src/extras/defaults/qtexturedmetalroughmaterial_p.h | 2 |
6 files changed, 14 insertions, 155 deletions
diff --git a/src/extras/defaults/qmetalroughmaterial.cpp b/src/extras/defaults/qmetalroughmaterial.cpp index 3081fa787..ea213ab82 100644 --- a/src/extras/defaults/qmetalroughmaterial.cpp +++ b/src/extras/defaults/qmetalroughmaterial.cpp @@ -94,10 +94,6 @@ void QMetalRoughMaterialPrivate::init() this, &QMetalRoughMaterialPrivate::handleMetallicChanged); connect(m_roughnessParameter, &Qt3DRender::QParameter::valueChanged, this, &QMetalRoughMaterialPrivate::handleRoughnessChanged); - connect(m_environmentIrradianceParameter, &Qt3DRender::QParameter::valueChanged, - this, &QMetalRoughMaterialPrivate::handleEnvironmentIrradianceChanged); - connect(m_environmentSpecularParameter, &Qt3DRender::QParameter::valueChanged, - this, &QMetalRoughMaterialPrivate::handleEnvironmentSpecularChanged); m_metalRoughGL3Shader->setVertexShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/gl3/metalrough.vert")))); m_metalRoughGL3Shader->setFragmentShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/gl3/metalroughuniform.frag")))); @@ -120,6 +116,13 @@ void QMetalRoughMaterialPrivate::init() m_metalRoughEffect->addParameter(m_baseColorParameter); m_metalRoughEffect->addParameter(m_metalnessParameter); m_metalRoughEffect->addParameter(m_roughnessParameter); + + // Note that even though those parameters are not exposed in the API, + // they need to be kept around for now due to a bug in some drivers/GPUs + // (at least Intel) which cause issues with unbound textures even if you + // don't try to sample from them. + // Can probably go away once we generate the shaders and deal in this + // case in a better way. m_metalRoughEffect->addParameter(m_environmentIrradianceParameter); m_metalRoughEffect->addParameter(m_environmentSpecularParameter); @@ -143,18 +146,6 @@ void QMetalRoughMaterialPrivate::handleRoughnessChanged(const QVariant &var) emit q->roughnessChanged(var.toFloat()); } -void QMetalRoughMaterialPrivate::handleEnvironmentIrradianceChanged(const QVariant &var) -{ - Q_Q(QMetalRoughMaterial); - emit q->environmentIrradianceChanged(var.value<QAbstractTexture *>()); -} - -void QMetalRoughMaterialPrivate::handleEnvironmentSpecularChanged(const QVariant &var) -{ - Q_Q(QMetalRoughMaterial); - emit q->environmentSpecularChanged(var.value<QAbstractTexture *>()); -} - /*! \class Qt3DExtras::QMetalRoughMaterial \brief The QMetalRoughMaterial provides a default implementation of PBR @@ -226,46 +217,6 @@ float QMetalRoughMaterial::roughness() const return d->m_roughnessParameter->value().toFloat(); } -/*! - \property QMetalRoughMaterial::environmentIrradiance - - Holds the current environment irradiance map texture. - - By default, the environment irradiance texture has the following properties: - - \list - \li Linear minification and magnification filters - \li Linear mipmap with mipmapping enabled - \li Repeat wrap mode - \li Maximum anisotropy of 16.0 - \endlist -*/ -QAbstractTexture *QMetalRoughMaterial::environmentIrradiance() const -{ - Q_D(const QMetalRoughMaterial); - return d->m_environmentIrradianceParameter->value().value<QAbstractTexture *>(); -} - -/*! - \property QMetalRoughMaterial::environmentSpecular - - Holds the current environment specular map texture. - - By default, the environment specular texture has the following properties: - - \list - \li Linear minification and magnification filters - \li Linear mipmap with mipmapping enabled - \li Repeat wrap mode - \li Maximum anisotropy of 16.0 - \endlist -*/ -QAbstractTexture *QMetalRoughMaterial::environmentSpecular() const -{ - Q_D(const QMetalRoughMaterial); - return d->m_environmentSpecularParameter->value().value<QAbstractTexture *>(); -} - void QMetalRoughMaterial::setBaseColor(const QColor &baseColor) { Q_D(QMetalRoughMaterial); @@ -284,18 +235,6 @@ void QMetalRoughMaterial::setRoughness(float roughness) d->m_roughnessParameter->setValue(QVariant::fromValue(roughness)); } -void QMetalRoughMaterial::setEnvironmentIrradiance(QAbstractTexture *environmentIrradiance) -{ - Q_D(QMetalRoughMaterial); - d->m_environmentIrradianceParameter->setValue(QVariant::fromValue(environmentIrradiance)); -} - -void QMetalRoughMaterial::setEnvironmentSpecular(QAbstractTexture *environmentSpecular) -{ - Q_D(QMetalRoughMaterial); - d->m_environmentSpecularParameter->setValue(QVariant::fromValue(environmentSpecular)); -} - } // namespace Qt3DExtras QT_END_NAMESPACE diff --git a/src/extras/defaults/qmetalroughmaterial.h b/src/extras/defaults/qmetalroughmaterial.h index e13d6c1e9..a7de7b80c 100644 --- a/src/extras/defaults/qmetalroughmaterial.h +++ b/src/extras/defaults/qmetalroughmaterial.h @@ -60,8 +60,6 @@ class QT3DEXTRASSHARED_EXPORT QMetalRoughMaterial : public Qt3DRender::QMaterial Q_PROPERTY(QColor baseColor READ baseColor WRITE setBaseColor NOTIFY baseColorChanged) Q_PROPERTY(float metalness READ metalness WRITE setMetalness NOTIFY metalnessChanged) Q_PROPERTY(float roughness READ roughness WRITE setRoughness NOTIFY roughnessChanged) - Q_PROPERTY(Qt3DRender::QAbstractTexture *environmentIrradiance READ environmentIrradiance WRITE setEnvironmentIrradiance NOTIFY environmentIrradianceChanged) - Q_PROPERTY(Qt3DRender::QAbstractTexture *environmentSpecular READ environmentSpecular WRITE setEnvironmentSpecular NOTIFY environmentSpecularChanged) public: explicit QMetalRoughMaterial(Qt3DCore::QNode *parent = nullptr); @@ -70,22 +68,16 @@ public: QColor baseColor() const; float metalness() const; float roughness() const; - Qt3DRender::QAbstractTexture *environmentIrradiance() const; - Qt3DRender::QAbstractTexture *environmentSpecular() const; public Q_SLOTS: void setBaseColor(const QColor &baseColor); void setMetalness(float metalness); void setRoughness(float roughness); - void setEnvironmentIrradiance(Qt3DRender::QAbstractTexture *environmentIrradiance); - void setEnvironmentSpecular(Qt3DRender::QAbstractTexture *environmentSpecular); Q_SIGNALS: void baseColorChanged(const QColor &baseColor); void metalnessChanged(float metalness); void roughnessChanged(float roughness); - void environmentIrradianceChanged(Qt3DRender::QAbstractTexture *environmentIrradiance); - void environmentSpecularChanged(Qt3DRender::QAbstractTexture *environmentSpecular); protected: QMetalRoughMaterial(QMetalRoughMaterialPrivate &dd, Qt3DCore::QNode *parent = nullptr); diff --git a/src/extras/defaults/qmetalroughmaterial_p.h b/src/extras/defaults/qmetalroughmaterial_p.h index b406df996..3090b9757 100644 --- a/src/extras/defaults/qmetalroughmaterial_p.h +++ b/src/extras/defaults/qmetalroughmaterial_p.h @@ -81,8 +81,6 @@ public: void handleBaseColorChanged(const QVariant &var); void handleMetallicChanged(const QVariant &var); void handleRoughnessChanged(const QVariant &var); - void handleEnvironmentIrradianceChanged(const QVariant &var); - void handleEnvironmentSpecularChanged(const QVariant &var); Qt3DRender::QAbstractTexture *m_environmentIrradianceTexture; Qt3DRender::QAbstractTexture *m_environmentSpecularTexture; diff --git a/src/extras/defaults/qtexturedmetalroughmaterial.cpp b/src/extras/defaults/qtexturedmetalroughmaterial.cpp index b8faff7ed..e09517866 100644 --- a/src/extras/defaults/qtexturedmetalroughmaterial.cpp +++ b/src/extras/defaults/qtexturedmetalroughmaterial.cpp @@ -135,10 +135,6 @@ void QTexturedMetalRoughMaterialPrivate::init() this, &QTexturedMetalRoughMaterialPrivate::handleAmbientOcclusionChanged); connect(m_normalParameter, &Qt3DRender::QParameter::valueChanged, this, &QTexturedMetalRoughMaterialPrivate::handleNormalChanged); - connect(m_environmentIrradianceParameter, &Qt3DRender::QParameter::valueChanged, - this, &QTexturedMetalRoughMaterialPrivate::handleEnvironmentIrradianceChanged); - connect(m_environmentSpecularParameter, &Qt3DRender::QParameter::valueChanged, - this, &QTexturedMetalRoughMaterialPrivate::handleEnvironmentSpecularChanged); m_metalRoughGL3Shader->setVertexShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/gl3/metalrough.vert")))); m_metalRoughGL3Shader->setFragmentShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/gl3/metalrough.frag")))); @@ -163,6 +159,13 @@ void QTexturedMetalRoughMaterialPrivate::init() m_metalRoughEffect->addParameter(m_roughnessParameter); m_metalRoughEffect->addParameter(m_ambientOcclusionParameter); m_metalRoughEffect->addParameter(m_normalParameter); + + // Note that even though those parameters are not exposed in the API, + // they need to be kept around for now due to a bug in some drivers/GPUs + // (at least Intel) which cause issues with unbound textures even if you + // don't try to sample from them. + // Can probably go away once we generate the shaders and deal in this + // case in a better way. m_metalRoughEffect->addParameter(m_environmentIrradianceParameter); m_metalRoughEffect->addParameter(m_environmentSpecularParameter); @@ -197,18 +200,6 @@ void QTexturedMetalRoughMaterialPrivate::handleNormalChanged(const QVariant &var emit q->normalChanged(var.value<QAbstractTexture *>()); } -void QTexturedMetalRoughMaterialPrivate::handleEnvironmentIrradianceChanged(const QVariant &var) -{ - Q_Q(QTexturedMetalRoughMaterial); - emit q->environmentIrradianceChanged(var.value<QAbstractTexture *>()); -} - -void QTexturedMetalRoughMaterialPrivate::handleEnvironmentSpecularChanged(const QVariant &var) -{ - Q_Q(QTexturedMetalRoughMaterial); - emit q->environmentSpecularChanged(var.value<QAbstractTexture *>()); -} - /*! \class Qt3DExtras::QTexturedMetalRoughMaterial \brief The QTexturedMetalRoughMaterial provides a default implementation of PBR @@ -346,45 +337,6 @@ QAbstractTexture *QTexturedMetalRoughMaterial::normal() const return d->m_normalParameter->value().value<QAbstractTexture *>(); } -/*! - \property QTexturedMetalRoughMaterial::environmentIrradiance - - Holds the current environment irradiance map texture. - - By default, the environment irradiance texture has the following properties: - - \list - \li Linear minification and magnification filters - \li Linear mipmap with mipmapping enabled - \li Repeat wrap mode - \li Maximum anisotropy of 16.0 - \endlist -*/ -QAbstractTexture *QTexturedMetalRoughMaterial::environmentIrradiance() const -{ - Q_D(const QTexturedMetalRoughMaterial); - return d->m_environmentIrradianceParameter->value().value<QAbstractTexture *>(); -} - -/*! - \property QTexturedMetalRoughMaterial::environmentSpecular - - Holds the current environment specular map texture. - - By default, the environment specular texture has the following properties: - - \list - \li Linear minification and magnification filters - \li Linear mipmap with mipmapping enabled - \li Repeat wrap mode - \li Maximum anisotropy of 16.0 - \endlist -*/ -QAbstractTexture *QTexturedMetalRoughMaterial::environmentSpecular() const -{ - Q_D(const QTexturedMetalRoughMaterial); - return d->m_environmentSpecularParameter->value().value<QAbstractTexture *>(); -} void QTexturedMetalRoughMaterial::setBaseColor(QAbstractTexture *baseColor) { @@ -416,18 +368,6 @@ void QTexturedMetalRoughMaterial::setNormal(QAbstractTexture *normal) d->m_normalParameter->setValue(QVariant::fromValue(normal)); } -void QTexturedMetalRoughMaterial::setEnvironmentIrradiance(QAbstractTexture *environmentIrradiance) -{ - Q_D(QTexturedMetalRoughMaterial); - d->m_environmentIrradianceParameter->setValue(QVariant::fromValue(environmentIrradiance)); -} - -void QTexturedMetalRoughMaterial::setEnvironmentSpecular(QAbstractTexture *environmentSpecular) -{ - Q_D(QTexturedMetalRoughMaterial); - d->m_environmentSpecularParameter->setValue(QVariant::fromValue(environmentSpecular)); -} - } // namespace Qt3DExtras QT_END_NAMESPACE diff --git a/src/extras/defaults/qtexturedmetalroughmaterial.h b/src/extras/defaults/qtexturedmetalroughmaterial.h index c5c3fce33..27c33ad6d 100644 --- a/src/extras/defaults/qtexturedmetalroughmaterial.h +++ b/src/extras/defaults/qtexturedmetalroughmaterial.h @@ -57,8 +57,6 @@ class QT3DEXTRASSHARED_EXPORT QTexturedMetalRoughMaterial : public Qt3DRender::Q Q_PROPERTY(Qt3DRender::QAbstractTexture *roughness READ roughness WRITE setRoughness NOTIFY roughnessChanged) Q_PROPERTY(Qt3DRender::QAbstractTexture *ambientOcclusion READ ambientOcclusion WRITE setAmbientOcclusion NOTIFY ambientOcclusionChanged) Q_PROPERTY(Qt3DRender::QAbstractTexture *normal READ normal WRITE setNormal NOTIFY normalChanged) - Q_PROPERTY(Qt3DRender::QAbstractTexture *environmentIrradiance READ environmentIrradiance WRITE setEnvironmentIrradiance NOTIFY environmentIrradianceChanged) - Q_PROPERTY(Qt3DRender::QAbstractTexture *environmentSpecular READ environmentSpecular WRITE setEnvironmentSpecular NOTIFY environmentSpecularChanged) public: explicit QTexturedMetalRoughMaterial(Qt3DCore::QNode *parent = nullptr); @@ -69,8 +67,6 @@ public: Qt3DRender::QAbstractTexture *roughness() const; Qt3DRender::QAbstractTexture *ambientOcclusion() const; Qt3DRender::QAbstractTexture *normal() const; - Qt3DRender::QAbstractTexture *environmentIrradiance() const; - Qt3DRender::QAbstractTexture *environmentSpecular() const; public Q_SLOTS: void setBaseColor(Qt3DRender::QAbstractTexture *baseColor); @@ -78,8 +74,6 @@ public Q_SLOTS: void setRoughness(Qt3DRender::QAbstractTexture *roughness); void setAmbientOcclusion(Qt3DRender::QAbstractTexture *ambientOcclusion); void setNormal(Qt3DRender::QAbstractTexture *normal); - void setEnvironmentIrradiance(Qt3DRender::QAbstractTexture *environmentIrradiance); - void setEnvironmentSpecular(Qt3DRender::QAbstractTexture *environmentSpecular); Q_SIGNALS: void baseColorChanged(Qt3DRender::QAbstractTexture *baseColor); @@ -87,8 +81,6 @@ Q_SIGNALS: void roughnessChanged(Qt3DRender::QAbstractTexture *roughness); void ambientOcclusionChanged(Qt3DRender::QAbstractTexture *ambientOcclusion); void normalChanged(Qt3DRender::QAbstractTexture *normal); - void environmentIrradianceChanged(Qt3DRender::QAbstractTexture *environmentIrradiance); - void environmentSpecularChanged(Qt3DRender::QAbstractTexture *environmentSpecular); protected: QTexturedMetalRoughMaterial(QTexturedMetalRoughMaterialPrivate &dd, Qt3DCore::QNode *parent = nullptr); diff --git a/src/extras/defaults/qtexturedmetalroughmaterial_p.h b/src/extras/defaults/qtexturedmetalroughmaterial_p.h index 084824304..8972726e5 100644 --- a/src/extras/defaults/qtexturedmetalroughmaterial_p.h +++ b/src/extras/defaults/qtexturedmetalroughmaterial_p.h @@ -83,8 +83,6 @@ public: void handleRoughnessChanged(const QVariant &var); void handleAmbientOcclusionChanged(const QVariant &var); void handleNormalChanged(const QVariant &var); - void handleEnvironmentIrradianceChanged(const QVariant &var); - void handleEnvironmentSpecularChanged(const QVariant &var); Qt3DRender::QAbstractTexture *m_baseColorTexture; Qt3DRender::QAbstractTexture *m_metalnessTexture; |