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 个纹素,不再随滑块变化,网格保持同一模糊尺度。