diff options
author | Kevin Ottens <kevin.ottens@kdab.com> | 2016-04-27 12:39:15 +0200 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2016-04-28 11:28:56 +0000 |
commit | 42bc3d429a470ec678948a19da1af5a67fe0080c (patch) | |
tree | adf2a31505fc9f45ff0385e24490645fc7b82acc /src/render/backend/renderview.cpp | |
parent | 665afce109016328ce3702a9d116e250b250f6ef (diff) |
QAbstractLight now inherits directly QComponent
We are turning the relationship between QAbstractLight and QShaderData
from a "is-a" to a "has-a". For that we relay all the properties of the
light to its internal shader data dynamic properties.
Interestingly it also removes a couple of special handling for lights
which aren't needed anymore.
Change-Id: Ia937b8934f94ce318e02901d90ac340e172cbc75
Task-number: QTBUG-51489
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/render/backend/renderview.cpp')
-rw-r--r-- | src/render/backend/renderview.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/render/backend/renderview.cpp b/src/render/backend/renderview.cpp index cc8cddbb8..5ca3f2f3c 100644 --- a/src/render/backend/renderview.cpp +++ b/src/render/backend/renderview.cpp @@ -866,13 +866,18 @@ void RenderView::setShaderAndUniforms(RenderCommand *command, RenderPass *rPass, Entity *lightEntity = lightSource.entity; const QVector3D worldPos = lightEntity->worldBoundingVolume()->center(); for (Light *light : lightSource.lights) { + ShaderData *shaderData = m_manager->shaderDataManager()->lookupResource(light->shaderData()); + if (!shaderData) + continue; + if (lightIdx == MAX_LIGHTS) break; + setUniformValue(command->m_parameterPack, LIGHT_POSITION_NAMES[lightIdx], worldPos); setUniformValue(command->m_parameterPack, LIGHT_TYPE_NAMES[lightIdx], int(QAbstractLight::PointLight)); setUniformValue(command->m_parameterPack, LIGHT_COLOR_NAMES[lightIdx], QVector3D(1.0f, 1.0f, 1.0f)); setUniformValue(command->m_parameterPack, LIGHT_INTENSITY_NAMES[lightIdx], QVector3D(0.5f, 0.5f, 0.5f)); - setDefaultUniformBlockShaderDataValue(command->m_parameterPack, shader, light, LIGHT_STRUCT_NAMES[lightIdx]); + setDefaultUniformBlockShaderDataValue(command->m_parameterPack, shader, shaderData, LIGHT_STRUCT_NAMES[lightIdx]); ++lightIdx; } } |