GLSL 内置函数
dFdx()
估计屏幕横向相邻片元间的变化率。
示例版本:GLSL ES 1.00 / WebGL 1示例阶段:片段
函数签名
genType dFdx(genType p)genType 表示 float / vec2 / vec3 / vec4;同名占位符须使用相同类型。
参数
- p
- 打包后的无符号整数
返回值
与 p 类型相同的值,逐分量近似表示 p 沿屏幕 x 方向的变化率。
在线示例
修改右侧代码,左侧预览会实时更新。
dFdx 做什么
估计屏幕横向相邻片元间的变化率。
看懂预览
abs(dFdx(sin(x*24.0))) 比较相邻列的正弦值,因此背景呈竖向条带。把两处 24.0 都改成 12.0,条带频率会减半,幅度标尺仍保持一致。
核心调用
abs(dFdx(sin(x*24.0)))*u_resolution.x/24.0;
只在片段阶段使用;非一致分支中的导数结果未定义。
修改实验
把 dFdx 内的 sin(x*24.0) 换成 sin(y*24.0)。输入改为只沿纵向变化,横向导数就会接近零。