Home Technical Talk

Most efficient strategies for texturing modular architecture assets?

elios
node
Offline / Send Message
elios node

Hey Polycount.
I have been researching this topic for a while now, and I know that there are normally multiple ways to go about it. The context is that I'm practicing my modelling and texturing for non-stylized contemporary architecture assets, meant for a hypothetical fps game that has large open urban areas. By "efficient" I mean both production time and computer resource efficient.

What are your thoughts? How do you usually approach stuff like this? What methods do you use? How do you decide how and where to use trims, tileables and atlases? Is there a specific practical reason why the industry tends to prefer one method over the others?

I have read comments from different threads asking similar questions, but in my case I have a specific kind of environment, and I feel like certain environments favour some techniques more than others.

tl;dr for the examples section below - in my case, trim sheets feel inefficient and even messy to an extent. Using atlases where I absolutely have to and tiling textures for everything else keeps things tidy and makes manual lods more efficient and easy, but also means more time spent adjusting UVs for normal mapped bevels and others things to work vs using a regular trim.

The standard approach nowadays seems to be using tiling textures or atlases as a base and trim sheets for details like window frames and other things. Then some games, of which Mirror's Edge: Catalyst is the more "extreme" example, use tiling textures and, well, extrude them in 3d. Catalyst doesn't use trim sheets pretty much at all in its architectural assets. All of their buildings are broken down into small square or rectangular facade pieces, textured with a single tiling texture or, more rarely, an atlas, and the modules are used interchangeably between various buildings in the city.

Overwatch seems to be doing both.

I then also looked at how Dying Light 2 did it and...
My main issue with the way that _I think_ they did it is that while they do use one or two trim strips for details like window frames and gratings, they also appear to pack unique glass textures either next to those trims or in a separate texture, and that looks kinda counterproductive. Because, what is the point exactly in keeping window glass and frames separate from each other when they're meant to be used together anyway, other than potentially avoiding texture bleed/mipmap issues when using frame trims alone, without the glass? It might have to do with the way their materials were set up or some other technical stuff though.

Regardless, I have tried both approaches, and while using only the tiling textures keeps everything pretty tidy and makes manual LOD creation more efficient, since your lowest LOD can be a simple plane, it's also noticeably more UV-ing work than using a traditional trim, at least for me.

Replies

  • Benjammin
    Offline / Send Message
    Benjammin greentooth

    There's never one reason, because every game is a little different in what is contributing to render time. The question of production time vs. resource usage is absolutely a consideration, too.

    Glass:

    Is it translucent? If yes, it probably needs an opacity map of some kind. If that's in an alpha channel, that texture requires more expensive compression, so it would be wasteful to include elements that are intended to be opaque. If its being driven by another texture, the compression isn't an issue, but its still texture space that might be unused. If its not translucent, you might want to pack it all together to save draw calls.

    Maybe you're limited in terms of texture resolution, so you don't have the space to pack it all together. While modern gpus can handle a whole bunch of 4K textures, that might put too much strain on your texture streaming in situations where the player/camera moves quickly through the environment.

    I guess that's a long-winded way of saying "Yes with an if/No with a but" :) At the end of the day, I do what my Tech Artist tells me to.

  • poopipe
    Offline / Send Message
    poopipe grand marshal polycounter

    You separate transparent and non transparent stuff because you need to use different materials (if every material supports transparency you fell at the first post)

    Trim sheets are called trim sheets because they're for detailing trims - this is what you should use them for. You dont have to use them if your trims aren't complicated enough to require it

    as for the rest of it…

    'it depends'

    eg.
    breaking your environment into lots of small objects will allow the gpu to cull more readily - this makes rendering geometry more efficient and means you can have more triangles in your objects without upsetting anything
    but…
    more objects means your cpu has to spend more time deciding what it should send to the gpu (you're not frustrum culling on the cpu so all it really has to work with is draw distance) this can lead to bottlenecks in submission causing you to have shitty, spiky frame times regardless of how cheap your geometry is.

    You're obviously doing your research and approaching this with the correct mindset - this should be applauded (I applaud it) . Your problem is that you've hit the stage where you need to test and work the answer out for yourself , anyone who gives you a definitive answer is either guessing or has profiled your levels.
    fwiw - your reasoning seems fine, I dont see any reason not to just follow your instinct and reassess later if it turns out you were wrong

    The best advice anyone can give (IMO) is to build your environment in the way that makes the most sense for efficient authoring (i.e small number of things reused frequently) . In most cases this will result in a fairly efficient set of resources at runtime and even if it does run like crap you'll be able to make changes easily.

  • Alex_J
    Offline / Send Message
    Alex_J grand marshal polycounter

    I dont have anything super helpful to add but just on that note of wondering why Dying Light did things one way or another, it's not always going to be the case that what ends up in the game was the best or most efficient thing. Could be there was some ideas that didn't pan out, time ran short, mass confusion… whatever. So just something to keep in mind. AAA generally has a consistent quality you can expect but that doesn't mean everything is perfect.

    And they can be using totally different toolsets that come with weird caveats you couldn't understand unless you used same stuff. So if you see something that doesn't make sense that doesn't mean somebody else knows everything and you know nothing.

  • Klunk
    Offline / Send Message
    Klunk ngon master

    Could be there was some ideas that didn't pan out, time ran short, mass confusion… whatever. So just something to keep in mind. AAA generally has a consistent quality you can expect but that doesn't mean everything is perfect.

    and that old chestnut feature creep.

  • poopipe
    Offline / Send Message
    poopipe grand marshal polycounter


    never happens :D

Sign In or Register to comment.