diff options
author | Michael Brasser <mbrasser@ford.com> | 2020-03-24 10:07:15 -0500 |
---|---|---|
committer | Michael Brasser <mbrasser@ford.com> | 2020-03-27 07:58:28 -0500 |
commit | adc9c3e6ab2cdda50cce6d2623959adf94f7845e (patch) | |
tree | dc1b798894522ac15a205d2d488414c050a9b141 /src/render/lights | |
parent | 4d1ca5a7afc78ad4676d54ff168170bd7abe7273 (diff) |
Implement MetalRough shader optimization TODO
Calculate specularMipLevels only once, on the CPU.
Change-Id: I694e3d5e45ea369875ac3ecff36f885b3f669bcf
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/render/lights')
-rw-r--r-- | src/render/lights/qenvironmentlight.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/render/lights/qenvironmentlight.cpp b/src/render/lights/qenvironmentlight.cpp index 977e117db..9510bda8f 100644 --- a/src/render/lights/qenvironmentlight.cpp +++ b/src/render/lights/qenvironmentlight.cpp @@ -42,6 +42,8 @@ #include "qabstracttexture.h" #include <QVector3D> +#include <cmath> + QT_BEGIN_NAMESPACE namespace Qt3DRender @@ -98,6 +100,9 @@ void QEnvironmentLightPrivate::_q_updateEnvMapsSize() m_specular->height(), m_specular->depth()); m_shaderData->setProperty("specularSize", QVariant::fromValue(specularSize)); + + const int levels = int(std::log2(specularSize.x() > 0.0f ? specularSize.x() : 1.0f)) + 1; + m_shaderData->setProperty("specularMipLevels", QVariant::fromValue(levels)); } Qt3DCore::QNodeCreatedChangeBasePtr QEnvironmentLight::createNodeCreationChange() const |