GLSL 内置函数

textureGrad()

显式提供两个坐标导数以控制纹理过滤。

示例版本:GLSL ES 3.00 / WebGL 2示例阶段:片段

函数签名

gvec4 textureGrad(gsampler2D sampler, vec2 coord, vec2 dx, vec2 dy)

参数

sampler
绑定的测试纹理
coord
采样坐标
dx
屏幕 X 方向的坐标梯度
dy
屏幕 Y 方向的坐标梯度

返回值

四个过滤后的采样分量,采样覆盖范围由给定的 x、y 坐标梯度控制。

在线示例

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

textureGrad 做什么

显式提供两个坐标导数以控制纹理过滤。

看懂预览

exp2(u_parameter*7.0)/256.0 设置的是采样覆盖范围,而不移动 uv。把参数从 0 调到 1,会从约一个纹素的覆盖范围变成更粗的过滤。

核心调用

textureGrad(u_texture,uv,vec2(exp2(u_parameter*7.0)/256.0,0),vec2(0,exp2(u_parameter*7.0)/256.0)).rgb;

梯度描述一个屏幕像素跨越的纹理坐标范围,不是颜色梯度。

修改实验

把两处 u_parameter*7.0 都改成 4.0。覆盖范围会固定为 16 个纹素,不再随滑块变化,网格保持同一模糊尺度。

规范

GLSL ES 3.00 built-in functions, chapter 8

相关函数