Try this:
function aa_test() {
renderer.setSize(4, 4);
var ortho_camera = new THREE.OrthographicCamera(0, 4, 0, 4, 0, 1 );
var output = new Uint8Array( 4 );
var material = new THREE.LineBasicMaterial({
color: 0xffffff
});
var geometry = new THREE.Geometry();
geometry.vertices.push(new THREE.Vector3(0, 0, 0));
geometry.vertices.push(new THREE.Vector3(4, 4, 0));
var line = new THREE.Line(geometry, material);
renderer.clearTarget( aa_target.renderTarget, true, true, true );
renderer.context.lineWidth(4);
aa_target.add(line);
renderer.render( aa_target, ortho_camera, aa_target.renderTarget );
renderer.context.readPixels( 0, 2, 1, 1, renderer.context.RGBA, renderer.context.UNSIGNED_BYTE, output );
if (output[0] == 0)
aa_available = false;
}
So what you have, is a test for whether AA is available. This method works in Three.js. I've tried looking at Chrome and its special pages (chrome://gpu etc) but getting that data into an arbitrary js script is not possible.
Using FXAA is not so bad SO LONG as the line thickness is around 1.6. Otherwise, you dont get enough line to blend. FXAA is great for scenes that have a lot going on, but if the scene is mostly lines, then it tends to fade the lines into the background too much.
The best answer for this would be FXAA and using the approach here:
https://github.com/OpenGLInsights/OpenGLInsightsCode/tree/master/Chapter%2011%20Antialiased%20Volumetric%20Lines%20Using%20Shader-Based%20Extrusion
this uses a geometry shader yes, but earlier on, it mentions use of a vertex shader to get the same result. This would most likely give much nicer lines.
Hope that helps! :D