Graphics/ForwardRenderTechnique: Fix light uniforms
Former-commit-id: b3f0ae5cab39ea5a698800985843a818280d18be
This commit is contained in:
parent
a38d988507
commit
2391d76332
|
|
@ -42,7 +42,7 @@ class NAZARA_API NzForwardRenderTechnique : public NzAbstractRenderTechnique
|
||||||
void DrawTransparentModels(const NzAbstractViewer* viewer, const NzSceneData& sceneData) const;
|
void DrawTransparentModels(const NzAbstractViewer* viewer, const NzSceneData& sceneData) const;
|
||||||
const ShaderUniforms* GetShaderUniforms(const NzShader* shader) const;
|
const ShaderUniforms* GetShaderUniforms(const NzShader* shader) const;
|
||||||
void OnShaderInvalidated(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 ComputeDirectionalLightScore(const NzSpheref& object, const NzAbstractRenderQueue::DirectionalLight& light);
|
||||||
static float ComputePointLightScore(const NzSpheref& object, const NzAbstractRenderQueue::PointLight& light);
|
static float ComputePointLightScore(const NzSpheref& object, const NzAbstractRenderQueue::PointLight& light);
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
// This file is part of the "Nazara Engine - Graphics module"
|
// This file is part of the "Nazara Engine - Graphics module"
|
||||||
// For conditions of distribution and use, see copyright notice in Config.hpp
|
// 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())
|
if (index < m_lights.size())
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -559,7 +559,7 @@ void NzForwardRenderTechnique::DrawOpaqueModels(const NzAbstractViewer* viewer,
|
||||||
|
|
||||||
// Sends the uniforms
|
// Sends the uniforms
|
||||||
for (unsigned int i = 0; i < NAZARA_GRAPHICS_MAX_LIGHT_PER_PASS; ++i)
|
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];
|
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));
|
lightCount = std::min(m_renderQueue.directionalLights.size(), NazaraSuffixMacro(NAZARA_GRAPHICS_MAX_LIGHT_PER_PASS, U));
|
||||||
|
|
||||||
for (unsigned int i = 0; i < lightCount; ++i)
|
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;
|
lastShader = shader;
|
||||||
|
|
@ -726,7 +726,7 @@ void NzForwardRenderTechnique::DrawTransparentModels(const NzAbstractViewer* vie
|
||||||
ChooseLights(NzSpheref(position, radius), false);
|
ChooseLights(NzSpheref(position, radius), false);
|
||||||
|
|
||||||
for (unsigned int i = lightCount; i < NAZARA_GRAPHICS_MAX_LIGHT_PER_PASS; ++i)
|
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);
|
NzRenderer::SetMatrix(nzMatrixType_World, matrix);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue