took care of default polygon normal map problems show up at edges

This commit is contained in:
Tim Anema 2014-12-03 08:31:09 -05:00
parent 3f62fde726
commit 5cbca9f63c
3 changed files with 11 additions and 2 deletions

View File

@ -1,6 +1,5 @@
:todoing :todoing
-make sure all draw calls check if the object is within range -make sure all draw calls check if the object is within range
-refactor rectablges to be polygons to reduce code
-optimize shadow body calculations and drawing methods -optimize shadow body calculations and drawing methods
# light_world.lua # light_world.lua

View File

@ -31,7 +31,12 @@ function love.load()
-- create shadow bodys -- create shadow bodys
circleTest = lightWorld:newCircle(256, 256, 16) circleTest = lightWorld:newCircle(256, 256, 16)
rectangleTest = lightWorld:newRectangle(512, 512, 64, 64) rectangleTest = lightWorld:newRectangle(512, 512, 64, 64)
polygonTest = lightWorld:newPolygon(100, 200, 120, 200, 150, 250, 100, 250) local px, py, pw, ph = 100, 200, 20, 50
polygonTest = lightWorld:newPolygon(
px, py,
px+pw, py,
px+pw, py+ph,
px-50, py+ph)
imageTest = lightWorld:newImage(image, 64, 64, 24, 6) imageTest = lightWorld:newImage(image, 64, 64, 24, 6)
imageTest:setNormalMap(image_normal) imageTest:setNormalMap(image_normal)
@ -160,6 +165,7 @@ function love.draw()
end) end)
love.graphics.pop() love.graphics.pop()
love.graphics.setBlendMode("alpha") love.graphics.setBlendMode("alpha")
love.graphics.setColor(0, 0, 0, 191) love.graphics.setColor(0, 0, 0, 191)
love.graphics.rectangle("fill", 0, 0, love.graphics.getWidth(), 24) love.graphics.rectangle("fill", 0, 0, love.graphics.getWidth(), 24)

View File

@ -244,6 +244,7 @@ function body:setPoints(...)
self.height = self.height - self.y self.height = self.height - self.y
for i = 1, #points, 2 do for i = 1, #points, 2 do
points[i], points[i+1] = points[i] - self.x, points[i+1] - self.y points[i], points[i+1] = points[i] - self.x, points[i+1] - self.y
print(points[i], points[i+1])
end end
poly_canvas = love.graphics.newCanvas(self.width, self.height) poly_canvas = love.graphics.newCanvas(self.width, self.height)
@ -256,6 +257,9 @@ function body:setPoints(...)
self.ix = self.imgWidth * 0.5 self.ix = self.imgWidth * 0.5
self.iy = self.imgHeight * 0.5 self.iy = self.imgHeight * 0.5
self:generateNormalMapFlat("top") self:generateNormalMapFlat("top")
--wrapping with polygon normals causes edges to show
--also we do not need wrapping for this default normal map
self.normal:setWrap("clamp", "clamp")
self.nx, self.ny = 0, 0 self.nx, self.ny = 0, 0
self:setShadowType('polygon', ...) self:setShadowType('polygon', ...)