summaryrefslogtreecommitdiff
path: root/source/modules/asura-core/graphics/shader.h
diff options
context:
space:
mode:
Diffstat (limited to 'source/modules/asura-core/graphics/shader.h')
-rw-r--r--source/modules/asura-core/graphics/shader.h98
1 files changed, 8 insertions, 90 deletions
diff --git a/source/modules/asura-core/graphics/shader.h b/source/modules/asura-core/graphics/shader.h
index 9bb745e..b7bc70d 100644
--- a/source/modules/asura-core/graphics/shader.h
+++ b/source/modules/asura-core/graphics/shader.h
@@ -44,25 +44,15 @@ namespace AsuraEngine
void OnUse();
void OnUnuse();
-
- ///
- /// Disable֮ǰSetAttribXXXattributesÿdrawcallʱᱻglá
- ///
- void DisableAttribArraies();
-
+
///
/// öԣЩֵframeworkrenderer汻ãImageMesh2DЩԴ
/// normalizedΪtrueݻڸbuffer¹һ255ɫһ
/// 0~1
///
- void SetAttribPosition(VertexBuffer* vbo, uint offseti = 0, uint stridei = 0,bool normalized = false);
- void SetAttribTangent(VertexBuffer* vbo, uint offseti = 0, uint stridei = 0,bool normalized = false);
- void SetAttribNormal(VertexBuffer* vbo, uint offseti = 0, uint stridei = 0,bool normalized = false);
- void SetAttribColor(VertexBuffer* vbo, uint offseti = 0, uint stridei = 0,bool normalized = false);
- void SetAttribTexcoord0(VertexBuffer* vbo, uint offseti = 0, uint stridei = 0,bool normalized = false);
- void SetAttribTexcoord1(VertexBuffer* vbo, uint offseti = 0, uint stridei = 0,bool normalized = false);
- void SetAttribTexcoord2(VertexBuffer* vbo, uint offseti = 0, uint stridei = 0,bool normalized = false);
- void SetAttribTexcoord3(VertexBuffer* vbo, uint offseti = 0, uint stridei = 0,bool normalized = false);
+ void SetAttribute(int loc, VertexBuffer* vbo, uint offseti = 0, uint stridei = 0, bool normalized = false);
+ int GetAttributeLocation(const std::string& attribute);
+ void DisableAttribute(int loc);
///
/// uniform
@@ -77,11 +67,6 @@ namespace AsuraEngine
void SetUniformMatrix44(uint loc, const Math::Matrix44& mat44);
bool SetUniformTexture(uint loc, const Texture& texture);
- ///
- /// \uniform
- ///
- void SetBuiltInUniforms();
-
float GetUniformFloat(uint loc);
AEMath::Vector2f GetUniformVector2(uint loc);
AEMath::Vector3f GetUniformVector3(uint loc);
@@ -110,14 +95,9 @@ namespace AsuraEngine
LUAX_DECL_METHOD(_SetUniformVector4);
LUAX_DECL_METHOD(_SetUniformColor);
// vertex attributes
- LUAX_DECL_METHOD(_SetAttribPosition);
- LUAX_DECL_METHOD(_SetAttribTangent);
- LUAX_DECL_METHOD(_SetAttribNormal);
- LUAX_DECL_METHOD(_SetAttribColor);
- LUAX_DECL_METHOD(_SetAttribTexcoord0);
- LUAX_DECL_METHOD(_SetAttribTexcoord1);
- LUAX_DECL_METHOD(_SetAttribTexcoord2);
- LUAX_DECL_METHOD(_SetAttribTexcoord3);
+ LUAX_DECL_METHOD(_GetAttributeLocation);
+ LUAX_DECL_METHOD(_SetAttribute);
+ LUAX_DECL_METHOD(_DisableAttribute);
// uniform
LUAX_DECL_METHOD(_SetBuiltInUniforms);
@@ -125,73 +105,11 @@ namespace AsuraEngine
std::string GetProgramWarnings();
std::string GetShaderWarnings(GLuint shader);
- void UpdateSemanticsLocations();
-
- ///
- /// AsuraShader壬Ժuniformframeworkлshaderٴηװ
- /// ν壬ָshaderԶıⲿ򽻻ʱҪṩЩֵ
- /// ĻҪ
- ///
- enum Semantics
- {
- // MVP
- SEMANTICS_UNIFORM_MODEL_MATRIX = 0,
- SEMANTICS_UNIFORM_VIEW_MATRIX,
- SEMANTICS_UNIFORM_PROJECTION_MATRIX,
- // ʱɫ
- SEMANTICS_UNIFORM_DRAW_COLOR,
- //
- SEMANTICS_ATTRIBUTE_POSITION,
- //
- SEMANTICS_ATTRIBUTE_TANGENT,
- //
- SEMANTICS_ATTRIBUTE_NORMAL,
- // UV
- SEMANTICS_ATTRIBUTE_TEXCOORD0,
- SEMANTICS_ATTRIBUTE_TEXCOORD1,
- SEMANTICS_ATTRIBUTE_TEXCOORD2,
- SEMANTICS_ATTRIBUTE_TEXCOORD3,
- // ɫ
- SEMANTICS_ATTRIBUTE_COLOR,
-
- SEMANTICS_COUNT
- };
-
- enum Attribute
- {
- ATTRIBUTE_POSITION = 1,
- ATTRIBUTE_TANGENT = 1 << 1,
- ATTRIBUTE_NORMAL = 1 << 2,
- ATTRIBUTE_COLOR = 1 << 3,
- ATTRIBUTE_TEXCOORD0 = 1 << 4,
- ATTRIBUTE_TEXCOORD1 = 1 << 5,
- ATTRIBUTE_TEXCOORD2 = 1 << 6,
- ATTRIBUTE_TEXCOORD3 = 1 << 7,
- };
-
- ///
- /// Asura shader ַͳһ
- ///
- static const char* SemanticsName[SEMANTICS_COUNT];
GLuint mProgram;
GLuint mVertShader;
GLuint mFragShader;
- GLuint mDrawColor;
-
- //
- GLint mMVP[3];
- GLint mPosition;
- GLint mTangent;
- GLint mNormal;
- GLint mColor;
- GLint mTexcoord0;
- GLint mTexcoord1;
- GLint mTexcoord2;
- GLint mTexcoord3;
-
- int mEnabledAttributes;
-
+
};
}