Graphics/ForwardRenderTechnique: Fix light uniforms

Former-commit-id: b3f0ae5cab39ea5a698800985843a818280d18be
This commit is contained in:
Lynix 2015-06-12 00:23:46 +02:00
parent a38d988507
commit 2391d76332
3 changed files with 5 additions and 5 deletions

View File

@ -42,7 +42,7 @@ class NAZARA_API NzForwardRenderTechnique : public NzAbstractRenderTechnique
void DrawTransparentModels(const NzAbstractViewer* viewer, const NzSceneData& sceneData) const;
const ShaderUniforms* GetShaderUniforms(const NzShader* shader) const;
void OnShaderInvalidated(const NzShader* shader) const;
void SendLightUniforms(const NzShader* shader, const NzLightUniforms& uniforms, unsigned int uniformOffset, unsigned int index) const;
void SendLightUniforms(const NzShader* shader, const NzLightUniforms& uniforms, unsigned int index, unsigned int uniformOffset) const;
static float ComputeDirectionalLightScore(const NzSpheref& object, const NzAbstractRenderQueue::DirectionalLight& light);
static float ComputePointLightScore(const NzSpheref& object, const NzAbstractRenderQueue::PointLight& light);

View File

@ -2,7 +2,7 @@
// This file is part of the "Nazara Engine - Graphics module"
// For conditions of distribution and use, see copyright notice in Config.hpp
inline void NzForwardRenderTechnique::SendLightUniforms(const NzShader* shader, const NzLightUniforms& uniforms, unsigned int uniformOffset, unsigned int index) const
inline void NzForwardRenderTechnique::SendLightUniforms(const NzShader* shader, const NzLightUniforms& uniforms, unsigned int index, unsigned int uniformOffset) const
{
if (index < m_lights.size())
{

View File

@ -559,7 +559,7 @@ void NzForwardRenderTechnique::DrawOpaqueModels(const NzAbstractViewer* viewer,
// Sends the uniforms
for (unsigned int i = 0; i < NAZARA_GRAPHICS_MAX_LIGHT_PER_PASS; ++i)
SendLightUniforms(shader, shaderUniforms->lightUniforms, i*shaderUniforms->lightOffset, lightIndex++);
SendLightUniforms(shader, shaderUniforms->lightUniforms, lightIndex++, i*shaderUniforms->lightOffset);
}
const NzMatrix4f* instanceMatrices = &instances[0];
@ -687,7 +687,7 @@ void NzForwardRenderTechnique::DrawTransparentModels(const NzAbstractViewer* vie
lightCount = std::min(m_renderQueue.directionalLights.size(), NazaraSuffixMacro(NAZARA_GRAPHICS_MAX_LIGHT_PER_PASS, U));
for (unsigned int i = 0; i < lightCount; ++i)
SendLightUniforms(shader, shaderUniforms->lightUniforms, shaderUniforms->lightOffset * i, i);
SendLightUniforms(shader, shaderUniforms->lightUniforms, i, shaderUniforms->lightOffset * i);
}
lastShader = shader;
@ -726,7 +726,7 @@ void NzForwardRenderTechnique::DrawTransparentModels(const NzAbstractViewer* vie
ChooseLights(NzSpheref(position, radius), false);
for (unsigned int i = lightCount; i < NAZARA_GRAPHICS_MAX_LIGHT_PER_PASS; ++i)
SendLightUniforms(shader, shaderUniforms->lightUniforms, shaderUniforms->lightOffset*i, i);
SendLightUniforms(shader, shaderUniforms->lightUniforms, i, shaderUniforms->lightOffset*i);
}
NzRenderer::SetMatrix(nzMatrixType_World, matrix);