UI Scale is enabled from the Main Menu in the "Video Options" section under "Resolution". From here, you must enable "UI Scale" in order to take advantage of this feature. As outlined in UI Coordinates, UI Scale is normalized to a height of 768px regardless of actual screen resolution. UI Scale is the frontend extension of that to the user.
To demonstrate, let's assume we have a texture onscreen that is 256x256 pixels large. If the actual y-res matches the WoW y-res (e.g., 1024x768 = 768) then our texture will show as 256px (768/768 = 1*256 = 256). As we increase our resolution, so does our multiplier ([actual y/WoW y] = multiplier). Observe the following (all results are with the same 256x256 texture):
|Y-Resolution||Scale 1.0 Multiplier||Scale Off Multiplier||Scale 0.64 Size|
A couple points of interest:
- The UI Scale goes from 1 to 0.64. At 768y we see pixel-per-pixel accurate representation of our texture, and again at 1200y if at 0.64 scale.
- When UI Scale is turned off, the Scale Off Multiplier changes gradually and is not initially a constant.
- In each case after 768y, unless the UI Scale is enabled, your texture will be overblown past its intended size. Given that these higher resolutions show more detail, your textures will appear successively worse.
Pixel perfect UIs and you
As a result of how WoW handles UI coordinates, having an improperly set UI scale may result in various glitches with interface addons. For instance, a one pixel wide border on a frame may have a varying width (ie. occasionally appear to be two pixels wide) depending on the frame's position and size.
To rectify this behaviour, you should set your UI scale so that your screen height matches with the UI coordinates. You can find out the correct UI scale from UIScale = 768 / verticalResolution, and set it with the command /console UIScale [number].
For instance, if you play with a 1920x1080 resolution, the correct UI scale would be 768/1080 = 0.7111..., and you would set that by typing /console UIScale 0.7111111111 in the chat.
Note that the above only works for screen resolutions up to 1200 vertical pixels (0.64 UI scale), as the setting won't go lower than 0.64. For screen resolutions above 1920x1200, you will have to use /run UIParent:SetScale(UIScale) where UIScale is the decimal number you got out of the equation above. Since this setting is not saved, you'll have to use an addon that rescales the UI every time the game loads (ie. after every loading screen). While writing such an addon is a trivial task, you can also download one if you can't be arsed to figure out how to write it yourself.