The online racing simulator
Before: 10.83s
After: 4.67s

Reduced loading times twice loading Blackwood with Loading tracks after starting LFS disabled. Thank you Daniel.
Prepared a whole Excel table to compare the original and the converted tex. speeds and the program keeps crashing at random. Sometimes it successfully converts 5 textures, sometimes 25, sometimes even 60. And some of them couldn't be opened.

Crashlog example:
Problem signature:
Problem Event Name: BEX
Application Name: LFS Texture converter.exe
Application Version: 0.0.0.0
Application Timestamp: 53930a33
Fault Module Name: StackHash_0a9e
Fault Module Version: 0.0.0.0
Fault Module Timestamp: 00000000
Exception Offset: 10c05876
Exception Code: c0000005
Exception Data: 00000008
OS Version: 6.1.7601.2.1.0.768.3
Locale ID: 1051
Additional Information 1: 0a9e
Additional Information 2: 0a9e372d3b4ad19135b953a78882e789
Additional Information 3: 0a9e
Additional Information 4: 0a9e372d3b4ad19135b953a78882e789

Covered some errors and hopefullly fixed mentioned problems.

Test it (with original textures), if it proves good I will add it to the first post
Wow, Thats absolutly amazing. Final version works fine for me, converted all textures. And the result is brilliant. BL before 14.9s, after 1.8s. WUT!? Thanks a lot
Great one, fixed my crashes. Finally made the table, I hope I didn't mess up those calculations too hard. (edit: for example Blackwood 1 means BL1 (GP Track), Aston 7 means AS7 (North))
Attached images
calc.png
No conversion errors here as well
Well done for fixing the bugs Daniel!
Quote from MandulAA :Great one, fixed my crashes. Finally made the table, I hope I didn't mess up those calculations too hard.

Your table says "default textures" in the left column. Do you mean the original ones supplied with LFS? Or custom textures?

I'm asking because I suppose that SO and BL originals shouldn't be speeded up much by Daniel's tool as I believe they were saved in the correct format already.

If not, I'll have to take another look...
Sorry for not being clear, I meant the default original textures supplied with LFS. The times I measured are from pressing OK to the disappearance of [generating].
Probably some shared textures between tracks don't have mipmaps. Also while monitoring load time for each texture with Process Monitor I noticed higher times for jpgs in pic folder. Thats why program convert ADS, SUITS, gloves too.
Yes JPG are definitely slow to load, both decoding and creating mipmaps, but there aren't that many of them. Maybe I'll take a closer look...
After converting I get this: (see attachment)
Attached images
lfs_00000003.jpg
Quote from vitaly_m :After converting I get this: (see attachment)

Seems ok at me (see attachment). (edit: have you used the updated program, or the program in the first post?)
Attached images
sotex.jpg
With updated version I get this:
Attached images
lfs_00000019.jpg
Quote from vitaly_m :With updated version I get this:

Glitchy disco road?

Maybe the textures you have been converting couldnt be converted? I'd like to see a snippet of the converter when you're converting.
Goes as usual:


