Beyond the Luminance Ramp: A Shape-Aware ASCII Renderer in Three.js