From b69963e93f7ee725a4cf66b8b8e15146f927a4b4 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sat, 11 May 2013 14:30:39 +0200 Subject: [PATCH] Made uniform caching less error-prone Former-commit-id: 0512daf3c54ed1e546ff7b12a6c9e82675504d5f --- src/Nazara/Renderer/GLSLShader.cpp | 40 ++++++++++++++++-------------- 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/src/Nazara/Renderer/GLSLShader.cpp b/src/Nazara/Renderer/GLSLShader.cpp index a3051ea20..469026b38 100644 --- a/src/Nazara/Renderer/GLSLShader.cpp +++ b/src/Nazara/Renderer/GLSLShader.cpp @@ -61,24 +61,28 @@ bool NzGLSLShader::Compile() static NzString successStr("Linkage successful"); m_log = successStr; - m_uniformLocations[nzShaderUniform_CameraPosition] = GetUniformLocation("CameraPosition"); - m_uniformLocations[nzShaderUniform_LightCount] = GetUniformLocation("LightCount"); - m_uniformLocations[nzShaderUniform_MaterialAmbient] = GetUniformLocation("MaterialAmbient"); - m_uniformLocations[nzShaderUniform_MaterialDiffuse] = GetUniformLocation("MaterialDiffuse"); - m_uniformLocations[nzShaderUniform_MaterialDiffuseMap] = GetUniformLocation("MaterialDiffuseMap"); - m_uniformLocations[nzShaderUniform_MaterialEmissiveMap] = GetUniformLocation("MaterialEmissiveMap"); - m_uniformLocations[nzShaderUniform_MaterialHeightMap] = GetUniformLocation("MaterialHeightMap"); - m_uniformLocations[nzShaderUniform_MaterialNormalMap] = GetUniformLocation("MaterialNormalMap"); - m_uniformLocations[nzShaderUniform_MaterialShininess] = GetUniformLocation("MaterialShininess"); - m_uniformLocations[nzShaderUniform_MaterialSpecular] = GetUniformLocation("MaterialSpecular"); - m_uniformLocations[nzShaderUniform_MaterialSpecularMap] = GetUniformLocation("MaterialSpecularMap"); - m_uniformLocations[nzShaderUniform_ProjMatrix] = GetUniformLocation("ProjMatrix"); - m_uniformLocations[nzShaderUniform_SceneAmbient] = GetUniformLocation("SceneAmbient"); - m_uniformLocations[nzShaderUniform_ViewMatrix] = GetUniformLocation("ViewMatrix"); - m_uniformLocations[nzShaderUniform_ViewProjMatrix] = GetUniformLocation("ViewProjMatrix"); - m_uniformLocations[nzShaderUniform_WorldMatrix] = GetUniformLocation("WorldMatrix"); - m_uniformLocations[nzShaderUniform_WorldViewMatrix] = GetUniformLocation("WorldViewMatrix"); - m_uniformLocations[nzShaderUniform_WorldViewProjMatrix] = GetUniformLocation("WorldViewProjMatrix"); + #define CacheUniform(name) m_uniformLocations[nzShaderUniform_##name] = GetUniformLocation(#name) + + CacheUniform(CameraPosition); + CacheUniform(LightCount); + CacheUniform(MaterialAmbient); + CacheUniform(MaterialDiffuse); + CacheUniform(MaterialDiffuseMap); + CacheUniform(MaterialEmissiveMap); + CacheUniform(MaterialHeightMap); + CacheUniform(MaterialNormalMap); + CacheUniform(MaterialShininess); + CacheUniform(MaterialSpecular); + CacheUniform(MaterialSpecularMap); + CacheUniform(ProjMatrix); + CacheUniform(SceneAmbient); + CacheUniform(ViewMatrix); + CacheUniform(ViewProjMatrix); + CacheUniform(WorldMatrix); + CacheUniform(WorldViewMatrix); + CacheUniform(WorldViewProjMatrix); + + #undef CacheUniform return true; }