summaryrefslogtreecommitdiffstats
path: root/src/render/lights
diff options
context:
space:
mode:
authorMichael Brasser <mbrasser@ford.com>2020-03-24 10:07:15 -0500
committerMichael Brasser <mbrasser@ford.com>2020-03-27 07:58:28 -0500
commitadc9c3e6ab2cdda50cce6d2623959adf94f7845e (patch)
treedc1b798894522ac15a205d2d488414c050a9b141 /src/render/lights
parent4d1ca5a7afc78ad4676d54ff168170bd7abe7273 (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.cpp5
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