[SOLVED] How to mask/clipping a GUI?

I did as you said but it gave this result GIF, now no matter how i change the mask_position nothing changes.
dmengine_jIKvWr70um

My goal is for the mask to always stay in one position on the screen and the waves to move up and down and slightly left and right.

For now, I implemented the moving heart mask down, and the waves up with the same speed, this way I make the “standing effect” of the mask in a static position:

function update(self, dt)
local speed_y = 5
local speed_x = 10
self.mask_postion.x = self.mask_postion.x - 1/speed_x * dt
self.mask_postion.y = self.mask_postion.y - 1/speed_y * dt -- move down
msg.post("@render:", "set_mask_position", { position = self.mask_postion })

self.current_pos.x = self.current_pos.x + 128/speed_x * dt
self.current_pos.y = self.current_pos.y + 128/speed_y * dt -- move up
if self.current_pos.y >= self.origin_pos.y - 30 then
	self.current_pos.x = self.origin_pos.x
	self.current_pos.y = self.origin_pos.y - 128
	self.mask_postion.x = 0.35
	self.mask_postion.y = 1
end
gui.set_position(self.wave_1, self.current_pos)

end