GLSL 内置函数

dFdy()

估计屏幕纵向相邻片元间的变化率。

示例版本:GLSL ES 1.00 / WebGL 1示例阶段:片段

函数签名

genType dFdy(genType p)

genType 表示 float / vec2 / vec3 / vec4;同名占位符须使用相同类型。

参数

p
打包后的无符号整数

返回值

与 p 类型相同的值,逐分量近似表示 p 沿屏幕 y 方向的变化率。

在线示例

修改右侧代码,左侧预览会实时更新。

dFdy 做什么

估计屏幕纵向相邻片元间的变化率。

看懂预览

sin(y*24.0) 的导数随行变化,背景因此呈横向色带。把两处 24.0 都改成 8.0,色带会变宽,归一化方式保持一致。

核心调用

abs(dFdy(sin(y*24.0)))*u_resolution.y/24.0;

这里是屏幕 Y 方向,不是任意模型的世界 Y 方向。

修改实验

把 dFdy 的输入从 sin(y*24.0) 改成 sin(x*24.0)。相邻行此时获得相同输入,除绘出的零值线外,背景将趋于一致。

规范

GLSL ES 1.00 built-in functions, chapter 8

相关函数