34 lines
794 B
Text
34 lines
794 B
Text
|
shader_type canvas_item;
|
||
|
render_mode blend_mix,unshaded;
|
||
|
|
||
|
uniform vec4 effect_color : hint_color = vec4(1.0, 1.0, 1.0, 1.0);
|
||
|
uniform float effect_width : hint_range(0, 0.5) = 0.1;
|
||
|
uniform float effect_offset : hint_range(0, 0.5) = 0;
|
||
|
|
||
|
void fragment() {
|
||
|
vec2 uv = UV;
|
||
|
// Apply offset
|
||
|
if (uv.x < 0.5) {
|
||
|
uv.x -= effect_offset;
|
||
|
} else {
|
||
|
uv.x += effect_offset;
|
||
|
}
|
||
|
if (uv.y < 0.5) {
|
||
|
uv.y -= effect_offset;
|
||
|
} else {
|
||
|
uv.y += effect_offset;
|
||
|
}
|
||
|
uv = clamp(uv, 0, 1);
|
||
|
|
||
|
COLOR = effect_color;
|
||
|
if (uv.x < effect_width) {
|
||
|
COLOR.a *= uv.x / effect_width;
|
||
|
} else if (uv.x > 1.0-effect_width) {
|
||
|
COLOR.a *= ((1.0 - uv.x) / effect_width);
|
||
|
}
|
||
|
if (uv.y < effect_width) {
|
||
|
COLOR.a *= uv.y / effect_width;
|
||
|
} else if (uv.y > 1.0-effect_width) {
|
||
|
COLOR.a *= ((1.0 - uv.y) / effect_width);
|
||
|
}
|
||
|
}
|