Elvas Tower: Some questions relating to content creation for OpenRails - Elvas Tower

Jump to content

  • 2 Pages +
  • 1
  • 2
  • You cannot start a new topic
  • You cannot reply to this topic

Some questions relating to content creation for OpenRails Some anwers and advice needed.. Rate Topic: -----

#1 User is offline   Hamza97 

  • Engineer
  • Group: Status: Contributing Member
  • Posts: 606
  • Joined: 01-March 15
  • Gender:Male
  • Simulator:Open Rails
  • Country:

Posted 27 November 2019 - 11:02 PM

Hello. As some of you might have known.., I have been making add-ons for Open Rails for quite a while now.. :sweatingbullets: And in every new project, I aim to increase the realism as well as performance efficiency of model as much as possible... In regards to this, I have some questions which I need some inputs and advice and I am sure the discussion on these questions would be helpful to others too ... ^_^

1. Does using a freight anim results in a draw call .... ?? Even if it uses the same material and texture as parent shape ... ??

2. For my next project, I am contemplating on using DDS format for my textures and reading various articles regarding DDS compression ... , However I am still confused regarding it.

For e.g. a 2048 DDS file is compressed 500kb on storage .., When it gets loaded in game and is PROCESSED by CPU and GPU ..., Is it still 500kb..?? Also finally when it gets LOADED on GPU VRAM what size would be it..?? Still 500kb ..?? Or it would be loaded uncompressed .., say at 2MB .. ??

3. Assume there are bunch of locos ..., All of which use SAME 4*4096 res textures ( DDS or ACE). However, In game all locos MAY or MAY NOT be their in same time in the scene. How does this sound from performance efficiency point ... ??


Any advice on above questions would be helpful ... :sweatingbullets: Also apologies if some of this question sounds naive... :o

#2 User is offline   scottb613 

  • Vice President
  • Group: Status: First Class
  • Posts: 2,973
  • Joined: 06-July 09
  • Gender:Male
  • Location:Downeast Maine (soon)
  • Simulator:ORTS
  • Country:

Posted 28 November 2019 - 04:52 AM

View PostHamza97, on 27 November 2019 - 11:02 PM, said:

Hello. As some of you might have known.., I have been making add-ons for Open Rails for quite a while now.. :sweatingbullets: And in every new project, I aim to increase the realism as well as performance efficiency of model as much as possible... In regards to this, I have some questions which I need some inputs and advice and I am sure the discussion on these questions would be helpful to others too ... ^_^

1. Does using a freight anim results in a draw call .... ?? Even if it uses the same material and texture as parent shape ... ??

2. For my next project, I am contemplating on using DDS format for my textures and reading various articles regarding DDS compression ... , However I am still confused regarding it.

For e.g. a 2048 DDS file is compressed 500kb on storage .., When it gets loaded in game and is PROCESSED by CPU and GPU ..., Is it still 500kb..?? Also finally when it gets LOADED on GPU VRAM what size would be it..?? Still 500kb ..?? Or it would be loaded uncompressed .., say at 2MB .. ??

3. Assume there are bunch of locos ..., All of which use SAME 4*4096 res textures ( DDS or ACE). However, In game all locos MAY or MAY NOT be their in same time in the scene. How does this sound from performance efficiency point ... ??


Any advice on above questions would be helpful ... :sweatingbullets: Also apologies if some of this question sounds naive... :o


Hi Hamza,

I can only handle one - I can almost guarantee that each freight animation will spawn a new draw call...

In my software - I'm plagued with a legacy MSTS exporter - which tried to handle the issue with large parts in MSTS - so every 2800 Poly's I'm generating a new Draw Call on the same model... Fortunately - my freight cars which are the most numerous in any given scene don't usually exceed this limit on a single part... My locomotives make many unnecessary Draw Calls because of this... I wish I could figure out how to fix this - as efficiency is my thing... Shape Fixer will break down large parts into smaller if needed - but it won't assemble small parts into larger...

Regards,
Scott

#3 User is offline   Eldorado.Railroad 

  • Foreman Of Engines
  • Group: Status: Contributing Member
  • Posts: 977
  • Joined: 31-May 10
  • Gender:Male
  • Country:

Posted 28 November 2019 - 08:13 PM

View Postscottb613, on 28 November 2019 - 04:52 AM, said:

In my software - I'm plagued with a legacy MSTS exporter - which tried to handle the issue with large parts in MSTS - so every 2800 Poly's I'm generating a new Draw Call on the same model... Fortunately - my freight cars which are the most numerous in any given scene don't usually exceed this limit on a single part... My locomotives make many unnecessary Draw Calls because of this... I wish I could figure out how to fix this - as efficiency is my thing... Shape Fixer will break down large parts into smaller if needed - but it won't assemble small parts into larger...


Scott,

