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

}

相关推荐
辻弋2012 小时前
五年前的旅行视频糊成马赛克?Video2X用Real-ESRGAN逐帧重建细节,但只支持Windows、集显用户建议直接放弃
服务器·数据库·windows·游戏引擎·电脑
狂野小白兔1 天前
AI游戏制作04——Codex 搭配 Godot MCP 全流程教程
人工智能·游戏·godot
淡海水4 天前
02-02-原理篇-分代GC
算法·unity·c#·游戏引擎·.net·gc
淡海水5 天前
02-03-原理篇-大对象堆
unity·c#·游戏引擎·.net·gc
郝学胜-神的一滴5 天前
C++ Templates 01:拨开迷雾,读懂C++模板经典著作
开发语言·c++·程序人生·游戏·游戏引擎·软件构建
淡海水5 天前
02-01-原理篇-Mark-Sweep与变种算法
算法·unity·c#·游戏引擎·.net·gc
babywang06 天前
Unity笔记--AssetBundle详解
unity·游戏引擎
魔士于安7 天前
经典Game
游戏·游戏引擎·贴图·技术美术·模型
淡海水7 天前
01-04-认知篇-Unity内存全景
unity·c#·游戏引擎·.net·gc
598866753@qq.com7 天前
Codex与Unity
unity·游戏引擎