summaryrefslogtreecommitdiff
path: root/Source/Asura.Framework/scripts/graphics/shader.lua
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2019-02-26 08:48:54 +0800
committerchai <chaifix@163.com>2019-02-26 08:48:54 +0800
commit3f457498b9c39d40a16a0ec6328880854f8cf4de (patch)
tree061ef9974b4da4c472909a65e6ebd10e8156c1b3 /Source/Asura.Framework/scripts/graphics/shader.lua
parent684f71790401727cc45f4dad1822ddae46305072 (diff)
*misc
Diffstat (limited to 'Source/Asura.Framework/scripts/graphics/shader.lua')
-rw-r--r--Source/Asura.Framework/scripts/graphics/shader.lua24
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)