diff options
Diffstat (limited to 'source/modules/asura-core/graphics/shader.h')
-rw-r--r-- | source/modules/asura-core/graphics/shader.h | 98 |
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; - + }; } |