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π(完整正弦周期)

}

相关推荐
Oiiouui5 小时前
Godot(4.x): Python处理转换Excel为注入Json
游戏引擎·godot
追光者♂7 小时前
【测评系列3】CSDN AI数字营销实测体验官:测试 开源项目——Superpowers 游戏引擎从零开发实战指南
人工智能·深度学习·机器学习·typescript·开源·游戏引擎·superpowers
元气少女小圆丶7 小时前
SenseGlove Nova 2+Unity开发笔记3
笔记·unity·游戏引擎
Oiiouui8 小时前
Godot(4.x): 游戏管理器: Excel 动态依赖注入实现
游戏·游戏引擎·godot
WMX10128 小时前
Unity-shader学习记录
学习·unity·游戏引擎
WMX10128 小时前
Hololens 2 上部署 Unity+MRTK 项目_模型着色
unity·游戏引擎·hololens
游乐码8 小时前
unity基础(八)协程
游戏·unity·c#·游戏引擎
玉夏1 天前
【Shader基础】ShaderLab 语法
unity·游戏引擎
玖玥拾1 天前
Cocos学习笔记:自定义字体、骨骼动画与项目架构
游戏引擎·cocos2d