Mercurial > love-experiments
diff src/scripts/graphics.lua @ 1229:bd006b04a724
Better boolean shader extern support
| author | Alexander Szpakowski <amaranth72@gmail.com> |
|---|---|
| date | Fri, 11 Jan 2013 00:47:15 -0400 |
| parents | 41deac20fe68 |
| children | 1cb8b929f662 |
line wrap: on
line diff
--- a/src/scripts/graphics.lua Fri Jan 11 00:21:28 2013 -0400 +++ b/src/scripts/graphics.lua Fri Jan 11 00:47:15 2013 -0400 @@ -1441,22 +1441,21 @@ -- automagic uniform setter local function shadereffect_dispatch_send(self, name, value, ...) local valuetype = type(value) - if valuetype == "number" then -- scalar + if valuetype == "number" or valuetype == "boolean" then -- scalar self:sendFloat(name, value, ...) elseif valuetype == "userdata" and value:typeOf("Image") then self:sendImage(name, value) elseif valuetype == "userdata" and value:typeOf("Canvas") then self:sendCanvas(name, value) elseif valuetype == "table" then -- vector or matrix - if type(value[1]) == "number" then + valuetype = type(value[1]) + if valuetype == "number" or valuetype == "boolean" then self:sendFloat(name, value, ...) - elseif type(value[1]) == "table" then + elseif valuetype == "table" then self:sendMatrix(name, flattenMatrices(value, ...)) else - error("Cannot send value (unsupported type: {"..type(value[1]).."}).") + error("Cannot send value (unsupported type: {"..valuetype.."}).") end - elseif valuetype == "boolean" then - self:sendFloat(name, value and 1 or 0) else if valuetype == "userdata" and value.type then valuetype = value.type end error("Cannot send value (unsupported type: "..valuetype..").") @@ -1480,6 +1479,7 @@ local effect = love.graphics.newShaderEffect(vertcode, fragcode) local meta = getmetatable(effect) meta.send = shadereffect_dispatch_send + meta.sendBoolean = meta.sendFloat return effect end
