diff --git a/game/engine/Entity.lua b/game/engine/Entity.lua index f915fd38cffcfa058c492e42dad6ce6519b519b1..dff7b84f169d46aa7481428a175b7c4481b224a7 100644 --- a/game/engine/Entity.lua +++ b/game/engine/Entity.lua @@ -195,7 +195,8 @@ function _M:makeMapObject(tiles, idx) -- Setup shader if tiles.use_images and core.shader.active() and self.shader then - self._mo:shader(Shader.new(self.shader, self.shader_args).shad) + local shad = Shader.new(self.shader, self.shader_args) + if shad.shad then self._mo:shader(shad.shad) end end return self._mo, self.z diff --git a/game/engine/Shader.lua b/game/engine/Shader.lua index 106fe37d28c3309eb7e7dcc9aeccf6a6b3248248..4ca66b1b07da767784cae1c307c4a403ca60574d 100644 --- a/game/engine/Shader.lua +++ b/game/engine/Shader.lua @@ -101,7 +101,7 @@ function _M:createProgram(def) local shad = core.shader.newProgram() if def.vert then shad:attach(self:getVertex(def.vert)) end if def.frag then shad:attach(self:getFragment(def.frag)) end - shad:compile() + if not shad:compile() then return nil end return shad end @@ -119,9 +119,10 @@ function _M:loaded() _M.progs[self.totalname] = self:createProgram(def) self.shad = _M.progs[self.totalname] - - for k, v in pairs(def.args) do - self:setUniform(k, v) + if self.shad then + for k, v in pairs(def.args) do + self:setUniform(k, v) + end end end end diff --git a/src/shaders.c b/src/shaders.c index a913a560812380e858bc5d890e544f702430331c..0ece12d5fa0b87025a3ff085a7b325c168f9cab9 100644 --- a/src/shaders.c +++ b/src/shaders.c @@ -140,7 +140,8 @@ static int program_compile(lua_State *L) } } #endif - return 0; + lua_pushboolean(L, TRUE); + return 1; } static int program_attach(lua_State *L)