You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Godot中通过Sprite与混合模式创建2D阴影?

实现Softlight混合模式的阴影效果(Godot gdShader)

快速实现步骤

  • 复制你的玩家Sprite节点,命名为PlayerShadow,调整层级让它位于原玩家Sprite下方、背景元素之上,确保渲染顺序正确。
  • 新建一个Shader,写入以下代码:
shader_type canvas_item;

void fragment() {
    // 保留原纹理的透明度,将颜色转为纯黑
    vec4 tex_color = texture(TEXTURE, UV);
    vec4 black_shadow = vec4(0.0, 0.0, 0.0, tex_color.a);
    
    // 获取屏幕背景颜色
    vec4 bg_color = texture(SCREEN_TEXTURE, SCREEN_UV);
    vec3 final_color;
    
    // 实现Softlight混合算法
    if (black_shadow.r <= 0.5) {
        final_color = 2.0 * bg_color.rgb * black_shadow.rgb + pow(bg_color.rgb, vec3(2.0)) * (1.0 - 2.0 * black_shadow.rgb);
    } else {
        final_color = sqrt(bg_color.rgb) * (2.0 * black_shadow.rgb - 1.0) + 2.0 * bg_color.rgb * (1.0 - black_shadow.rgb);
    }
    
    COLOR = vec4(final_color, black_shadow.a);
}
  • 创建一个ShaderMaterial,把上述Shader赋值给它,再将这个Material设置给PlayerShadow的Material属性。
  • 微调PlayerShadow的位置(比如稍微向下偏移原玩家),就能得到你想要的Softlight阴影效果。

适合新手的gdShader学习资源

  • Godot官方Shader文档:从CanvasItem Shader的基础语法、内置变量到常用效果示例都有详细说明,是入门的核心资料。
  • Godot Shader Bible:社区整理的Shader实用手册,包含各种混合模式、视觉特效的实现代码和原理,能快速查找到你需要的效果逻辑。
  • Godot Shader入门视频教程:像B站、YouTube上的“Godot 4 Shader新手入门”系列视频,跟着实操能快速理解Shader的工作流程和编写逻辑。

内容的提问来源于stack exchange,提问作者lord_drgical

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 07:55:33