mingingmingler
Topic Author
Posts: 23
Joined: 15 Jan 2018, 00:03

Controlling the framerate of Noesis?

29 Mar 2019, 10:44

Hi, I've moved this over from the bug tracker for the benefit of a wider discussion.

1) What framerate does Noesis typically target, and how is this determined? Does it automatically match the framerate of the engine (e.g. Unity)? I understand in WPF the framerate is dynamic, varying between 0 and a cap of 60 depending on whether animation is playing. I know that Noesis has no reason to follow this behavior.

2) Is it possible to configure the framerate? Some use cases are as follows:

2a) A 3d game where the world rendering is intensive, and the UI is over budget such that we want it to run at a different rate. E.g. capped at 30 while the game runs at 60. This may sound ideologically absurd, but I've worked on an AAA project where this measure had to be taken on console builds.

2b) A 2d game where the world is being rendered in Noesis, and we'd like the framerate to match that of the Engine (Unity in this case) which could range from sub-30 to 144 and beyond.
 
User avatar
jsantos
Site Admin
Posts: 2906
Joined: 20 Jan 2012, 17:18
Contact:

Re: Controlling the framerate of Noesis?

03 Apr 2019, 02:16

Thanks for moving the discussion from the tracker to here!
1) What framerate does Noesis typically target, and how is this determined? Does it automatically match the framerate of the engine (e.g. Unity)? I understand in WPF the framerate is dynamic, varying between 0 and a cap of 60 depending on whether animation is playing. I know that Noesis has no reason to follow this behavior.
Exactly, we don't follow the WPF behavior. In Noesis you decide the framerate because you are in control of when each frame is rendered. This is what happens in Unity, for each frame or 3D content rendered you have one frame of UI rendered. Note that you can disable continuous rendering (useful for render textures for example) and then only render when content changes.
2) Is it possible to configure the framerate? Some use cases are as follows:
The framerate is normally tied to the framerate of your game. So if you render 3D at 60fps then you are probably rendering at 60fps the UI.
2a) A 3d game where the world rendering is intensive, and the UI is over budget such that we want it to run at a different rate. E.g. capped at 30 while the game runs at 60. This may sound ideologically absurd, but I've worked on an AAA project where this measure had to be taken on console builds.
Yes, we have a few clients doing this. They follow this approach:

1. Engine is rendering in render thread using its own render device.
2. UI is rendered in a different thread using a different render device.
3. UI is cached using shared textures that are updated using Direct Composition.
2b) A 2d game where the world is being rendered in Noesis, and we'd like the framerate to match that of the Engine (Unity in this case) which could range from sub-30 to 144 and beyond.
Yes, this is what happens by default in our Unity and Unreal integrations. And also in all our C++ and C# samples.

Who is online

Users browsing this forum: Bing [Bot] and 0 guests