diff options
author | chai <chaifix@163.com> | 2019-02-26 08:48:54 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2019-02-26 08:48:54 +0800 |
commit | 3f457498b9c39d40a16a0ec6328880854f8cf4de (patch) | |
tree | 061ef9974b4da4c472909a65e6ebd10e8156c1b3 /Source/Asura.Framework/scripts/graphics/shader.lua | |
parent | 684f71790401727cc45f4dad1822ddae46305072 (diff) |
*misc
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) |