data\dds\JA_Roof1.dds -> converted
data\dds\JA_RALLYXcurbs1.dds -> converted
data\dds\JA_rox1.dds -> converted
data\dds\JA_runoff1.dds -> converted
data\dds\JA_RXroad2.dds -> converted
data\dds\JA_RXroadmix.dds -> converted
data\dds\JA_RX_dirt1.dds -> converted
data\dds\JA_wallz2.dds -> converted
data\dds\JA_roadxtras.dds -> converted
data\dds\K8_exhaust1.dds -> converted
data\dds\K8_pads.dds -> converted
data\dds\JA_wallz3.dds -> converted
data\dds\keepleft.dds -> converted
data\dds\JA_wallz3ATEST.dds -> converted
data\dds\KYOframeATEST.dds -> converted
data\dds\JA_BGALP24.dds -> converted
data\dds\KYOtrees2ATEST.dds -> converted
data\dds\KYOpalmATEST.dds -> converted
data\dds\LEAF0ATEST.dds -> converted
data\dds\LEAF1ATEST.dds -> converted
data\dds\LEAF2ATEST.dds -> converted
data\dds\Leather3.dds -> converted
data\dds\LEAF3ATEST.dds -> converted
data\dds\Leather3_join.dds -> converted
data\dds\Leather3_stitch.dds -> converted
data\dds\LIGHTALPHA.dds -> converted
data\dds\licenseplates.dds -> converted
data\dds\LOGOALPHA.dds -> converted
data\dds\linezALPHA.dds -> converted
data\dds\logos2.dds -> converted
data\dds\linesALPHA.dds -> converted
data\dds\logos3.dds -> converted
data\dds\LX_GrillATEST.dds -> converted
data\dds\lorry2.dds -> converted
data\dds\Loo1.dds -> converted
data\dds\KYOtrees1ATEST.dds -> converted
data\dds\LX_Seat.dds -> converted
data\dds\markerpole.dds -> converted
data\dds\LX_Radiator.dds -> converted
data\dds\marquee.dds -> converted
data\dds\matt1.dds -> converted
data\dds\Metal2.dds -> converted
data\dds\marquee2.dds -> converted
data\dds\metal9.dds -> converted
data\dds\NDLCTRALPHA.dds -> converted
data\dds\LX_interior1.dds -> converted
data\dds\ofwind1ALPHA.dds -> converted
data\dds\Net_1ATEST.dds -> converted
data\dds\LX_interior2.dds -> converted
data\dds\Old_Tyres1.dds -> converted
data\dds\padsz.dds -> converted
data\dds\Old_Tyrestack.dds -> converted
data\dds\palmtrunk.dds -> converted
data\dds\petrlpump1.dds -> converted
data\dds\MRT.dds -> converted
data\dds\pillars1ATEST.dds -> converted
data\dds\pitlight.dds -> converted
data\dds\palmtop1ATEST.dds -> converted
data\dds\palmtop2ATEST.dds -> converted
data\dds\PIT_GFX1_BW.dds -> converted
data\dds\PIT_GFX1_SC.dds -> converted
data\dds\polelineALPHA.dds -> converted
data\dds\polystyrene1.dds -> converted
data\dds\pressed_met.dds -> converted
data\dds\Plight1ALPHA.dds -> converted
data\dds\presswinALPHA.dds -> converted
data\dds\pylon2ALPHA.dds -> converted
data\dds\RACELINEALPHA.dds -> converted
data\dds\railingATEST.dds -> converted
data\dds\pylon2ATEST.dds -> converted
data\dds\RALYconcrete3.dds -> converted
data\dds\RALY_Arrows.dds -> converted
data\dds\RALYarmco.dds -> converted
data\dds\RALY_mwaysign.dds -> converted
data\dds\RALY_pitdor.dds -> converted
data\dds\RALY_pole1.dds -> converted
data\dds\RALY_pole1ATEST.dds -> converted
data\dds\RALY_sp.dds -> converted
data\dds\RALY_umbr.dds -> converted
data\dds\RALY_spATEST.dds -> converted
data\dds\RALY_umbrATEST.dds -> converted
data\dds\RA_Grill.dds -> converted
data\dds\RA_GrillATEST.dds -> converted
data\dds\RA_DashALPHA.dds -> converted
data\dds\RA_seat1.dds -> converted
data\dds\RA_Texture.dds -> converted
data\dds\RA_Parts.dds -> converted
data\dds\RB_Interior1.dds -> converted
data\dds\rearscreenALPHA.dds -> converted
data\dds\reflect.dds -> converted
data\dds\ridge.dds -> converted
data\dds\RB_interior2.dds -> converted
data\dds\Roadsigns1.dds -> converted
data\dds\Roadsigns1ATEST.dds -> converted
data\dds\Roadsigns2ATEST.dds -> converted
data\dds\SCadback.dds -> converted
data\dds\SCArmcoback.dds -> converted
data\dds\PIT_GFX1.dds -> converted
data\dds\SCbricks12B.dds -> converted
data\dds\SCbricks12.dds -> converted
data\dds\SCbricks2.dds -> converted
data\dds\SCcinema2ALPHA.dds -> converted
data\dds\SCbushATEST.dds -> converted
data\dds\SCcinemawall.dds -> converted
data\dds\SCcinemaALPHA.dds -> converted
data\dds\SCclock.dds -> converted
data\dds\SChotel22ALPHA.dds -> converted
data\dds\SClampost.dds -> converted
data\dds\SCnewshopsALPHA.dds -> converted
data\dds\SCoffice18ALPHA.dds -> converted
data\dds\SColdbuildALPHA.dds -> converted
data\dds\SColdbuild_wall.dds -> converted
data\dds\SCseatATEST.dds -> converted
data\dds\SCtower1ALPHA.dds -> converted
data\dds\PIT_GFX1_AST.dds -> converted
data\dds\SCtower3ALPHA.dds -> converted
data\dds\SCtower5ALPHA.dds -> converted
data\dds\SCtower6base.dds -> converted
data\dds\SCtower6ALPHA.dds -> converted
data\dds\SCtracks.dds -> converted
data\dds\SCtower6brick.dds -> converted
data\dds\SCTrainS2ALPHA.dds -> converted
data\dds\Scwall3.dds -> converted
data\dds\SCTrainSALPHA.dds -> converted
data\dds\SCwindws6.dds -> converted
data\dds\SCwnd8brick.dds -> converted
data\dds\SCwindws1ALPHA.dds -> converted
data\dds\SCwnd8brick2.dds -> converted
data\dds\SCwndows10ALPHA.dds -> converted
data\dds\SCwndows10brick.dds -> converted
data\dds\SCwndows11ALPHA.dds -> converted
data\dds\SCwndows13ALPHA.dds -> converted
data\dds\SCfenceALPHA.dds -> converted
data\dds\SCwndows15ALPHA.dds -> converted
data\dds\SCwndows16ALPHA.dds -> converted
data\dds\SCwndows15wall.dds -> converted
data\dds\SCwndows18ALPHA.dds -> converted
data\dds\SCwndows6ALPHA.dds -> converted
data\dds\SCwndows7ALPHA.dds -> converted
data\dds\SCwndows4ALPHA.dds -> converted
data\dds\SCwndows5ALPHA.dds -> converted
data\dds\SCwndows82ALPHA.dds -> converted
data\dds\SCwndows83ALPHA.dds -> converted
data\dds\SCwndows9ALPHA.dds -> converted
data\dds\SCwndows8ALPHA.dds -> converted
data\dds\SCwndws12bALPHA.dds -> converted
data\dds\SCwndws12ALPHA.dds -> converted
data\dds\SC_halogen.dds -> converted
data\dds\SC_htlwnd1ALPHA.dds -> converted
data\dds\SC_DTKALPHA.dds -> converted
data\dds\SC_htlwnd2ALPHA.dds -> converted
data\dds\SCwndows9brick.dds -> converted
data\dds\SC_htlwnd3ALPHA.dds -> converted
data\dds\seatbelt.dds -> converted
data\dds\SC_MVHALPHA.dds -> converted
data\dds\seatcloth_2b.dds -> converted
data\dds\seatcloth_1b.dds -> converted
data\dds\shadowALPHA.dds -> converted
data\dds\Seat1.dds -> converted
data\dds\ShiftSequ_2.dds -> converted
data\dds\ShiftSequ_3.dds -> converted
data\dds\Shopfront2.dds -> converted
data\dds\Shopfront3.dds -> converted
data\dds\seat_XRGT.dds -> converted
data\dds\Shopfront1.dds -> converted
data\dds\Shopfront5.dds -> converted
data\dds\Shopfront4.dds -> converted
data\dds\signbak1ATEST.dds -> converted
data\dds\shoptop16ALPHA.dds -> converted
data\dds\shoptop15ALPHA.dds -> converted
data\dds\signbak2.dds -> converted
data\dds\SKP_cone.dds -> converted
data\dds\SKP_cone2.dds -> converted
data\dds\SKP_concret1.dds -> converted
data\dds\SKP_conebase.dds -> converted
data\dds\SKP_HiSpwl.dds -> converted
data\dds\SKY2007sunny1_E.dds -> converted
data\dds\SKP_HiSpwlATEST.dds -> converted
data\dds\Sauberweel1.dds -> converted
data\dds\Skyovercast6_E.dds -> converted
data\dds\Skycloudysnst2_E.dds -> converted
data\dds\Sky_overcast3_E.dds -> converted
data\dds\Sky_overcast_E.dds -> converted
data\dds\SKY_semisun_E.dds -> converted
data\dds\Sky_sunset4_E.dds -> converted
data\dds\Sky_sunset_E.dds -> converted
data\dds\SMLBALPHA.dds -> converted
data\dds\Skysunny7_E.dds -> converted
data\dds\speaker1.dds -> converted
data\dds\StandgfxATEST.dds -> converted
data\dds\Skyovercast10_E.dds -> converted
data\dds\STARTALPHA.dds -> converted
data\dds\Standmetal1.dds -> converted
data\dds\step1ATEST.dds -> converted
data\dds\suedeskinSTTCH3.dds -> converted
data\dds\suedeskinSTTCH2.dds -> converted
data\dds\suede_skin_2.dds -> converted
data\dds\Skysunny6_E.dds -> converted
data\dds\sunscreen2ALPHA.dds -> converted
data\dds\s_glassALPHA.dds -> converted
data\dds\sunscreenALPHA.dds -> converted
data\dds\s_LX_winALPHA.dds -> converted
data\dds\S_LIGHTS.dds -> converted
data\dds\s_UF_headALPHA.dds -> converted
data\dds\s_UF_winALPHA.dds -> converted
data\dds\s_windowALPHA.dds -> converted
data\dds\s_windxrALPHA.dds -> converted
data\dds\tent.dds -> converted
data\dds\testcarbon.dds -> converted
data\dds\Trailer1.dds -> converted
data\dds\testalloy4.dds -> converted
data\dds\Treebak2ATEST.dds -> converted
data\dds\treetex1_aATEST.dds -> converted
data\dds\trunks1.dds -> converted
data\dds\tunel_lite.dds -> converted
data\dds\Trailer2.dds -> converted
data\dds\TYRE.dds -> converted
data\dds\TVstandATEST.dds -> converted
data\dds\UF_Parts.dds -> converted
data\dds\sunsetoc1_E.dds -> converted
data\dds\UF_Texture.dds -> converted
data\dds\WHEEL.dds -> converted
data\dds\tyremarks1ALPHA.dds -> converted
data\dds\Suncloudy1_E.dds -> converted
data\dds\windgen.dds -> converted
data\dds\WSTgrsbitATEST.dds -> converted
data\dds\wiperblade.dds -> converted
data\dds\WSTgrsbldATEST.dds -> converted
data\dds\Wheel_felt3.dds -> converted
data\dds\whitewall1.dds -> converted
data\dds\WST_arrows.dds -> converted
data\dds\WSTtrees6ATEST.dds -> converted
data\dds\WST_curb.dds -> converted
data\dds\WST_grassbank.dds -> converted
data\dds\WST_grasshill2.dds -> converted
data\dds\WST_grass.dds -> converted
data\dds\WST_grasspit1.dds -> converted
data\dds\WST_grassroad.dds -> converted
data\dds\WST_roadBUMP.dds -> converted
data\dds\WSTmountALP24.dds -> converted
data\dds\XFdialsALP24.dds -> converted
data\dds\WST_tyres1.dds -> converted
data\dds\XFgt_carpet.dds -> converted
data\dds\XF_cloth1.dds -> converted
data\dds\XF_Interior1.dds -> converted
data\dds\XFGTRinter1.dds -> converted
data\dds\XF_Interior2.dds -> converted
data\dds\XRcage.dds -> converted
data\dds\XF_plastic1.dds -> converted
data\dds\XRGT_Alloy2.dds -> converted
data\dds\WST_grassruf3.dds -> converted
data\dds\XRRwhlcenter1.dds -> converted
data\dds\XRR_Alloy1.dds -> converted
data\dds\XRR_Switches1.dds -> converted
data\dds\XR_felt1.dds -> converted
data\dds\XR_Interior1.dds -> converted
data\dds\WST_road.dds -> converted
data\dds\XR_Interior2.dds -> converted
data\dds\XR_Texture.dds -> converted
data\dds\XRdialsALP24.dds -> converted
data\pic\AS_ADS3.jpg -> converted
data\pic\AS_ADS1.jpg -> converted
data\pic\AS_ADS2.jpg -> converted
data\pic\AS_ADS4.jpg -> converted
data\pic\AU_ADS1.jpg -> converted
data\pic\AU_ADS2.jpg -> converted
data\pic\AX_ADS1.jpg -> converted
data\pic\BL_ADS1.jpg -> converted
data\pic\BL_ADS2.jpg -> converted
data\pic\FE_ADS2.jpg -> converted
data\pic\BL_ADS3.jpg -> converted
data\pic\FE_ADS4.jpg -> converted
data\pic\FE_ADS1.jpg -> converted
data\pic\FE_ADS5.jpg -> converted
data\pic\FE_ADS6.jpg -> converted
data\pic\FE_ADS3.jpg -> converted
data\pic\GLOVEB.jpg -> converted
data\pic\GLOVEG.jpg -> converted
data\dds\XRracedashALP24.dds -> converted
data\pic\HE_Marshall.jpg -> converted
data\pic\FE_ADS7.jpg -> converted
data\pic\GlovesS.jpg -> converted
data\pic\KY_ADS1.jpg -> converted
data\pic\KY_ADS2.jpg -> converted
data\pic\KY_ADS3.jpg -> converted
data\pic\KY_ADS4.jpg -> converted
data\pic\SO_ADS1.jpg -> converted
data\pic\KY_ADS5.jpg -> converted
data\pic\SO_ADS2.jpg -> converted
data\pic\SO_ADS3.jpg -> converted
data\pic\SUITG.jpg -> converted
data\pic\SUITB.jpg -> converted
data\pic\SUITO.jpg -> converted
data\pic\SUITR.jpg -> converted
data\pic\SUITX.jpg -> converted
data\pic\SUITS.jpg -> converted
data\pic\WE_ADS1.jpg -> converted
data\pic\WE_ADS2.jpg -> converted

