summaryrefslogtreecommitdiff
path: root/source/modules/asura-core/graphics/shader.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/modules/asura-core/graphics/shader.cpp')
-rw-r--r--source/modules/asura-core/graphics/shader.cpp37
1 files changed, 28 insertions, 9 deletions
diff --git a/source/modules/asura-core/graphics/shader.cpp b/source/modules/asura-core/graphics/shader.cpp
index 662ce5e..0d92c60 100644
--- a/source/modules/asura-core/graphics/shader.cpp
+++ b/source/modules/asura-core/graphics/shader.cpp
@@ -15,10 +15,20 @@ namespace AsuraEngine
///
static int _texture_unit = 0;
- const char* Shader::ASLSemantics[] = {
- "asura_model_matrix", // BUILTIN_UNIFORM_MODEL_MATRIX
- "asura_view_matrix", // BUILTIN_UNIFORM_VIEW_MATRIX
- "asura_projection_matrix", // BUILTIN_UNIFORM_PROJECTION_MATRIX
+ const char* Shader::SemanticsName[] = {
+ // uniforms
+ "asura_model_matrix",
+ "asura_view_matrix",
+ "asura_projection_matrix",
+ // attributes
+ "asura_position",
+ "asura_tangent",
+ "asura_normal",
+ "asura_texcoord0",
+ "asura_texcoord1",
+ "asura_texcoord2",
+ "asura_texcoord3",
+ "asura_color"
};
Shader::Shader()
@@ -98,9 +108,18 @@ namespace AsuraEngine
}
// mvplocation
- mMVP[MATRIX_MODE_MODEL] = glGetUniformLocation(mProgram, ASLSemantics[BUILTIN_UNIFORM_MODEL_MATRIX]);
- mMVP[MATRIX_MODE_VIEW] = glGetUniformLocation(mProgram, ASLSemantics[BUILTIN_UNIFORM_VIEW_MATRIX]);
- mMVP[MATRIX_MODE_PROJECTION] = glGetUniformLocation(mProgram, ASLSemantics[BUILTIN_UNIFORM_PROJECTION_MATRIX]);
+ mMVP[MATRIX_MODE_MODEL] = glGetUniformLocation(mProgram, SemanticsName[SEMANTICS_UNIFORM_MODEL_MATRIX]);
+ mMVP[MATRIX_MODE_VIEW] = glGetUniformLocation(mProgram, SemanticsName[SEMANTICS_UNIFORM_VIEW_MATRIX]);
+ mMVP[MATRIX_MODE_PROJECTION] = glGetUniformLocation(mProgram, SemanticsName[SEMANTICS_UNIFORM_PROJECTION_MATRIX]);
+
+ mPosition = glGetAttribLocation(mProgram, SemanticsName[SEMANTICS_ATTRIBUTE_POSITION]);
+ mTangent = glGetAttribLocation(mProgram, SemanticsName[SEMANTICS_ATTRIBUTE_TANGENT]);
+ mNormal = glGetAttribLocation(mProgram, SemanticsName[SEMANTICS_ATTRIBUTE_NORMAL]);
+ mTexcoord0 = glGetAttribLocation(mProgram, SemanticsName[SEMANTICS_ATTRIBUTE_TEXCOORD0]);
+ mTexcoord1 = glGetAttribLocation(mProgram, SemanticsName[SEMANTICS_ATTRIBUTE_TEXCOORD1]);
+ mTexcoord2 = glGetAttribLocation(mProgram, SemanticsName[SEMANTICS_ATTRIBUTE_TEXCOORD2]);
+ mTexcoord3 = glGetAttribLocation(mProgram, SemanticsName[SEMANTICS_ATTRIBUTE_TEXCOORD3]);
+ mColor = glGetAttribLocation(mProgram, SemanticsName[SEMANTICS_ATTRIBUTE_COLOR]);
return true;
}
@@ -115,13 +134,13 @@ namespace AsuraEngine
{
_texture_unit = 0;
}
-
+/*
int Shader::GetAttributeLocation(const std::string& name)
{
GLint loc = glGetAttribLocation(mProgram, name.c_str());
return loc;
}
-
+*/
uint Shader::GetUniformLocation(const std::string& uniform)
{
GLint loc = glGetUniformLocation(mProgram, uniform.c_str());