1
1
mirror of https://github.com/Rundll86/Dog-Lynx-And-HCN.git synced 2026-05-27 22:41:56 +08:00
Files
Dog-Lynx-And-HCN/shaders/Explosion.gdshader
T
fallingshrimp 2a8ea238ad refactor(特效系统): 重构爆炸效果并删除旧炸弹资源
将炸弹效果重构为更复杂的爆炸效果,包含粒子系统和着色器动画
删除旧的Bomb.tscn资源文件
添加新的Explosion.gdshader着色器实现爆炸效果
创建Explosion.tscn场景包含粒子效果和动画控制
2025-08-29 12:17:40 +08:00

38 lines
1.3 KiB
Plaintext

shader_type canvas_item;
uniform float explosion_radius : hint_range(0.0, 1.0) = 0.0;
uniform float explosion_intensity : hint_range(0.0, 2.0) = 1.0;
uniform vec4 explosion_color : source_color = vec4(1.0, 0.5, 0.0, 1.0);
uniform float time_scale = 1.0;
void fragment() {
// 计算当前像素到中心的距离
vec2 center = vec2(0.5, 0.5);
float dist = distance(UV, center);
// 使用TIME创建随时间变化的爆炸效果
float time = TIME * time_scale;
float explosion = smoothstep(explosion_radius, explosion_radius - 0.2, dist) * explosion_intensity;
// 添加一些噪声使爆炸看起来更自然
float noise = sin(dist * 20.0 - time * 5.0) * 0.5 + 0.5;
explosion *= noise;
// 限制explosion值在0-1范围内
explosion = clamp(explosion, 0.0, 1.0);
// 计算最终颜色,混合原始纹理和爆炸效果
vec4 original_color = texture(TEXTURE, UV);
vec4 final_color = mix(original_color, explosion_color, explosion);
// 添加一些发光效果
float glow = exp(-dist * 5.0) * explosion_intensity;
final_color.rgb += glow * explosion_color.rgb;
// 确保alpha通道正确设置
final_color.a = max(original_color.a, explosion);
// 输出最终颜色
COLOR = final_color;
}