I ask you, if not beg you to start using Blender. I am using it as an intermediate, and its uses are growing daily. Wayne has provided several exporters for MSTS from Blender. We can complain and hope as much as we want, but a new(er) shape file format for Open Rails is not going to happen anytime soon. The things that I do are complex and NDAs/Eulas get in the way. But I can say that the .obj format is your friend and loads nicely in Blender.

The Monogame version of Open Rails seems to be immune to "excessive" drawcalls. So if you have a decent/recent Intel/AMD desktop with the latest GPU, I would not worry about drawcalls, for the moment. If you intend to design a model with millions of polygons, well I have not tried that yet in Open Rails, but I can say your FPS will slow to a crawl because of it. Of course what I just wrote means, umm, you will use the 3DCanvas exporter, oh well I tried!

Steve

#4 User is offline   Eldorado.Railroad 

  • Foreman Of Engines
  • Group: Status: Contributing Member
  • Posts: 977
  • Joined: 31-May 10
  • Gender:Male
  • Country:

Posted 28 November 2019 - 08:17 PM

View PostHamza97, on 27 November 2019 - 11:02 PM, said:

Any advice on above questions would be helpful ... :sweatingbullets: Also apologies if some of this question sounds naive... :o


Really this is a question that James should (be able) to answer. Alas between Christmas and Brexit..who knows if he will. You can get some idea what you are doing with the full F5 debugger, once your model is built. It will tell you how much memory is being gobbled up, as well as how many "primitives" are being displayed. I would create a very bare and SMALL test route to find out what the impact of your model/textures is going to be. Are you using Blender and Wayne's exporter?

#5 User is offline   Hamza97 

  • Engineer
  • Group: Status: Contributing Member
  • Posts: 606
  • Joined: 01-March 15
  • Gender:Male
  • Simulator:Open Rails
  • Country:

Posted 29 November 2019 - 05:21 AM

Quote

I can only handle one - I can almost guarantee that each freight animation will spawn a new draw call...


Ok Thanks.... :sweatingbullets:

Quote

Are you using Blender and Wayne's exporter?


Blender 2.8 and Wayne`s exporter...

Quote

If you intend to design a model with millions of polygons,


No of course not that much for a single loco... :blink: Around 200k max ... ^_^

Quote

I would create a very bare and SMALL test route to find out what the impact of your model/textures is going to be


I tried that but couldn't really infer from debugger any useful info.. :(

#6 User is offline   wacampbell 

  • Member since Nov. 2003
  • Group: Fan: Traction Nuts
  • Posts: 2,342
  • Joined: 22-November 03
  • Gender:Male
  • Location:British Columbia, Canada
  • Country:

Posted 29 November 2019 - 07:41 AM

View PostHamza97, on 27 November 2019 - 11:02 PM, said:

2. For my next project, I am contemplating on using DDS format for my textures and reading various articles regarding DDS compression ... , However I am still confused regarding it.

For e.g. a 2048 DDS file is compressed 500kb on storage ..,
When it gets loaded in game and is PROCESSED by CPU and GPU ..., Is it still 500kb..??

Yes, assuming they are DXT compressed, vs GZIPPED or some other compression.

Quote

Also finally when it gets LOADED on GPU VRAM what size would be it..?? Still 500kb ..?? Or it would be loaded uncompressed .., say at 2MB .. ??

Yes, still 500kb. GPU's know and understand the DXT compression format and can use these images directly without uncompressing first.

Quote

3. Assume there are bunch of locos ..., All of which use SAME 4*4096 res textures ( DDS or ACE). However, In game all locos MAY or MAY NOT be their in same time in the scene. How does this sound from performance efficiency point ... ??

Sharing the same texture over multiple locomotives reduces GPU memory consumption , load times and tile load stutter, but such sharing doesn't necessarily improve frame rates.

If you plan to use large 4096 res textures, DXT1 compression will minimize the above mentioned impacts.

#7 User is offline   scottb613 

  • Vice President
  • Group: Status: First Class
  • Posts: 2,973
  • Joined: 06-July 09
  • Gender:Male
  • Location:Downeast Maine (soon)
  • Simulator:ORTS
  • Country:

Posted 29 November 2019 - 08:26 AM

View PostEldorado.Railroad, on 28 November 2019 - 08:13 PM, said:

Scott,

I ask you, if not beg you to start using Blender. I am using it as an intermediate, and its uses are growing daily. Wayne has provided several exporters for MSTS from Blender. We can complain and hope as much as we want, but a new(er) shape file format for Open Rails is not going to happen anytime soon. The things that I do are complex and NDAs/Eulas get in the way. But I can say that the .obj format is your friend and loads nicely in Blender.

The Monogame version of Open Rails seems to be immune to "excessive" drawcalls. So if you have a decent/recent Intel/AMD desktop with the latest GPU, I would not worry about drawcalls, for the moment. If you intend to design a model with millions of polygons, well I have not tried that yet in Open Rails, but I can say your FPS will slow to a crawl because of it. Of course what I just wrote means, umm, you will use the 3DCanvas exporter, oh well I tried!

Steve


Hi Steve,

Hah - yeah - seems all roads lead to Blender... It's on my list - truly - it's just tough to give up "knowing what I'm doing" - to go back to a complete "newb" fumbling in the dark...

That said - out of all the North American content I've looked at over the years - I am one of the only ones that seem to be concerned with "draw calls" in their models - as it's pretty obvious when you look... I did a great deal of of performance testing and there are considerable performance gains to be had when you have a large number of optimized models in any given scene...

I have looked at the shape file in a text editor - seeing if I could figure out how to reassemble the pieces/parts manually - if I could - I could "Shell Script" a solution using Awk - - - but not much hope there - I couldn't find the definitive logical groupings...

I - must - download - Blender - - - again...
:p

Regards,
Scott

#8 User is offline   Hamza97 

  • Engineer
  • Group: Status: Contributing Member
  • Posts: 606
  • Joined: 01-March 15
  • Gender:Male
  • Simulator:Open Rails
  • Country:

Posted 29 November 2019 - 08:12 PM

Quote

In my software - I'm plagued with a legacy MSTS exporter - which tried to handle the issue with large parts in MSTS - so every 2800 Poly's I'm generating a new Draw Call on the same model... Fortunately - my freight cars which are the most numerous in any given scene don't usually exceed this limit on a single part... My locomotives make many unnecessary Draw Calls because of this...


I actually slightly modified Wayne`s exporter so that a new subobject is generated at 10,666 poly instead of normal limit as above ... :D The result is that even my locos have high polycount .., there Draw Call counts are roughly same as older low poly locos ... B)

