shader
Circles(
    float s = 0 
        [[
        int lockgeom = 0,
        string widget = "null",
        ]],
    float t = 0
        [[
        int lockgeom = 0,
        string widget = "null",
        ]],
    float s_center = 0.5,
    float t_center = 0.5,
    float outer_radius = 0.4,
    float inner_radius = 0.35,
    float stagger = 0, 
    color pat_color = color(1,0,0),
    color bak_color = color(1,1,1),
    output color resultRGB = 0)
{
//------ repeats begin --------------------  
float ss = mod(s, 1);
float tt = mod(t, 1);
float row = floor(t);
if(mod(row,2) == 0)
    ss = mod(s + stagger, 1);
//------ repeats end ----------------------
// Be sure to change all instances of 's' and 't'
// to 'ss' and 'tt'.
float side_a = ss - s_center;
float side_b = tt - t_center;
float dist = sqrt(side_a * side_a + side_b * side_b);
if(dist <= outer_radius && dist >= inner_radius)
    resultRGB = pat_color;
else
    resultRGB = bak_color;
}