public void OnPostRender()
    {
        var   tex          = textureCamera.targetTexture;
        var   drawableSize = new Vector2(tex.width, tex.height);
        float time         = Time.frameCount;
        var   sinTime      = Mathf.Sin(time * VELOCITY);
        var   cosTime      = Mathf.Cos(time * VELOCITY);
        var   colorTime    = time * COLOR_CYCLE_SPEED;
        var   bgColor      = colors.Sample(colorTime);
        var   fgColor      = colors.Sample(colorTime + 0.5f);

        fgColor.a = 0.75f;

        var windowCenter = drawableSize * 0.5f;
        var outerCenter  = windowCenter + OUTER_RADIUS * new Vector2(sinTime, cosTime);
        var innerCenter  = windowCenter + cosTime * INNER_RADIUS * new Vector2(1.0f, sinTime);

        textureCamera.backgroundColor = bgColor;

        if (gState.IsPathfinderEnabled())
        {
            var canvas = new PFCanvas(gState.GetFontContext(), drawableSize);
            canvas.SetLineWidth(CIRCLE_THICKNESS * SCALE);
            canvas.SetStrokeStyle(fgColor);

            drawCircles(canvas, outerCenter);
            drawCircles(canvas, innerCenter);

            canvas.QueueForRendering();
        }
    }