It is not expected that the rendering of shapes overlays have a significant impact on the video performance in the Smart Client.
However everything that runs on the UI thread will potentially impact the video performance. In the code in BackgroundWaterMarkPlugin it appears that the generation of the shapes is also performed in the UI thread. This should ideally be moved to a background thread.
We have only follow and enhance the demo sample in Plugin Integration - Analytics Overlay. And how could we use another background thread to show the watermark on the video stream in smart client?
If you look at the AnalyticsOverlay plugin sample code in the BackgroundOverlayPlugin class in the DrawOverlay method you will notice the following method used: ClientControl.Instance.CallOnUiThread(() =>
This method switches to the UI thread for writing the overlay for display. If there are time consuming calculations or similar involved in creating the shapes these calculations could have been performed in another thread before then switching to UI thread and using ShapesOverlayAdd / ShapesOverlayUpdate.