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)。输入改为只沿纵向变化,横向导数就会接近零。

规范

GLSL ES 1.00 built-in functions, chapter 8

相关函数