There has been lots of talk about FPS and what affects to it and what not, and how should tracks been made so that it's good performance all the way. I'm not going into what should people do, but here are some test results I just ran so that I personally could know little bit how this graphics engine of rF works. As this time I cannot monitor memory usage of my GPU, this is all related to FPS performance.
Testing specs:
I have fairly medium level gaming PC by todays standards:
Intel Core Q8300
EAH5750 (1GB RAM) (this was budget choice one year ago)
4GB of RAM
WIN7 64bit
I'm running rFactor in DX8 settings, FullHD resolution and some details high and some medium.
And I have (-fullproc) command enabled in rF to supposedly have second core in use. This is debatable as if it has any effect in game performance.
I used Historx GT Legends mod, and Jaguar E-Type as a car. No AI cars. This could been any car virtually, but I chose this mod because I think it has overall good balance between performance and good looks. All the tests were run from cockpit view mirrors enabled. If not otherwise stated.
Note: I'm not professional tester, in fact not professional in any area, but I think these results might be somewhat useful to track modders.
And finally, the data:
1. POLYCOUNT
-I decided to make ultimate polycount test
-I used spheres each having 63000 triangles (limit for 3DS export is 64000)
-Then I added those spheres more and more to have more polys in scene
-FPS numbers are approximate, there is always some "life" at the counts
-I used shared 128x128 texture
No spheres:
-430fps
One million triangles:
-256fps
Two million:
-178fps
Three million:
-145fps
Five million (At this point I couldn't bother adding anymore stuff):
-70-80fps
-By disabling cockpit view I was able to boost extra 100-150fps. So a car you are driving, actually affects A LOT to your performance.
-rFactor graphics engine is well optimized, you gain few tens of FPS just by going further away from the spheres. This might also relate to texture drawing.
-I'm not sure if rF treats duplicate objects as instances, so that could explain very good performance even with few million faces. I maybe should have tested different high poly models. But still, few million faces drawn into screen.
-If object is not visible, its not affecting FPS. So basically, you can boost infinite number of polys to your track if all are not visible at the same time. This probably still affects to memory usage in some way, I just couldn't monitor that.
-BTB didn't have any problems drawing the scene of 5 million faces. In 3ds MAX (my version at least), that would have been impossible feat.
2. TEXTURING
-This is area where you can really kill your performance instantly
First I tested 16 different 4096x4096 texture drew at same time with 6 mipmaps, but mipmap bias set to -36000. Object was simple box with 12 triangles:
-No notable drop in FPS
-Probably massive memory usage going on, but at least my GPU handled it
-I set LOD to 50m so that they would pop in my view - not any kind of lag at that point (probably loaded in memory when track loaded?)
-I should have gone testing way more textures at one scene, but it was just pain to create new boxes and copy new textures... But I cannot imagine track that should need even 16 different 4096 textures, if not using atlases.
Second thing I tested was large amount of duplicates of one texture. I made 90 000 boxes visible at all times in my scene, and set a shared textures with different resolution. Mipmap was 6 maps and bias 0:
Boxes with 4096x4096
115fps
Boxes with 128x128
130fps
Boxes with 32x32
111fps
First of all, massive drop in performance. Only about million triangles in scene, but FPS went down like a rock compared to poly test.
-Note inconsistency in texture size and FPS performance. What could that be? Small texture is not that performance pro in the end compared to huge? Maybe needs more looking into.
-BTB performance was also dropped dramatically, because of large amount of objects.
3. COLLISIONS
-Common knowledge is that setting collision to complex objects is big no no. My test results are against this, or then I did something terribly wrong in my tests.
I added 32 highpoly spheres to a scene, and set collision ON to them all. Combined number of triangles was about 2 million:
-No notable drop in FPS when viewing compared to without collision.
-I crashed into them, small drop maybe few tens.
It was not a performance issue in any way. About of how it used my RAM, i don't know. Still: 2 million colliding triangles in my scene without no problems. That's way more than necessary in any imaginable situation.
4. CONCLUSIONS
-With all test scenarios, my track loaded about at the same time.
-We are under the mercy of car modders: Cars eat a massive chunk of resources, and the rest of the resources, if any, is left for us to use. Sure some car mods could be made with more economical techniques, but it is not my thing to go into that. My one car tests really give you distorted image of the performance. In some mods, I can kill my playability with only just 30 cars in very low quality track!
-You should use textures wisely, looks like combining texture "atlases" is really a good way to go since large amount of small textures might kill the performance much more than expected. And seems also like you shouldn't be afraid of using few huge textures now and then (=atlas maybe?).
-With one car in use (like rally tracks), there seems not to be any normal day limits of what you can do.
-Polygons, go for it IF NECESSARY. 100 000 triangle balloon at the sky could be easily do and calculated in game, but it would be just stupid. Use the available triangles for e.g. nice terrain.
-Collisions: might be that we are not fully aware of the issues and possibilities here. But I still prefer simple boxes and planes over complex objects, just because in rF your car can get stuck in complex collision shapes and might trigger infinite loop that freezes the computer.
Hope this is interesting and maybe helpful!
Testing specs:
I have fairly medium level gaming PC by todays standards:
Intel Core Q8300
EAH5750 (1GB RAM) (this was budget choice one year ago)
4GB of RAM
WIN7 64bit
I'm running rFactor in DX8 settings, FullHD resolution and some details high and some medium.
And I have (-fullproc) command enabled in rF to supposedly have second core in use. This is debatable as if it has any effect in game performance.
I used Historx GT Legends mod, and Jaguar E-Type as a car. No AI cars. This could been any car virtually, but I chose this mod because I think it has overall good balance between performance and good looks. All the tests were run from cockpit view mirrors enabled. If not otherwise stated.
Note: I'm not professional tester, in fact not professional in any area, but I think these results might be somewhat useful to track modders.
And finally, the data:
1. POLYCOUNT
-I decided to make ultimate polycount test
-I used spheres each having 63000 triangles (limit for 3DS export is 64000)
-Then I added those spheres more and more to have more polys in scene
-FPS numbers are approximate, there is always some "life" at the counts
-I used shared 128x128 texture
No spheres:
-430fps
One million triangles:
-256fps
Two million:
-178fps
Three million:
-145fps
Five million (At this point I couldn't bother adding anymore stuff):
-70-80fps
-By disabling cockpit view I was able to boost extra 100-150fps. So a car you are driving, actually affects A LOT to your performance.
-rFactor graphics engine is well optimized, you gain few tens of FPS just by going further away from the spheres. This might also relate to texture drawing.
-I'm not sure if rF treats duplicate objects as instances, so that could explain very good performance even with few million faces. I maybe should have tested different high poly models. But still, few million faces drawn into screen.
-If object is not visible, its not affecting FPS. So basically, you can boost infinite number of polys to your track if all are not visible at the same time. This probably still affects to memory usage in some way, I just couldn't monitor that.
-BTB didn't have any problems drawing the scene of 5 million faces. In 3ds MAX (my version at least), that would have been impossible feat.
2. TEXTURING
-This is area where you can really kill your performance instantly
First I tested 16 different 4096x4096 texture drew at same time with 6 mipmaps, but mipmap bias set to -36000. Object was simple box with 12 triangles:
-No notable drop in FPS
-Probably massive memory usage going on, but at least my GPU handled it
-I set LOD to 50m so that they would pop in my view - not any kind of lag at that point (probably loaded in memory when track loaded?)
-I should have gone testing way more textures at one scene, but it was just pain to create new boxes and copy new textures... But I cannot imagine track that should need even 16 different 4096 textures, if not using atlases.
Second thing I tested was large amount of duplicates of one texture. I made 90 000 boxes visible at all times in my scene, and set a shared textures with different resolution. Mipmap was 6 maps and bias 0:
Boxes with 4096x4096
115fps
Boxes with 128x128
130fps
Boxes with 32x32
111fps
First of all, massive drop in performance. Only about million triangles in scene, but FPS went down like a rock compared to poly test.
-Note inconsistency in texture size and FPS performance. What could that be? Small texture is not that performance pro in the end compared to huge? Maybe needs more looking into.
-BTB performance was also dropped dramatically, because of large amount of objects.
3. COLLISIONS
-Common knowledge is that setting collision to complex objects is big no no. My test results are against this, or then I did something terribly wrong in my tests.
I added 32 highpoly spheres to a scene, and set collision ON to them all. Combined number of triangles was about 2 million:
-No notable drop in FPS when viewing compared to without collision.
-I crashed into them, small drop maybe few tens.
It was not a performance issue in any way. About of how it used my RAM, i don't know. Still: 2 million colliding triangles in my scene without no problems. That's way more than necessary in any imaginable situation.
4. CONCLUSIONS
-With all test scenarios, my track loaded about at the same time.
-We are under the mercy of car modders: Cars eat a massive chunk of resources, and the rest of the resources, if any, is left for us to use. Sure some car mods could be made with more economical techniques, but it is not my thing to go into that. My one car tests really give you distorted image of the performance. In some mods, I can kill my playability with only just 30 cars in very low quality track!
-You should use textures wisely, looks like combining texture "atlases" is really a good way to go since large amount of small textures might kill the performance much more than expected. And seems also like you shouldn't be afraid of using few huge textures now and then (=atlas maybe?).
-With one car in use (like rally tracks), there seems not to be any normal day limits of what you can do.
-Polygons, go for it IF NECESSARY. 100 000 triangle balloon at the sky could be easily do and calculated in game, but it would be just stupid. Use the available triangles for e.g. nice terrain.
-Collisions: might be that we are not fully aware of the issues and possibilities here. But I still prefer simple boxes and planes over complex objects, just because in rF your car can get stuck in complex collision shapes and might trigger infinite loop that freezes the computer.
Hope this is interesting and maybe helpful!