Unsolvable problem of Gpu fillrate?

0 favourites
  • 5 posts
  • Hi guys!

    It's now several month that we are working on a quite big project for pc&mac primary and I really love the easyness and power of Construct!

    The problem start to come inside a layout with many objects. I'm running on a macbook pro 2015 but I tried exports on several middle target machines and the games start goes slow (around 40-45 fps) on that layout. Cpu load is very low (around 10%) while Gpu goes to 60/65% about.

    Our game is based on a comic and so all the graphics are hand-drawn.

    It will be a casual game with a lot of dialogues with multiple choices and some little minigames.

    So, we don't use physics at all and we have several layer of stuff with a many objects inside.

    The target export would be 1920x1080 since is still the most used resolution on Steam Pc players.

    Here comes the problem: we are facing the well-known problem of the Gpu fill rate.

    I already read a tons of topic about performance issue on that side and already made a lot of trials with profiler and fps value alone.

    The problem come just in full screen and even if there are no object moving the weight of the layers with the biggest objects inside are really heavy in the profiler.

    For example just deleting the front dark mask sprite (on the screenshot attached) on the profiler let us gain 7-8 fps.

    It's also due to the fact that there are around 200 objects in total but just few of them are visible together and just 3 of them are really that big.

    In another layout I used huge sprites (about 2800x1200) too but with no performance issue due to the fact that were just about 15 sprites in total.

    I tried avoiding huge objects with big transparency and this help, but we don't so have much areas to be optimized left.

    The game plays smooth with framerate unlimited (touches only) but I read it's recommended to just use V-sync for publishing.

    So some doubts are coming out. I know that's not the standard way to develop a videogame, but the strength of this game are the graphics, so I'm struggling in how to solve that.

    Reducing canvas size to hd ready standard (1366x768) solve the problem for most device but it's most blurry and I don't feel is a doable path.

    Will another engine better perform on rendering this areas? Maybe using perfect vector rendering instead of just quad+trasparency rendering and other stuff I simply don't know.

    Is there a better way to develop a scene like this?

    So, is construct the right software for a project like that?

    Sorry for longness and bad english guys!

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • From my experience, as you mentioned, using overlays/masks is always heavy on the GPU. If you can avoid any overlapping sprites with transparency and bake it in to the scene it helps a bunch. Otherwise there is the option of low fullscreen quality which may or may not work depending on your content.

    From the manual: > "This only applies when the viewport is being stretched (i.e. Fullscreen mode is not Off). High quality mode renders at the full resolution of the displayed size. Low quality mode first renders at the project viewport size, and then simply stretches the result to fill the screen. Low quality mode often improves performance on low-end systems and is often suitable for retro-style pixellated games with Point sampling. However note that text, downscaled sprites and effects will appear with better detail in high quality mode."

    Having the viewport size/scale set at the appropriate amount will also help. For example if your project is set to 1920x1080 and the window size is smaller than that and requires down-scaling, in my experience that eats a lot of FPS. I'm not sure how it works with upscaling but if your project is set at 1366x768 and is being displayed on a 1080p device I imagine that also has a detrimental effect on FPS.

    EDIT: also this thread talks about using "pre-load images" and then if you are going to create any images at runtime, have them positioned offscreen first and then destroyed at startup. construct.net/en/forum/construct-3/how-do-i-8/preload-images-sprites-appear-145016

  • Are there any effects, blend modes or layers with "Force own texture" enabled? Try disabling these and see if the performance improves.

    Using full-screen mask sprites is definitely not a good idea. You should break that dark mask into separate images. If there is no parallax between the light background and the dark foreground, you can use these 3 small sprites and merge the rest of the mask into the background image:

  • I tried avoiding huge objects with big transparency and this help, but we don't so have much areas to be optimized left.

    Note that transparent areas of images still consume fillrate. As dop2000 notes, you can avoid wasting fillrate with large transparent areas by using smaller separate images instead.

    Will another engine better perform on rendering this areas?

    No - fillrate is a hardware limitation, and so doing the same thing with a different technology will still have exactly the same problem.

  • Hi guys!

    Thank you to everyone to answer me so fast!

    I figured it out that the Web worker was turned On and it slow down overall performance.

    With the Worker turned off I gained around 12-14fps and now I'm quite stable to 60.

    So thank you for all your suggestion, I applied it anyway to lighten the gameplay as much as it's possible!

    Federico

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