Hi Clickteam and fellow klikers! I been thinking a lot about how how scaling would ideally work in Fusion 3 here. Maybe it just confirms what you are already doing or maybe it gives you some new ideas. I know that you are very busy, but I hope you can read it. Do any of you have any ideas to streamline a flexible scaler?
I loved how well Multimedia Fusion has worked for pixel art and 2D worlds before but now we live in a world of increasingly heterogeneous screen ratios and resolution, and higher DPIs, and Fusion 2.5's scaler did not work very well adapting to that. Now that you rewrite the base code I hope Fusion 3 will have a nice scaler, and I think there is a way to make that easy for the Fusion user to make games and apps that scale well to all screen sizes.
Lots of people use Fusion for pixel-art games, and good pixel art games often use sub-native resolution. I think it would be good if Fusion had a clear distinction between the 'render target' (that we have full control over) and scaler (that doesn't know the end-user's resolution of course). I hope the scaler will have at least 3 scaling modes: Nearest neighbour, Bilinear interpolation, and Pixel preserving interpolation. Fusion 2.5 has the previous two of course but the first doesn't produce a stable(in scrolling images)/accurate(in still images) image at not perfectly integer scalings, as some pixels come between the screen grid. Similar to the problem with emulation scaling described by DigitalFoundry: Please login to see this link.
I think you know the issues I'm talking about. I therefore hope you include bilinear interpolation of just those conflicting pixel lines. It has been implemented as a freely MIT licensed Cg shader here: Please login to see this link. and described here also: Please login to see this link.
This would allow pixelart to look reasonably good at any resolution without the game developer having to do lots of thinking and adapting to nearest neighbour artefacts. Even modern AAA 3D games rely less on changing the resolution of the screen and instead do all the scaling in the executable, and as that is less "invasive" (causes less problems with moving around things on the Windows desktop resizing other programs) and can give us more control I hope Fusion 3 picks this route.
As for screen ratios, the Fusion user could enter a percentage of acceptable horizontal/vertical stretch so a 16:9 render target would scale to fill a 18:9 screen if the percentage was 12.5% but any screen wider than that would result in black pillarboxes (or a background image/tile as some app/game distributors have been known to deny games that don't take advantage of the full screen estate). A 'Integer scaling only / pixel-perfect' checkbox could allow for only integer scalings and add both pillarboxes and bars to any remaining vertical and horizontal surrounding areas.
Fusion 2.5 has some of these options but they aren't as clear or reliable and rely on changing screen resolution to what resolutions are supported. Fusion 3 apps/games also ought to handle and signal to Windows 10 that they handle scaling natively, so a pixel art game won't unexpectedly be scaled by the Windows 10's subpar scaler if the end-user/player has for example 125% scaling on. Low-resolution games should also be possibly in windowed mode and automatically be at an integer scale of the render target size.
Making a 240p game is good for pixel art but if it were just run at 1:1 scale it would only take up 4% of a 1080p screen and a quarter of that physical size on a 4K screen of the same size. Therefore a windowed mode resolution multiplier could be set to for example 4 to allow for 4:1 scale if that fit in the end-user screen or otherwise use the highest multiplier that fit in the screen such as 3:1 for a 768p screen. Double DPI screens (HiDPI and Retina) would use a doubled multiplier such as 8:1 for a 4K screen of the same size as a 1080p regular DPI screen. It's best to leave the frame sizes just for scrolling and not resizing them up to fit the render target like now.
It's quite a long read, but if you nail the scaler it will certainly make life easier for all us Fusion users and probably attract new users for its high quality presentation of pixels. Thank you for reading and perhaps considering some points!