SuperAPI AI 工具集

godot-shaders-basics

设计与创作

查看项目

更新于 10-15 18:27

技能介绍

用途

本技能面向 Godot 引擎的进阶着色器开发,聚焦于批处理安全、深度预通道、屏幕空间后处理、深度重建、三平面投影与实例 uniform 等专家级模式。它明确不是「第一个着色器」教程,而是针对绘制调用批处理中断、discard 与深度预通道取舍、植被阴影、后处理 quad、世界坐标特效等具体场景的解决方案集合。

主要能力

技能以场景触发脚本的方式组织,针对不同目标提供对应脚本模板:

  • 逐敌人受击闪光且不破坏批处理:instance_uniform_hitflash.gdshader
  • 植被风摆与阴影:foliage_wind_sway_expert.gdshader(使用 alpha scissor/hash,而非无条件 discard)
  • 保留深度预通道的溶解效果:dissolve_scissor_expert.gdshader
  • 后处理像素化/风格化:screenspace_hex_pixelate.gdshader
  • 全屏 quad(兼容 Reversed-Z):screenspace_full_quad.gdshader
  • 深度重建世界坐标(用于水面/雾):depth_world_reconstruction.gdshader
  • 玩家压平草地:global_grass_flatten.gdshader
  • 无 UV 的崖壁/岩石:triplanar_world_mapping.gdshader
  • 实例化网格使用独立纹理:instance_texture_array.gdshader
  • 顶点位移地形:noise_terrain_displacement.gdshader
  • 运行时动画 uniform:shader_parameter_animator.gd
  • VFX 端口模板:vfx_port_shader.gdshader
  • 着色器预热加载:shader_warmup_loader.gd(在加载界面预预热着色器管线,避免首帧卡顿)

关键实践要点

资料列出多条着色器禁忌与实践,例如:不要为优化而无条件使用 discard(会阻碍深度预通道);不要在高性能着色器中使用 if/else 处理动态状态,而应使用 mix()、step()、smoothstep();不要精确比较浮点数;大规模植被不要用标准 Alpha Blending;Godot 4.3+ 全屏 quad 不要硬编码 POSITION;不要为改一个颜色而复制材质,而应使用 instance uniform;不要忘记为颜色 uniform 添加 hint_source_color;能把复杂数学放进 vertex() 的就不要在 fragment() 中计算;不要用 #define 宏处理运行时动态开关(会产生新着色器置换导致编译卡顿);不要忘记归一化向量;不要无边界检查或 fract() 地修改 UV。

使用方式

技能以「目标 → 脚本」触发映射的方式使用,针对匹配效果标注为必须加载对应脚本。另提供按需深入的配方文档:2D 溶解/波动/描边、3D 卡通+暗角、uniform 与内置变量、雾/计算/预热等。参考部分建议渐进式查阅官方文档,仅在研究特定 API 时打开官方链接。

适用场景

适用于已掌握基础着色器、需要处理批处理破坏、discard 与深度预通道、植被阴影、后处理 quad、世界坐标特效等问题的 Godot 开发者,可与项目基础、资源数据模式、3D 材质、灯光、粒子、性能优化等技能配合使用。

限制

资料未提供收费、价格、平台兼容版本区间等具体信息,暂未提供。使用时需注意资料中声明的不适用场景:不包含初学者 canvas_item 着色与内置变量词表,初学者教程应由官方文档承担。