|
@@ -14,16 +14,16 @@
|
|
|
//======================================================================================================================
|
|
//======================================================================================================================
|
|
|
// Statics =
|
|
// Statics =
|
|
|
//======================================================================================================================
|
|
//======================================================================================================================
|
|
|
-Material::StdVarNameAndGlDataTypePair Material::stdAttribVarInfos[SAV_NUM] =
|
|
|
|
|
-{
|
|
|
|
|
|
|
+boost::array<Material::StdVarNameAndGlDataTypePair, Material::SAV_NUM> Material::stdAttribVarInfos =
|
|
|
|
|
+{{
|
|
|
{"position", GL_FLOAT_VEC3},
|
|
{"position", GL_FLOAT_VEC3},
|
|
|
{"tangent", GL_FLOAT_VEC4},
|
|
{"tangent", GL_FLOAT_VEC4},
|
|
|
{"normal", GL_FLOAT_VEC3},
|
|
{"normal", GL_FLOAT_VEC3},
|
|
|
{"texCoords", GL_FLOAT_VEC2}
|
|
{"texCoords", GL_FLOAT_VEC2}
|
|
|
-};
|
|
|
|
|
|
|
+}};
|
|
|
|
|
|
|
|
-Material::StdVarNameAndGlDataTypePair Material::stdUniVarInfos[SUV_NUM] =
|
|
|
|
|
-{
|
|
|
|
|
|
|
+boost::array<Material::StdVarNameAndGlDataTypePair, Material::SUV_NUM> Material::stdUniVarInfos =
|
|
|
|
|
+{{
|
|
|
{"modelMat", GL_FLOAT_MAT4},
|
|
{"modelMat", GL_FLOAT_MAT4},
|
|
|
{"viewMat", GL_FLOAT_MAT4},
|
|
{"viewMat", GL_FLOAT_MAT4},
|
|
|
{"projectionMat", GL_FLOAT_MAT4},
|
|
{"projectionMat", GL_FLOAT_MAT4},
|
|
@@ -40,9 +40,9 @@ Material::StdVarNameAndGlDataTypePair Material::stdUniVarInfos[SUV_NUM] =
|
|
|
{"ppsPostPassFai", GL_SAMPLER_2D},
|
|
{"ppsPostPassFai", GL_SAMPLER_2D},
|
|
|
{"rendererSize", GL_FLOAT_VEC2},
|
|
{"rendererSize", GL_FLOAT_VEC2},
|
|
|
{"sceneAmbientColor", GL_FLOAT_VEC3}
|
|
{"sceneAmbientColor", GL_FLOAT_VEC3}
|
|
|
-};
|
|
|
|
|
|
|
+}};
|
|
|
|
|
|
|
|
-Material::PreprocDefines Material::msGenericDefines [] =
|
|
|
|
|
|
|
+Material::PreprocDefines Material::msGenericDefines[] =
|
|
|
{
|
|
{
|
|
|
{"DIFFUSE_MAPPING", 'd'},
|
|
{"DIFFUSE_MAPPING", 'd'},
|
|
|
{"NORMAL_MAPPING", 'n'},
|
|
{"NORMAL_MAPPING", 'n'},
|
|
@@ -53,7 +53,7 @@ Material::PreprocDefines Material::msGenericDefines [] =
|
|
|
{NULL, NULL}
|
|
{NULL, NULL}
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
-Material::PreprocDefines Material::dpGenericDefines [] =
|
|
|
|
|
|
|
+Material::PreprocDefines Material::dpGenericDefines[] =
|
|
|
{
|
|
{
|
|
|
{"ALPHA_TESTING", 'a'},
|
|
{"ALPHA_TESTING", 'a'},
|
|
|
{NULL, NULL}
|
|
{NULL, NULL}
|
|
@@ -281,11 +281,13 @@ void Material::load(const char* filename)
|
|
|
}
|
|
}
|
|
|
else if(fai.get() == "ppsPrePassFai")
|
|
else if(fai.get() == "ppsPrePassFai")
|
|
|
{
|
|
{
|
|
|
- userDefinedVars.push_back(new MtlUserDefinedVar(uni, MtlUserDefinedVar::PPS_PRE_PASS_FAI));
|
|
|
|
|
|
|
+ userDefinedVars.push_back(new MtlUserDefinedVar(uni,
|
|
|
|
|
+ MtlUserDefinedVar::PPS_PRE_PASS_FAI));
|
|
|
}
|
|
}
|
|
|
else if(fai.get() == "ppsPostPassFai")
|
|
else if(fai.get() == "ppsPostPassFai")
|
|
|
{
|
|
{
|
|
|
- userDefinedVars.push_back(new MtlUserDefinedVar(uni, MtlUserDefinedVar::PPS_POST_PASS_FAI));
|
|
|
|
|
|
|
+ userDefinedVars.push_back(new MtlUserDefinedVar(uni,
|
|
|
|
|
+ MtlUserDefinedVar::PPS_POST_PASS_FAI));
|
|
|
}
|
|
}
|
|
|
else
|
|
else
|
|
|
{
|
|
{
|
|
@@ -303,15 +305,15 @@ void Material::load(const char* filename)
|
|
|
case GL_FLOAT:
|
|
case GL_FLOAT:
|
|
|
userDefinedVars.push_back(new MtlUserDefinedVar(uni, PropertyTree::getFloat(valueTree)));
|
|
userDefinedVars.push_back(new MtlUserDefinedVar(uni, PropertyTree::getFloat(valueTree)));
|
|
|
break;
|
|
break;
|
|
|
- // vec2
|
|
|
|
|
|
|
+ // vec2
|
|
|
case GL_FLOAT_VEC2:
|
|
case GL_FLOAT_VEC2:
|
|
|
userDefinedVars.push_back(new MtlUserDefinedVar(uni, PropertyTree::getVec2(valueTree)));
|
|
userDefinedVars.push_back(new MtlUserDefinedVar(uni, PropertyTree::getVec2(valueTree)));
|
|
|
break;
|
|
break;
|
|
|
- // vec3
|
|
|
|
|
|
|
+ // vec3
|
|
|
case GL_FLOAT_VEC3:
|
|
case GL_FLOAT_VEC3:
|
|
|
userDefinedVars.push_back(new MtlUserDefinedVar(uni, PropertyTree::getVec3(valueTree)));
|
|
userDefinedVars.push_back(new MtlUserDefinedVar(uni, PropertyTree::getVec3(valueTree)));
|
|
|
break;
|
|
break;
|
|
|
- // vec4
|
|
|
|
|
|
|
+ // vec4
|
|
|
case GL_FLOAT_VEC4:
|
|
case GL_FLOAT_VEC4:
|
|
|
userDefinedVars.push_back(new MtlUserDefinedVar(uni, PropertyTree::getVec4(valueTree)));
|
|
userDefinedVars.push_back(new MtlUserDefinedVar(uni, PropertyTree::getVec4(valueTree)));
|
|
|
break;
|
|
break;
|
|
@@ -339,7 +341,7 @@ void Material::initStdShaderVars()
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// the attributes
|
|
// the attributes
|
|
|
- for(uint i=0; i<SAV_NUM; i++)
|
|
|
|
|
|
|
+ for(uint i = 0; i < SAV_NUM; i++)
|
|
|
{
|
|
{
|
|
|
// if the var is not in the sProg then... bye
|
|
// if the var is not in the sProg then... bye
|
|
|
if(!shaderProg->attribVarExists(stdAttribVarInfos[i].varName))
|
|
if(!shaderProg->attribVarExists(stdAttribVarInfos[i].varName))
|
|
@@ -360,7 +362,7 @@ void Material::initStdShaderVars()
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// the uniforms
|
|
// the uniforms
|
|
|
- for(uint i=0; i<SUV_NUM; i++)
|
|
|
|
|
|
|
+ for(uint i = 0; i < SUV_NUM; i++)
|
|
|
{
|
|
{
|
|
|
// if the var is not in the sProg then... bye
|
|
// if the var is not in the sProg then... bye
|
|
|
if(!shaderProg->uniVarExists(stdUniVarInfos[i].varName))
|
|
if(!shaderProg->uniVarExists(stdUniVarInfos[i].varName))
|
|
@@ -421,7 +423,7 @@ void Material::parseCustomShader(const PreprocDefines defines[], const boost::pr
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
source += "#define " + define + "\n";
|
|
source += "#define " + define + "\n";
|
|
|
- prefix.push_back(def->prefix);
|
|
|
|
|
|
|
+ prefix.push_back(def->prefix);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
std::sort(prefix.begin(), prefix.end());
|
|
std::sort(prefix.begin(), prefix.end());
|