Ich versuche scharfe Konturen aus einer Textur in WebGL anzuzeigen. Ich übergebe eine Textur an meine Fragment-Shader, dann verwende ich lokale Ableitungen, um die Konturen/Umrisse anzuzeigen, aber es ist nicht glatt, wie ich es erwarten würde.Kanten-/Umriss-Erkennung von Textur im Fragment-Shader
Drucken Sie einfach die Textur ohne Verarbeitung funktioniert wie erwartet:
vec2 texc = vec2(((vProjectedCoords.x/vProjectedCoords.w) + 1.0)/2.0,
((vProjectedCoords.y/vProjectedCoords.w) + 1.0)/2.0);
vec4 color = texture2D(uTextureFilled, texc);
gl_FragColor = color;
Mit lokalen Derivaten, es fehlt ein paar Kanten:
vec2 texc = vec2(((vProjectedCoords.x/vProjectedCoords.w) + 1.0)/2.0,
((vProjectedCoords.y/vProjectedCoords.w) + 1.0)/2.0);
vec4 color = texture2D(uTextureFilled, texc);
float maxColor = length(color.rgb);
gl_FragColor.r = abs(dFdx(maxColor));
gl_FragColor.g = abs(dFdy(maxColor));
gl_FragColor.a = 1.;