summaryrefslogtreecommitdiff
path: root/Source/Asura.Engine/Graphics/Shader.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Asura.Engine/Graphics/Shader.h')
-rw-r--r--Source/Asura.Engine/Graphics/Shader.h67
1 files changed, 67 insertions, 0 deletions
diff --git a/Source/Asura.Engine/Graphics/Shader.h b/Source/Asura.Engine/Graphics/Shader.h
new file mode 100644
index 0000000..c3c67ad
--- /dev/null
+++ b/Source/Asura.Engine/Graphics/Shader.h
@@ -0,0 +1,67 @@
+#ifndef __AE_SHADER_H__
+#define __AE_SHADER_H__
+
+#include "luax/luax.h"
+
+#include "FileSystem/Asset.h"
+#include "Containers/Map.h"
+#include "Containers/StringMap.hpp"
+#include "Object.h"
+#include "Color.h"
+#include "Manager.hpp"
+
+namespace AsuraEngine
+{
+ namespace Graphics
+ {
+
+ class Material;
+
+ ///
+ /// һshaderһڲʼ乲ijShaderuniformsͶݣֻuniforms location
+ ///
+ class Shader final : public Filesystem::Asset
+ {
+ public:
+
+ Shader();
+ ~Shader();
+
+ private:
+
+ friend class Material;
+
+ ///
+ /// shaderuniformsIDӳ䡣
+ ///
+ static Containers::StringMap<int> sUniformsID;
+
+ ///
+ /// uniformID
+ ///
+ static int GetUniformID(const Containers::String& name);
+
+ ///
+ /// ñ
+ /// vec2 Asura_Time xֵΪ뵱ǰʼʱ䣬yֵΪһ֡ʱ
+ /// vec2 Asura_RenderTargetSize RTĴСΪλ
+ /// Texture Asura_MainTexture
+ ///
+ void SetBuiltInUniforms();
+
+ ///
+ /// ӳuniforms IDlocation
+ ///
+ Containers::Map<int, int> mLocations;
+
+ };
+
+ class ShaderManager final : public Manager
+ {
+
+ };
+
+ }
+}
+
+#endif \ No newline at end of file