temporary enshittification of the rendering

This commit is contained in:
PeaAshMeter 2025-12-28 05:16:01 +03:00
parent 0c1332afb3
commit 24cda32e81
3 changed files with 44 additions and 24 deletions

View File

@ -56,6 +56,27 @@ function sprite:draw()
function(map)
local ppm = Tree.level.camera.pixelsPerMeter
local position = map.displayedPosition + Vec3 { 0.5, 0.5 }
Tree.level.camera:detach()
love.graphics.push()
love.graphics.scale(ppm)
love.graphics.setCanvas(Tree.level.render.shadowLayer)
love.graphics.setColor(0, 0, 0, 0.5)
love.graphics.translate(position.x, position.y)
love.graphics.ellipse("fill", 0, 0, 0.2, 0.2 * math.cos(math.pi / 4))
love.graphics.rotate(math.pi / 4)
self.animationTable[self.state]:draw(Tree.assets.files.sprites.character[self.state],
0,
0, nil, 1 / ppm * self.side, 1.2 / ppm, 38, 47)
love.graphics.pop()
Tree.level.camera:attach()
love.graphics.setCanvas(Tree.level.render.spriteLayer)
love.graphics.setColor(1, 1, 1)
if Tree.level.selector.id == self.owner.id then
local texW, texH = Tree.assets.files.sprites.character[self.state]:getWidth(),
Tree.assets.files.sprites.character[self.state]:getHeight()
@ -64,21 +85,6 @@ function sprite:draw()
shader:send("time", love.timer:getTime())
love.graphics.setShader(shader)
end
love.graphics.setCanvas(Tree.level.render.shadowLayer)
love.graphics.setColor(0, 0, 0, 0.5)
love.graphics.ellipse("fill", position.x, position.y, 0.2, 0.2 * math.cos(math.pi / 4))
local mesh = makeGradientMesh(0.4, 1.5, { 0, 0, 0, 0.5 }, { 0, 0, 0, 0 })
love.graphics.push()
love.graphics.translate(position.x, position.y)
love.graphics.rotate(love.timer.getTime())
love.graphics.translate(-0.2, 0)
love.graphics.draw(mesh)
love.graphics.pop()
love.graphics.setCanvas(Tree.level.render.spriteLayer)
love.graphics.setColor(1, 1, 1)
self.animationTable[self.state]:draw(Tree.assets.files.sprites.character[self.state],
position.x,
position.y, nil, 1 / ppm * self.side, 1 / ppm, 38, 47)

View File

@ -48,6 +48,8 @@ function level:draw()
self.characterGrid.yOrderQueue:pop():draw()
end
self.camera:detach()
--self.render.shadowLayer:newImageData():encode("png", "shadowLayer.png")
-- os.exit(0)
self.render:draw()
end

View File

@ -19,33 +19,45 @@ end
local function applyBlur(input, radius)
local blurShader = Tree.assets.files.shaders.blur
local tmp = love.graphics.newCanvas(1280, 720)
local tmp1 = love.graphics.newCanvas(1280, 720)
local tmp2 = love.graphics.newCanvas(1280, 720)
-- Горизонтальный проход
blurShader:send("direction", { 1.0, 0.0 })
blurShader:send("radius", radius)
tmp:renderTo(function()
tmp1:renderTo(function()
love.graphics.setShader(blurShader)
love.graphics.draw(input)
love.graphics.setShader()
end)
-- Вертикальный проход
tmp2:renderTo(
function()
love.graphics.setShader(blurShader)
blurShader:send("direction", { 0.0, 1.0 })
love.graphics.draw(tmp)
love.graphics.draw(tmp1)
love.graphics.setShader()
end
)
return tmp2
end
function render:draw()
-- пол -> тени -> спрайты -> оверлей
love.graphics.draw(self.floorLayer)
love.graphics.push()
applyBlur(self.shadowLayer, 10)
-- love.graphics.draw(self.shadowLayer)
love.graphics.setShader()
local blurred = applyBlur(self.shadowLayer, 2)
local wc, hc = love.graphics.getWidth() / 2, love.graphics.getHeight() / 2
love.graphics.translate(wc, hc)
love.graphics.scale(Tree.level.camera.scale, Tree.level.camera.scale)
love.graphics.translate(-Tree.level.camera.position.x * Tree.level.camera.pixelsPerMeter,
-Tree.level.camera.position.y * Tree.level.camera.pixelsPerMeter)
love.graphics.draw(blurred)
love.graphics.pop()
love.graphics.draw(self.spriteLayer)
love.graphics.draw(self.overlayLayer)