Texturing roads

I’m making a system of roads, attempting to be close to real world scale, and using them with spline meshes. But I’m running into problems texturing them, mainly the scale for the road lines. On most of my roads its fairly easy, but some pieces when UVmapped with proper aspect ratio, don’t fit the whole UVmap, so I cant just tile textures. And then other pieces are 30meters +, and odd sized. So even with a 2048x2048 texture, the road line can only be 3px across. My material uses the Texture with the lines as a mask with an anti-aliasing node, and the main road surface is a world-aligned “asphalt” texture.

Here’s an example of one of my Roadline textures, scaled down with a brown background to show the lines:


The mesh its on is 6000x1830.

One of my problem meshes is using this UV/line layout, once again scaled down:


As you can see, the actual road surface is so wide, it only takes up half of the texture, so if I need to tile the texture, I cant. My only thought to fix this is by making the sides of the road (the sections on the right half) a different material slot. But adding more material slots will add to draw calls right? the performance hit might be negligible at this point in the project, but once I’ve added in world detail I may get to the point where I need to really optimise things…

My biggest flat surface so far is 10684x10684, and is using a 2048 texture, and I’ve got about 3px for a 10cm road line. But I’m now looking at a piece that has a real-world size of 200m in length… How do I texture that? I’m thinking I will scale it down in game to about 100m, but thats still pretty large… And then also how can I add in the tire marks? The darkened lines made by cars over time (can see them in any google earth map). Up until I made the road lines a mask, I was thinking of adding that detail with them, but that wouldnt work now.

Additional question: Whats going to be cheaper, using a material instance for the roads, or create a dynamic material instance on each blueprint creating the mesh?

i guess the material instance will be less requiring on hardware.