hp-bar-the-dumb-way #22
24
assets/shaders/reveal.glsl
Normal file
24
assets/shaders/reveal.glsl
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
extern float t;
|
||||||
|
extern float blockSize;
|
||||||
|
|
||||||
|
// hash-функция для шума по целочисленным координатам блока
|
||||||
|
float hash(vec2 p) {
|
||||||
|
p = vec2(
|
||||||
|
dot(p, vec2(127.1, 311.7)),
|
||||||
|
dot(p, vec2(269.5, 183.3))
|
||||||
|
);
|
||||||
|
return fract(sin(p.x + p.y) * 43758.5453123);
|
||||||
|
}
|
||||||
|
|
||||||
|
vec4 effect(vec4 color, Image tex, vec2 texCoord, vec2 screenCoord)
|
||||||
|
{
|
||||||
|
float blockSize = 4.0;
|
||||||
|
|
||||||
|
vec2 cell = floor(screenCoord / blockSize);
|
||||||
|
float n = hash(cell); // [0..1]
|
||||||
|
float mask = 1.0 - step(t, n);
|
||||||
|
|
||||||
|
vec4 base = Texel(tex, texCoord) * color;
|
||||||
|
base.a *= mask;
|
||||||
|
return base;
|
||||||
|
}
|
||||||
@ -209,6 +209,16 @@ function characterPanel:update(dt)
|
|||||||
width = self.bars.bounds.width,
|
width = self.bars.bounds.width,
|
||||||
height = self.bars.bounds.height + self.skillRow.bounds.height
|
height = self.bars.bounds.height + self.skillRow.bounds.height
|
||||||
}
|
}
|
||||||
|
|
||||||
|
--- анимация появления
|
||||||
|
local alpha = 1
|
||||||
|
if self.state == "show" then
|
||||||
|
alpha = self.animationNode:getValue()
|
||||||
|
elseif self.state == "hide" then
|
||||||
|
alpha = 1 - self.animationNode:getValue()
|
||||||
|
end
|
||||||
|
local revealShader = Tree.assets.files.shaders.reveal
|
||||||
|
revealShader:send("t", alpha)
|
||||||
end
|
end
|
||||||
|
|
||||||
function characterPanel:draw()
|
function characterPanel:draw()
|
||||||
@ -219,17 +229,13 @@ function characterPanel:draw()
|
|||||||
|
|
||||||
self:drawBorder("outer")
|
self:drawBorder("outer")
|
||||||
|
|
||||||
local alpha = 1
|
--- рисуем текстуру шейдером появления
|
||||||
if self.state == "show" then
|
|
||||||
alpha = self.animationNode:getValue()
|
|
||||||
elseif self.state == "hide" then
|
|
||||||
alpha = 1 - self.animationNode:getValue()
|
|
||||||
end
|
|
||||||
|
|
||||||
love.graphics.setCanvas()
|
love.graphics.setCanvas()
|
||||||
love.graphics.setColor(1, 1, 1, alpha)
|
love.graphics.setShader(Tree.assets.files.shaders.reveal)
|
||||||
|
love.graphics.setColor(1, 1, 1, 1)
|
||||||
love.graphics.draw(c)
|
love.graphics.draw(c)
|
||||||
love.graphics.setColor(1, 1, 1)
|
love.graphics.setColor(1, 1, 1)
|
||||||
|
love.graphics.setShader()
|
||||||
end
|
end
|
||||||
|
|
||||||
-----------------------------------
|
-----------------------------------
|
||||||
|
|||||||
@ -1,6 +1,4 @@
|
|||||||
local icons = require("lib.utils.sprite_atlas").load(Tree.assets.files.dev_icons)
|
local icons = require("lib.utils.sprite_atlas").load(Tree.assets.files.dev_icons)
|
||||||
local easing = require "lib.utils.easing"
|
|
||||||
local AnimationNode = require "lib.animation_node"
|
|
||||||
local Element = require "lib.simple_ui.element"
|
local Element = require "lib.simple_ui.element"
|
||||||
local Rect = require "lib.simple_ui.rect"
|
local Rect = require "lib.simple_ui.rect"
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user