我正在尝试在WebGL中显示纹理的清晰轮廓。 我将一张纹理传递给我的片段着色器,然后使用本地导数来显示轮廓/轮廓,但是它不像我期望的那样平滑。
如果直接打印纹理而不进行处理,效果与预期相同:
如果直接打印纹理而不进行处理,效果与预期相同:
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;
使用本地导数,会错过一些边缘:
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.;