Use model instancing feature
#1
Posted 06 April 2014 - 03:42 PM
Wow, this is a nice way to lower the draw calls, and it looks good in game. For a quick test i've seen 7 fps (29 to 36) improvement on a very populated area, and the drawn primitives are fallen from 5400 to 3700 with this feature, also lowers the shadow primitive count.
If it will work without the "Always use highest detail objects" feature, maybe even more improvement can be expected. Very nice to see that instancing works in OR "on the fly" and not like in TS2014 where you need to use specific object types on routes to make those instanced ("asset block"), and lower the CPU overhead.
If it will work without the "Always use highest detail objects" feature, maybe even more improvement can be expected. Very nice to see that instancing works in OR "on the fly" and not like in TS2014 where you need to use specific object types on routes to make those instanced ("asset block"), and lower the CPU overhead.
#2
Posted 06 April 2014 - 04:03 PM
This is news to me, would you please explain?
Cheers & thanks,
Bazza.
Cheers & thanks,
Bazza.
#3
Posted 07 April 2014 - 03:34 AM
These openworld games are usually CPU limited, because a lot of objects should be drawn. Each drawn object or texture needs a draw call to be generated by the CPU in every single frame, and send this draw call to the GPU. But directx is wasting the resources, so to generate a draw call needs a lot of cpu resources, and in addition it's only works in single thread (so can be done only on one CPU core), so the computing power of one CPU core(on which the render process runs) will limit the game's performance. That's why AMD made the Mantle API, and that's why microsoft started to work on Directx 12, and the use of modern OpenGL extensions are encouraged, which can do this work in multiple threads, and also needs less computing power to generate the draw calls.
But directx 9 which is used by OR also have a trick to make the number of draw calls lower. However still not as good as a modern API, but can help very much. This is the hardware instancing. Without it, if there is are 2000 pieces of the same tree object in the visible range in game, then 2000 draw calls are needed to draw these trees. But with instancing, identical objects are only drawn once, so that 2000 trees can be drawn by 1 draw call, as the GPU just copies them instead of drawing them individually. Depending how many identical objects in the view, this can lower the load on the CPU, and somewhat on GPU too.
But directx 9 which is used by OR also have a trick to make the number of draw calls lower. However still not as good as a modern API, but can help very much. This is the hardware instancing. Without it, if there is are 2000 pieces of the same tree object in the visible range in game, then 2000 draw calls are needed to draw these trees. But with instancing, identical objects are only drawn once, so that 2000 trees can be drawn by 1 draw call, as the GPU just copies them instead of drawing them individually. Depending how many identical objects in the view, this can lower the load on the CPU, and somewhat on GPU too.
#5
Posted 07 April 2014 - 07:27 AM
I've been testing this feature on Dorset Coast and it certainly reduces the number of draw calls (loads up the GPU somewhat more of course) and increases frame rates.
However, I am seeing some weird effects around some shapes. When pulling into Clapham Junction, for instance, the platform canopies flicker really badly. I haven't managed to capture pictures of this yet. Attached, though, is a screenshot of a misplaced shape. It looks like the night light cone of one of the station lights. So far, this has happened consistently every test I've run. When instancing is turned off the flicker effect around Clapham Junction does not occur, nor the misplaced shape.
Dennis
However, I am seeing some weird effects around some shapes. When pulling into Clapham Junction, for instance, the platform canopies flicker really badly. I haven't managed to capture pictures of this yet. Attached, though, is a screenshot of a misplaced shape. It looks like the night light cone of one of the station lights. So far, this has happened consistently every test I've run. When instancing is turned off the flicker effect around Clapham Junction does not occur, nor the misplaced shape.
Dennis
#6 Inactive_AlFitz_*
Posted 07 April 2014 - 10:42 AM
I'd hate to overestimate the improvement as I've seen to much of that sort of thing in the past but the frame rate on my machine rose in one area from about 35 to over 200 after turning it on! This does sound a bit much judging from from earlier posts but I could provide some screenshots I suppose
#7 Inactive_AlFitz_*
Posted 07 April 2014 - 10:53 AM
#8
Posted 07 April 2014 - 11:39 AM
wow, 29 vs 210 fps :sign_thanks: That route seem to have really repetitive scenery.
#9
Posted 07 April 2014 - 11:57 AM
Did I miss something here???? What and where is it? I'm clueless!
Steve
Steve
#10
Posted 07 April 2014 - 12:11 PM
AlFitz, on 07 April 2014 - 10:53 AM, said:
Here are two shots from virtually the same location, one with instance on and one without, that is the only difference.
That's pretty awesome. It looks like about 9700 primitives reduces down to just 1100 so there must be an absolute load of repetition (quite possibly those forested areas are all individually placed shapes).
SVRy_Steve, on 07 April 2014 - 11:57 AM, said:
Did I miss something here???? What and where is it? I'm clueless!
There is a new experimental option, "Use model instancing", which helps reduce the CPU workload on highly repetitive scenes (think forests, dense built-up areas, etc.). The amount it'll help will vary a lot by route and location.