We need a way to render individual objects/layers at low res

0 favourites
  • 7 posts
From the Asset Store
Hand-painted tiles, objects, animated objects, and background to build a colorful Mayan civilization environment.
  • I've been running into quite a few performance issues with my game lately, especially on integrated GPU's, and most of them are solved by heavily reducing resolution of the game (i.e. changing fullscreen scaling to low quality, then scaling the canvas down while keeping the window the same size). This leads me to assume that GPU fillrate is the primary issue.

    For those unfamiliar, AFAIK fillrate is simply the amount of pixels the GPU has to draw - at higher window sizes this increases exponentially and can be very straining if you have a lot of layers of content, as I do in my game.

    A great solution to this issue would be being able to render objects/layers at a smaller resolution, then having the engine do a cheap scale-up. Many layers, e.g. backgrounds, and many objects, e.g. full-screen overlays, do not need to be drawn at full scale resolution all the time. Currently there's no way to do even a simple fade-to-black effect without a complete screen of pixel fill. Over 50% of my layers could easily get away with a significant resolution reduction and the performance implications (especially when you consider shaders) would be huge.

    I believe that this could also possibly help performance on mobile devices, something I'm not personally concerned with but I know many are.

    Is this something that's technically impossible to do in the engine?

    Does anyone else agree that this is an important feature to have?

  • Having a "downscale texture percentage" sort of action and expression may help doing better graphic options for the game, as you could downscale details while keeping the game really nicey looking, however I think being able to change the low quality based resolution might be a better option (I think someone already did that via the set canvas size action which altered the window size too but I cannot find it anymore nor did I tested it).

    However I wonder how well that would translate inside the engine.

    PS: that would be a nice alternative to having multiple assets for multiple resolutions.

  • I have doubts this would provide any tangible benefits. I've attempted similar techniques in MonoGame while trying to eek out extra performance on mobiles, but the results were generally worse than doing things the normal way. Running parts of a game at different resolutions still requires everything to be drawn to the screen at the highest resolution at some point. This would be felt hard when rendering lots of layers at a smaller resolution, then rendering them individually again(from the small render result) scaled up on the screen.

    Granted, I'm not aware of how the Construct 2 renderer handles things, but I'm certain it wouldn't lend itself well to this kind of technique.

  • I can relate to the Fade-to-black aspect. I hate that I have to add in that full-screen image just so I can have a simple effect.

  • Try Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Try Now Construct 3 users don't see these ads
  • Aphrodite I have done the low quality resolution change thing, but the issue with that is that it makes the whole game look like rubbish if the res is too low.

    linkman2004 I don't have any experience outside of C2, but I don't see why rendering a layer at low res, then scaling up, is more expensive than rendering the layer at high res.

    Regardless, it's definitely an issue in an engine that doesn't support vector rendering. Even a full screen colour or fade is a huge load on a GPU.

  • Aphrodite I have done the low quality resolution change thing, but the issue with that is that it makes the whole game look like rubbish if the res is too low.

    linkman2004 I don't have any experience outside of C2, but I don't see why rendering a layer at low res, then scaling up, is more expensive than rendering the layer at high res.

    Regardless, it's definitely an issue in an engine that doesn't support vector rendering. Even a full screen colour or fade is a huge load on a GPU.

    I could be totally wrong, but I always though that vector graphics would still need to be rendered at the screen resolution, and so would suffer the exact same problem.

  • sqiddster Part of it is the time required by the GPU to swap your low resolution rendered image to a location where it can draw from that image. Another is the fillrate hit you're going to take drawing your upscaled low resolution image to the full resolution of the screen. If you have a lot of layers, you end up drawing a lot of massive images on top of each other to composite them into the final image. In comparison, when drawing everything at the full resolution from the start, you don't have to worry about rendering layers to their own intermediary targets and then compositing them -- you simply draw all of your sprites sequentially starting from the bottom layer.

    Perhaps if you had relatively few layers and were rendering a lot of smaller images to each of them, you might get some benefit from intermediary low resolution rendering. But if your layers consist of, say, one or two large background images each, you're absolutely going to take a hit on performance.

    EDIT: I figured I should mention, I absolutely agree that something could be done about the performance of fading to a solid color. Setting the background behind the canvas to your color of choice and then adjusting the transparency of the canvas itself would do the trick, if possible. This precludes the ability to draw, say, text on top of the fade, but it at least helps in some situations.

Jump to:
Active Users
There are 1 visitors browsing this topic (0 users and 1 guests)