跳到主要内容
← Image Manipulation with Shaders

Image Manipulation with Shaders

Color Direction

它这里问的是,颜色从灰到饱和,插值,所以mix的顺序要调换一下

实时渲染 · 纹理 GLSL

第 9 课:Color Direction

实现:它这里问的是,颜色从灰到饱和,插值,所以mix的顺序要调换一下

实现

uniform vec2 iResolution;
uniform sampler2D iChannel0;

const vec3 refColor = vec3(1.0, 0.0, 0.0);

void main() {
  vec2 uv = gl_FragCoord.xy / iResolution.xy;

  vec3 texColor = texture(iChannel0, uv).rgb;
  float deviation = dot(normalize(refColor),normalize(texColor));
  float luminance = dot(texColor, vec3(0.2126, 0.7152, 0.0722));
  vec3 result = mix(vec3(luminance),texColor,  deviation*2.0);

  gl_FragColor = vec4(result, 1.0);
}

复盘笔记

  • 它这里问的是,颜色从灰到饱和,插值,所以mix的顺序要调换一下
  • 和上一集的distance不一样,用的是颜色的相关性,用的dot
  • 色相相近,即使亮度不同,也认为是相关色