but each time I convert, different textures fail
Hmm... are the textures you were converting default or custom textures?
Just tried it with wine and default textures, seems to work fine and well
Quote from rosewood2 :Hmm... are the textures you were converting default or custom textures?

Default ones.
Quote from vitaly_m :Default ones.

Hmm... I don't know what is the cause for such shenanigans. Sorry, I was just trying to be helpful.

Edit: 200th post! Woohoo!
Quote from vitaly_m :With updated version I get this:

ummm, thats definitely some problem with mipmaps
Which OS are you running?
You said you have converted default textures, so no point in asking you to upload these, but can you provide faulty textures after they were converted? Not sure it will help, just in case


Program showed the possibilities, I guess it wont take too much time that our DX pro implement it inside LFS.exe As LFS already load textures+convert, there is only one more thing to do D3DXSaveTextureToFile which will simply save textures from memory where they are in correct format. Not save like each time track load, but some option ...

I'm not experienced at DirectX, so I'm more like guessing things
And as I don't have much free time lately, here is the source (VS2013+DX SDK). Some things are changed, removed multithreading, to be honest I didn't even tried if it works like that, but base of how it works should be there.
Attached files
Texture Converter_source.rar - 8.5 KB - 302 views
Now my tracks load ~10 seconds faster, very nice job!
I think version I posted few days ago proved good for most of us, except problem which Vitaly has with both versions. I have added it now to the first post.
EDIT: FOR EVERYONE READING, THIS BUG WAS FIXED IN V3!

I think I'm having similar issues to Vitaly, all textures report
-> converted

and all .dds files are loaded into LFS (no ingame errors).

But this happens:

http://i.imgur.com/RyLqFA9.jpg

I tried doing it a couple of times but the result is the same.

Running LFS0.6E on a 64bit Windows 7 Ultimate system.
Texture Converter is bad. I dont care speed loading hi textures. Can get SSD or SSHD is FASTER! than HDD.
Quote from GT4_PL :Texture Converter is bad. I dont care speed loading hi textures. Can get SSD or SSHD is FASTER! than HDD.

Yeah, when you can speed it up for free.

FGED GREDG RDFGDR GSFDG