Quote

Yes, still 500kb. GPU's know and understand the DXT compression format and can use these images directly without uncompressing first.


Okie great ... ^_^

#9 User is offline   James Ross 

  • Open Rails Developer
  • Group: Status: Elite Member
  • Posts: 5,488
  • Joined: 30-June 10
  • Gender:Not Telling
  • Simulator:Open Rails
  • Country:

Posted 10 December 2019 - 12:23 PM

View PostHamza97, on 27 November 2019 - 11:02 PM, said:

1. Does using a freight anim results in a draw call .... ?? Even if it uses the same material and texture as parent shape ... ??

Yes, as it is a separate instance of the model to place into the scene.

View PostHamza97, on 27 November 2019 - 11:02 PM, said:

2. For my next project, I am contemplating on using DDS format for my textures and reading various articles regarding DDS compression ... , However I am still confused regarding it.

For e.g. a 2048 DDS file is compressed 500kb on storage .., When it gets loaded in game and is PROCESSED by CPU and GPU ..., Is it still 500kb..?? Also finally when it gets LOADED on GPU VRAM what size would be it..?? Still 500kb ..?? Or it would be loaded uncompressed .., say at 2MB .. ??

For all DDS files (and all DXT or uncompressed ACE files) the on-disk size is the same as the consumed GPU VRAM (and CPU RAM for XNA/DirectX 9).

The odd one out is ACE Zlib compression, which has to be uncompressed during loading, so it will consume the uncompressed size in GPU VRAM (and CPU RAM).

View PostHamza97, on 27 November 2019 - 11:02 PM, said:

3. Assume there are bunch of locos ..., All of which use SAME 4*4096 res textures ( DDS or ACE). However, In game all locos MAY or MAY NOT be their in same time in the scene. How does this sound from performance efficiency point ... ??

As long as the texture is only one file (i.e. not duplicated on-disk), it will only be loaded into GPU VRAM (and CPU RAM) once.

#10 User is offline   Genma Saotome 

  • Owner Emeritus and Admin
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • Group: ET Admin
  • Posts: 15,307
  • Joined: 11-January 04
  • Gender:Male
  • Location:United States
  • Simulator:Open Rails
  • Country:

Posted 10 December 2019 - 12:46 PM

View PostJames Ross, on 10 December 2019 - 12:23 PM, said:


As long as the texture is only one file (i.e. not duplicated on-disk), it will only be loaded into GPU VRAM (and CPU RAM) once.


Rephrased: a texture file on a given path is loaded to VRAM just once. Put copies on n different paths and it will be loaded to VRAM n times.

On learning this (from James, of course) I have taken to moving instances of the same model skinned slightly differently tot he same folder. For example, I had 5 or 6 SFRD reefers that varied only by one texture (the one holding the car numbers) that were in individual folder5s. They're all in one folder now (\RS_SFRD_Rr30). I had to open each .s file and rename the unique texture as well as rename the actual texture (e.g., carside.ace to SFRD_32452.ace). The gain is now 5 or 6 other textures are loaded in VRAM just once where as before each one had been loaded many times.

  • 2 Pages +
  • 1
  • 2
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users