mirror of
https://github.com/litruv/PNGTuber-Plus.git
synced 2026-07-24 10:36:01 +10:00
@@ -1,23 +0,0 @@
|
||||
shader_type canvas_item;
|
||||
|
||||
uniform sampler2D mask_texture : source_color;
|
||||
uniform bool use_mask = false;
|
||||
uniform float mask_opacity : hint_range(0.0, 1.0) = 1.0;
|
||||
|
||||
void fragment() {
|
||||
// Get the original sprite color
|
||||
vec4 sprite_color = texture(TEXTURE, UV);
|
||||
|
||||
if (use_mask) {
|
||||
// Sample the mask texture
|
||||
vec4 mask_sample = texture(mask_texture, UV);
|
||||
|
||||
// Use the mask's alpha channel to determine visibility
|
||||
float mask_alpha = mask_sample.a * mask_opacity;
|
||||
|
||||
// Apply the mask by multiplying the sprite's alpha with the mask alpha
|
||||
sprite_color.a *= mask_alpha;
|
||||
}
|
||||
|
||||
COLOR = sprite_color;
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
uid://btd72itp0cy6b
|
||||
@@ -1,8 +1,17 @@
|
||||
shader_type canvas_item;
|
||||
|
||||
uniform vec4 outline_color : source_color = vec4(1.0, 0.0, 0.0, 0.3);
|
||||
uniform float speed;
|
||||
|
||||
uniform sampler2D backImg: repeat_enable;
|
||||
|
||||
uniform sampler2D palette;
|
||||
uniform float palette_speed = 0.1;
|
||||
|
||||
void fragment(){
|
||||
vec4 tex = texture(TEXTURE, UV);
|
||||
COLOR = vec4(outline_color.rgb, tex.a * outline_color.a);
|
||||
|
||||
vec2 scroll = vec2(1.0,0.0) * TIME * speed;
|
||||
vec4 tex = texture(TEXTURE, (UV));
|
||||
float palette_swap = mod(tex.r - TIME * palette_speed, 1.0);
|
||||
COLOR = vec4(texture(palette, vec2(palette_swap, 0)).rgb, tex.a);
|
||||
|
||||
}
|
||||
@@ -77,12 +77,6 @@ var ignoreBounce = false
|
||||
var frames = 1
|
||||
var animSpeed = 0
|
||||
|
||||
#Masking
|
||||
var mask_texture_path = ""
|
||||
var mask_texture = null
|
||||
var use_mask = false
|
||||
var mask_opacity = 1.0
|
||||
|
||||
var remadePolygon = false
|
||||
|
||||
var clipped = false
|
||||
@@ -125,9 +119,6 @@ func _ready():
|
||||
|
||||
sprite.texture = tex
|
||||
|
||||
# Initialize masking
|
||||
setupMasking()
|
||||
|
||||
var bitmap = BitMap.new()
|
||||
bitmap.create_from_image_alpha(imageData)
|
||||
|
||||
@@ -418,53 +409,3 @@ func visToggle(keys):
|
||||
|
||||
func makeVis():
|
||||
$WobbleOrigin/DragOrigin.visible = true
|
||||
|
||||
## Setup masking system
|
||||
func setupMasking():
|
||||
if use_mask and mask_texture_path != "":
|
||||
loadMaskTexture()
|
||||
updateMaskShader()
|
||||
|
||||
## Load mask texture from file path
|
||||
func loadMaskTexture():
|
||||
if mask_texture_path == "":
|
||||
return
|
||||
|
||||
var img = Image.new()
|
||||
var err = img.load(mask_texture_path)
|
||||
if err != OK:
|
||||
print_debug("Failed to load mask texture: " + mask_texture_path)
|
||||
return
|
||||
|
||||
mask_texture = ImageTexture.create_from_image(img)
|
||||
|
||||
## Apply or remove mask shader
|
||||
func updateMaskShader():
|
||||
if use_mask and mask_texture != null:
|
||||
# Create mask material with shader
|
||||
var mask_shader = load("res://ui_scenes/selectedSprite/mask.gdshader")
|
||||
var mask_material = ShaderMaterial.new()
|
||||
mask_material.shader = mask_shader
|
||||
mask_material.set_shader_parameter("mask_texture", mask_texture)
|
||||
mask_material.set_shader_parameter("use_mask", true)
|
||||
mask_material.set_shader_parameter("mask_opacity", mask_opacity)
|
||||
|
||||
sprite.material = mask_material
|
||||
else:
|
||||
# Remove mask material
|
||||
sprite.material = null
|
||||
|
||||
## Set mask texture from external source
|
||||
func setMaskTexture(texture_path: String, opacity: float = 1.0):
|
||||
mask_texture_path = texture_path
|
||||
mask_opacity = opacity
|
||||
use_mask = true
|
||||
loadMaskTexture()
|
||||
updateMaskShader()
|
||||
|
||||
## Remove masking
|
||||
func removeMask():
|
||||
use_mask = false
|
||||
mask_texture = null
|
||||
mask_texture_path = ""
|
||||
updateMaskShader()
|
||||
|
||||
Reference in New Issue
Block a user