diff options
author | chai <chaifix@163.com> | 2019-03-29 22:51:04 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2019-03-29 22:51:04 +0800 |
commit | c302f5ae5f9e30a28e487e8a764d9cc31546bbea (patch) | |
tree | 7f18bedeece950600336ea7ced7c52c468552c98 /source/modules/asura-framework/scripts/graphics/shader.lua | |
parent | 157530b8b6e11efc5573d5a0db8987a440197aa1 (diff) |
*rename
Diffstat (limited to 'source/modules/asura-framework/scripts/graphics/shader.lua')
-rw-r--r-- | source/modules/asura-framework/scripts/graphics/shader.lua | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/source/modules/asura-framework/scripts/graphics/shader.lua b/source/modules/asura-framework/scripts/graphics/shader.lua new file mode 100644 index 0000000..c411619 --- /dev/null +++ b/source/modules/asura-framework/scripts/graphics/shader.lua @@ -0,0 +1,75 @@ +AsuraEngine.Shader = AsuraEngine.Asset.Extend("Shader") + +local helper = AsuraEngine.Framework.Require("graphics/shaderHelper") + +local Shader = AsuraEngine.Shader + +function Shader.Ctor(self) + self.simShader = nil + self.uniforms = {} -- 映射uniform name到location +end + +--编译shader +function Shader.Load(self, vert, frag) + self.uniforms = {} + if self.simShader == nil then + self.simShader = AsuraEngine.SimShader.New(vert, frag) + else + self.simShader:Load(vert, frag) + end + if self.simShader == nil then + --shader编译错误 + return + end + --在编译的时候就获得所有的uniform和loc + local uniforms = helper.GetUniforms(vert, frag) + if uniforms == nil then + return + end + for _, uniform in uniforms do + self.uniforms[uniform] = self.simShader:GetUniformLocation(uniform) + end +end + +function Shader.GetUniformLocation(self, name) + if self.uniforms then + local id = self.uniforms[name] + return id + end + return 0 +end + +function Shader.SendVec2(self, name, vec2) + local id = self:GetUniformLocation(name) + self.simShader:SendUniformVector2(name, vec2) +end + +function Shader.SendVec3(self, name, vec3) + +end + +function Shader.SendVec4(self, name, vec4) + +end + +function Shader.SendTexture(self, name, tex) + +end + +function Shader.SendFloat(self, name, number) + +end + +function Shader.SendInteger(self, name, integer) + +end + +function Shader.SendColor(self, name, color) + +end + +function Shader.SendMat44(self, name, mat44) + +end + +return Shader
\ No newline at end of file |