hp-bar-the-dumb-way #22
BIN
assets/masks/rrect32.png
Normal file
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
BIN
assets/masks/squircle.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.7 KiB |
8
assets/shaders/alpha_mask.glsl
Normal file
8
assets/shaders/alpha_mask.glsl
Normal 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);
|
||||
}
|
||||
@ -8,10 +8,10 @@ vec2 hash(vec2 p) {
|
||||
|
||||
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 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);
|
||||
}
|
||||
|
||||
@ -160,8 +160,29 @@ end
|
||||
local c = love.graphics.newCanvas(1280, 720) --- @TODO: выставлять канвасу правильный размер в зависимости от окна
|
||||
|
||||
function skillRow:draw()
|
||||
love.graphics.setCanvas(c)
|
||||
love.graphics.setCanvas({ c, stencil = true })
|
||||
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.rectangle("fill", self.bounds.x, self.bounds.y, self.bounds.width, self.bounds.height)
|
||||
@ -177,9 +198,6 @@ function skillRow:draw()
|
||||
self:drawBorder("outer")
|
||||
|
||||
love.graphics.setColor(1, 1, 1)
|
||||
for _, skb in ipairs(self.children) do
|
||||
skb:draw()
|
||||
end
|
||||
|
||||
love.graphics.setCanvas()
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user