Bevel a Procedural Texture?
Based on a modified version of this OSL bricks shader, I added a smoothness parameter that generates a smoother transition from the mortar color to the brick color (Currently will work in the desired manner only with values ranging from 1-10. Will probably improve algorithm tomorrow).

# include "stdosl.h"

shader brick(
    float BMWIDTH = 5,
    float BMHEIGHT = 5,
    float MORTARTHICKNESS = 0.1,
    point Vector = P,
    int   smoothness = 1,
    color Cbrick = color (0.5,0.15,0.14),
    color Cmortar = color(0.5, 0.5, 0.5),
    output color Col_Out = color(0.7)
)

{
    color Ct;
    point Nf;
    float ss;
    float tt;
    float th;
    float sbrick;
    float tbrick;
    float w;
    float h;

    float x = Vector[0];
    float y = Vector[1];

    float smoothnessFac = 0.1;
    for ( int i = 0; i &lt; smoothness; i++ ) {
        float MWF = MORTARTHICKNESS * ( 1 + i * smoothnessFac ) * 0.5 / BMWIDTH;
        float MHF = MORTARTHICKNESS * ( 1 + i * smoothnessFac ) * 0.5 / BMHEIGHT;

        ss = x / BMWIDTH;
        tt = y / BMHEIGHT;

        if (mod(tt * 0.5, 1) &gt; 0.5)
        {
            ss += 0.5;
        }

        sbrick = floor(ss);
        tbrick = floor(tt);

        ss -= sbrick;
        tt -= tbrick;

        w = step(MWF,ss)  - step(1-MWF,ss);
        h = step(MHF, tt) - step(1-MHF, tt);

        if ( i == 0 ) {
            Ct = mix(Cmortar, Cbrick, w*h);
        } else {
            color current = mix(Cmortar, Cbrick, w*h);
            Ct = mix( Ct, current, 1 - i * smoothnessFac );
        }
    }

    Col_Out = Ct;
}