GODOT SHADER关键函数

哈希函数

// 哈希函数:把一个 vec2 坐标变成 0,1 内的"伪随机"值

// 为什么用 sin?sin 对整数坐标会产生复杂的小数,fract 取小数部分

// 为什么乘以 43758.5?放大小差异,让不同格子差别明显

float hash(vec2 p) {

return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453);

}

水波碰撞函数

h(r, t) = sin(r/λ - ωt) × A × e^(-αr) × e^(-βt)

  • `r` = 到波源的距离(`length(p - center)`)

  • `λ` = 波长(控制波纹疏密)

  • `ω` = 角频率(控制传播速度)

  • `A × e^(-αr)` = 空间衰减(距离越远越弱)

  • `e^(-βt)` = 时间衰减(可选,模拟阻尼)多个波源的总高度:直接相加。

// 单个圆形水波

// center: 波源位置

// speed: 传播速度(频率)

// wLen: 波长(控制疏密)

// decay: 空间衰减系数

float ripple(vec2 p, vec2 center, float speed, float wLen, float decay) {

float r = length(p - center);

float phase = r / wLen - TIME * speed;

float amplitude = exp(-r * decay); // 空间衰减:越远越弱

return sin(phase * 6.28318) * amplitude; // 6.28318 = 2π(完整正弦周期)

}

相关推荐
hsw8157739431 天前
第10章 软件架构的演化和维护 — 系统架构设计师
unity·系统架构·游戏引擎
tealcwu1 天前
【尝鲜】Unity 6.7alpha版本测试
unity·游戏引擎
Python私教2 天前
Blender 到 Godot 4 可交互宝箱:从低模资源到开箱逻辑的完整管线
godot
Python私教2 天前
Godot 4 可交互机关门:用 Timer 与自定义信号解耦游戏逻辑
godot
懒狗跑ai的程序员Brain2 天前
如何利用粒子系统在unity制作一个烟花(粒子系统学习向)
学习·unity·游戏引擎
xcLeigh2 天前
Unity基础:材质与纹理入门——给物体穿上“衣服“
unity·游戏引擎·材质
派葛穆3 天前
Unity-UI 输入框功能
ui·unity·游戏引擎