跳到主要内容
← Built-In functions

Built-In functions

dFdx/dFdy

dFdx/dFdy本质上是显卡线程之间的通讯。检查隔壁线程在这个值上的区别

实时渲染 · 纹理 GLSL

第 42 课:dFdx/dFdy

我的解:dFdx/dFdy本质上是显卡线程之间的通讯。检查隔壁线程在这个值上的区别

我的解

uniform vec2 iResolution;
uniform sampler2D iChannel0;

void main() {
  vec2 uv = gl_FragCoord.xy / iResolution.xy;
  vec4 picture = texture(iChannel0, uv);
  float ddxValue = dFdx(gl_FragCoord.x);
  float luminance = dot(picture.rgb, vec3(0.2126, 0.7152, 0.0722));

  float dx = dFdx(luminance);
  float dy = dFdy(luminance);
  float t  = abs(dx) + abs(dy);

  picture = mix(picture, vec4(1.0, 0.0, 0.0, 1.0), t > 0.0 ? 1.0 : 0.0);

  gl_FragColor = picture;
}

复盘笔记

  • dFdx/dFdy本质上是显卡线程之间的通讯。检查隔壁线程在这个值上的区别
  • dFdx(luminance), dFdy(luminance)
  • t = abs(dx) + abs(dy)
  • 斜率