We allow our users to re-scale the UI by applying an AffineTransform with only a scale to our editor-wrapper class.
In the “retro” mode, we use bitmaps for the background, buttons, LEDs, and dials. Only when using Direct2D do these elements shimmer. Their top-left position seems to be snapped to the nearest physical pixel.
When switching to the software renderer, this works as expected. The shimmer is gone, and the top-left position is evidently a float position now.
Here is a short video demonstrating the issue. Please watch in 4K. The effect is best visible in the top-left of UI, as it moves the least amount while resizing.
Multiple 3rd parties reported this, so it’s not limited to my machine.
We actually saw something similar with clip bounds being used to draw background images on a GUI. On specific sizes bitmap images don’t rescale correctly and there was a line either on the right hand side or bottom of the GUI, because no background colour is set it will give a randomish colour. I think you may be able to reproduce this with just filling an image with a colour, and drawing the image into the background of a resizable GUI window.
Not sure how your comment helps here. Our reported bug has nothing to do with scaling (which works perfectly fine here), but rather the top-left position being always snapped to a physical pixel.
Apologies, I wrote that incorrectly. We found that in some of our GUI windows, which have two static sizes, a line would appear based on the window size, suggesting snapping. This affected how we handled clip bounds for background images, with the line appearing in the clipped regions of the image.
We observed something similar with the Software Renderer on Windows. Although I could not reproduce the issue with Direct2D, it seemed to be influenced by the Windows DPI setting (What I mean by doesn’t rescale). I thought this might be something similar and could be useful.
I made a simple program to reproduce the issue. You can see at 5 seconds where the rendering engine switches from Direct2D to Software the image starts drawing at sub pixel positions.