第 8 课:Color Distance
我的解:简单,我的版本带了个clamp,使得只保留颜色的效果留下了
我的解
uniform vec2 iResolution;
uniform sampler2D iChannel0;
const vec3 refColor = vec3(1.0, 0.0, 0.0);
vec3 RelativeLuminance(vec3 tex){
return vec3(tex.r * 0.2126 + tex.g * 0.7152 + tex.b * 0.0722);
}
void main() {
// Normalized pixel coordinates (from 0 to 1)
vec2 uv = gl_FragCoord.xy / iResolution.xy;
vec3 color = texture(iChannel0, uv).rgb;
vec3 luminance = RelativeLuminance(color);
float colorDist = clamp(distance(color, refColor), 0.0, 1.0);
vec3 saturated = mix(color,luminance,colorDist);
gl_FragColor = vec4(saturated,1.0);
}
复盘笔记
- 简单,我的版本带了个clamp,使得只保留颜色的效果留下了
- 这一小段的功能是,只有颜色值接近
refColor本身(亮度、饱和度也相似)才被认为“接近”,同样色相但亮度不同的颜色,并不会被认为“相近”