diff options
Diffstat (limited to 'Source/Asura.Framework/scripts/graphics/shader.lua')
-rw-r--r-- | Source/Asura.Framework/scripts/graphics/shader.lua | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/Source/Asura.Framework/scripts/graphics/shader.lua b/Source/Asura.Framework/scripts/graphics/shader.lua index 728ab34..86ed8bb 100644 --- a/Source/Asura.Framework/scripts/graphics/shader.lua +++ b/Source/Asura.Framework/scripts/graphics/shader.lua @@ -1,10 +1,30 @@ AsuraEngine.Shader = AsuraEngine.Asset.Sub("Shader") +local helper = AsuraEngine.Framework.Require("graphics/shaderHelper") + local Shader = AsuraEngine.Shader -function Shader.Ctor(self, vert, frag) +function Shader.Ctor(self) + self.simShader = nil + self.uniforms = {} -- 映射uniform name到location +end + +--编译shader +function Shader.Load(self, vert, frag) + self.uniforms = {} self.simShader = AsuraEngine.SimShader.New(vert, frag) - self.uniforms = {} -- 映射uniform name到location + 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) |