-- Original xXxMoNkEyMaNxXx -- fork mieki256 --[[ Complete API---- This was made to be a module, PLEASE USE IT AS A MODULE .cw=false -Counter clockwise vertex order starting at top left. .cw=true -Clockwise vertex order starting at top left. .preload(loadup): -loadup==true sets pixel effect to polygon texturer, -loadup==false clears any pixel effect. *NOTE: preload(false) must be done to draw blank polygons after textured ones. .setRepeat(origin,size): -Makes the image repeat every 'size' starting at 'origin'. -The default is origin={0,0},size={1,1}. .quad(image,v1,v2,v3,v4) - Draws a polygon. -if 'image' is nil, the function will prepare to make it blank. .quad(v1,v2,v3,v4) - draws a polygon with no image. .fast(image,v1,v2,v3,v4) - draws a polygon with 'image' on it. -slightly(!!!) faster than quad. -Must include an image. -Must call .preload(true) beforehand. Info: Vertices are in the form {x,y}. Vertices go clockwise from the top left. v1---v2 | img | v4---v3 --]] Perspective = {} Perspective.glsl = love.graphics.newShader("shader.fs") Perspective.glsl:send("p0", {0, 0}) Perspective.glsl:send("rep", {1, 1}) Perspective.cw = true -- clockwis Perspective.preload = function(self, loadup) if loadup then love.graphics.setShader(self.glsl) else love.graphics.setShader() end end Perspective.setRepeat = function(self, origin, size) self.glsl:send("p0", origin) self.glsl:send("rep", size) end Perspective.fast = function(self, img, v1, v2, v3, v4) self.glsl:send("img", img) self.glsl:send("v1", v2) self.glsl:send("v2", v3) self.glsl:send("v3", v4) self.glsl:send("v4", v1) local v = {v1[1], v1[2], v2[1], v2[2], v3[1], v3[2], v4[1], v4[2]} love.graphics.polygon("fill", v) end Perspective.quad = function(self, img, v1, v2, v3, v4) if img and v4 then love.graphics.setShader(self.glsl) self.glsl:send("img", img) if self.cw then self.glsl:send("v1", v2) self.glsl:send("v2", v3) self.glsl:send("v3", v4) self.glsl:send("v4", v1) else self.glsl:send("v1", v2) self.glsl:send("v2", v1) self.glsl:send("v3", v4) self.glsl:send("v4", v3) end else love.graphics.setShader() end if v4 then love.graphics.polygon("fill", v1[1], v1[2], v2[1], v2[2], v3[1], v3[2], v4[1], v4[2]) else -- img acts as a vertex love.graphics.polygon("fill", img[1], img[2], v1[1], v1[2], v2[1], v2[2], v3[1], v3[2]) end love.graphics.setShader() end return Perspective