hp-bar-the-dumb-way #22

Merged
PeaAshMeter merged 7 commits from hp-bar-the-dumb-way into main 2025-12-07 20:35:58 +03:00
5 changed files with 32 additions and 6 deletions
Showing only changes of commit f2169d333c - Show all commits

BIN
assets/masks/rrect32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
assets/masks/squircle.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@ -0,0 +1,8 @@
vec4 effect(vec4 color, Image tex, vec2 texCoord, vec2 screenCoord)
{
vec4 px = Texel(tex, texCoord);
if (px.a == 0.0) {
discard;
}
return vec4(1.0);
}

View File

@ -8,10 +8,10 @@ vec2 hash(vec2 p) {
vec4 effect(vec4 color, Image tex, vec2 uv, vec2 px) vec4 effect(vec4 color, Image tex, vec2 uv, vec2 px)
{ {
vec2 cell = floor(px / 2.0); vec2 cell = floor(px / 2.0); // тут можно размер зерна менять
float n = hash(cell).x; // 0..1 float n = hash(cell).x; // 0..1
float v = 0.9 + n * 0.2; // 0.9..1.0 float v = 0.9 + n * 0.1; // 0.9..1.0
return vec4(v, v, v, 1.0); return vec4(v, v, v, 1.0);
} }

View File

@ -160,8 +160,29 @@ end
local c = love.graphics.newCanvas(1280, 720) --- @TODO: выставлять канвасу правильный размер в зависимости от окна local c = love.graphics.newCanvas(1280, 720) --- @TODO: выставлять канвасу правильный размер в зависимости от окна
function skillRow:draw() function skillRow:draw()
love.graphics.setCanvas(c) love.graphics.setCanvas({ c, stencil = true })
love.graphics.clear() love.graphics.clear()
love.graphics.setColor(1, 1, 1)
-- сначала иконки скиллов
for _, skb in ipairs(self.children) do
skb:draw()
end
-- маска для вырезов под иконки
love.graphics.setShader(Tree.assets.files.shaders.alpha_mask)
love.graphics.stencil(function()
local mask = Tree.assets.files.masks.rrect32
local maskSize = mask:getWidth()
for _, skb in ipairs(self.children) do
love.graphics.draw(mask, skb.bounds.x, skb.bounds.y, 0,
skb.bounds.width / maskSize, skb.bounds.height / maskSize)
end
end, "replace", 1)
love.graphics.setShader()
-- дальше рисуем панель, перекрывая иконки
love.graphics.setStencilTest("less", 1)
-- шум -- шум
love.graphics.setShader(Tree.assets.files.shaders.soft_uniform_noise) love.graphics.setShader(Tree.assets.files.shaders.soft_uniform_noise)
love.graphics.rectangle("fill", self.bounds.x, self.bounds.y, self.bounds.width, self.bounds.height) love.graphics.rectangle("fill", self.bounds.x, self.bounds.y, self.bounds.width, self.bounds.height)
@ -177,9 +198,6 @@ function skillRow:draw()
self:drawBorder("outer") self:drawBorder("outer")
love.graphics.setColor(1, 1, 1) love.graphics.setColor(1, 1, 1)
for _, skb in ipairs(self.children) do
skb:draw()
end
love.graphics.setCanvas() love.graphics.setCanvas()