add whistle to train
This commit is contained in:
57
core/transition.gdshader
Normal file
57
core/transition.gdshader
Normal file
@@ -0,0 +1,57 @@
|
||||
shader_type canvas_item;
|
||||
|
||||
uniform vec4 base_color : source_color;
|
||||
uniform vec2 node_resolution;
|
||||
|
||||
uniform float factor : hint_range(0.0, 1.0, 0.01) = 0.54;
|
||||
uniform float width = 0.4;
|
||||
|
||||
group_uniforms gradient;
|
||||
uniform sampler2D gradient_texture;
|
||||
uniform bool gradient_fixed = false;
|
||||
|
||||
group_uniforms shape;
|
||||
uniform sampler2D shape_texture;
|
||||
uniform float shape_tiling = 32.0;
|
||||
uniform float shape_rotation = 0.0;
|
||||
uniform vec2 shape_scroll = vec2(0.0);
|
||||
uniform float shape_feathering : hint_range(0.0, 1.0, 0.01) = 0.00;
|
||||
uniform float shape_treshold : hint_range(0.0, 2.0, 0.01) = 1.0;
|
||||
|
||||
float gradient(vec2 uv, vec2 fixed_uv, bool fixed){
|
||||
float value = 0.0;
|
||||
if(fixed){
|
||||
value = texture(gradient_texture, fixed_uv).r;
|
||||
} else {
|
||||
value = texture(gradient_texture, uv).r;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
vec2 rotate(vec2 uv, vec2 pivot, float angle)
|
||||
{
|
||||
mat2 rotation = mat2(vec2(sin(angle), -cos(angle)),
|
||||
vec2(cos(angle), sin(angle)));
|
||||
uv -= pivot;
|
||||
uv = uv * rotation;
|
||||
uv += pivot;
|
||||
return uv;
|
||||
}
|
||||
|
||||
void fragment() {
|
||||
float progress = mix(-width, 1.0, factor);
|
||||
float aspect = node_resolution.y / node_resolution.x;
|
||||
|
||||
vec2 aspect_uv = ((UV-vec2(0.0,0.5)) * vec2(1.0, aspect))+vec2(0.0,0.5);
|
||||
|
||||
float value = clamp((gradient(UV, aspect_uv, gradient_fixed) - progress) / (width), 0.0, 1.0);
|
||||
|
||||
vec2 tiled_uv = rotate(mod((aspect_uv + vec2(TIME)*shape_scroll) * shape_tiling, 1.0), vec2(0.5), radians(shape_rotation));
|
||||
float shape_value = 1.0 - texture(shape_texture, tiled_uv).r;
|
||||
|
||||
shape_value = mix(shape_feathering * 0.5, 1.0 - shape_feathering * 0.5, shape_value);
|
||||
float shaped_gradient = smoothstep(value - (shape_feathering * 0.5), value + (shape_feathering * 0.5), shape_treshold - shape_value);
|
||||
|
||||
COLOR.rgb = base_color.rgb;
|
||||
COLOR.a = shaped_gradient;
|
||||
}
|
||||
Reference in New Issue
Block a user