Search Unity

Waste in art

Discussion in 'General Discussion' started by Not_Sure, Jul 23, 2016.

  1. Not_Sure

    Not_Sure

    Joined:
    Dec 13, 2011
    Posts:
    3,546
    Okay, so I'm no artist. I doodle and play around, but I'm FAR from anything resembling an artist.

    All the same, I'm getting to the point where I find myself very critical of wasted resources from artists and feel like the art store has an inescapable problem with it as well.

    Namely models never seem to use textures and meshes multiple times over.

    Let me give an example, I came across this game model from that AAA thread:


    Ha, WHAT?!

    So this model (which DOES look amazing) seems to just waste resources left and right. There are so many repeating patterns on her that could be drawn from the same image. Why does the seam of her jacket need to have every single thread on the image, rather than making a small tiled section repeated?

    Same goes for her shoulders, her cuffs, and so on.

    But instead there's this insane resource hog setup that has 32 1024x1024 squares worth of images.

    Am I missing something here?

    The same issues come up with environment props.

    You see all these props on the store that have textures exclusive to the prop, rather than being able to swap out textures from a limited library that fit on them as needed.

    And one last question, why is it you never see multiple materials layered on top of one another? Like, why not have a terrain texture that shows a detailed look at a rock cliff face, but then have another one that is much larger that becomes more evident from a distance?

    Or have a texture for the groves in denim jeans layered with the fade and crevices seen at a distance?

    Tiled across the model


    Layered on top of the tiled denim


    Am I making sense?
     
  2. neginfinity

    neginfinity

    Joined:
    Jan 27, 2013
    Posts:
    13,566
    Yes, you're making sense and unity has features for this. For example, IIRC standard shader has several detail textures and detail mask as well, and you can go beyond that with surface shaders.

    I do recommend to try to figure out how much resources are wasted, though. You can significantly reduce texture memory use by setting them to "compressed".
     
    Not_Sure and Kiwasi like this.
  3. nipoco

    nipoco

    Joined:
    Sep 1, 2011
    Posts:
    2,008
    You're right.
    I guess this is more of a showcase model for portfolios.
    Artstation.com hosts a lot of such models, that look fantastic, but are unoptimized.
     
  4. Kiwasi

    Kiwasi

    Joined:
    Dec 5, 2013
    Posts:
    16,860
    Are you having a problem with resource shortage? Most systems have resources to burn, often more then an indie game can hope to fill.

    It you are struggling, then berate your artists and optimise every last bit out of your model. But until then you might be wasting time.
     
    theANMATOR2b likes this.
  5. AcidArrow

    AcidArrow

    Joined:
    May 20, 2010
    Posts:
    11,723
    I don't think doing fancy blending of multiple repeating patterns is necessarily less intensive. (less vram maybe, but that's about it?)

    Plus they can get a better result this way.
     
  6. Martin_H

    Martin_H

    Joined:
    Jul 11, 2015
    Posts:
    4,436
    Partly yes I'd say.

    The artwork you're picking on for wasting resources is a pure portfolio piece by this guy:
    https://www.artstation.com/artist/baj_singh
    https://bajsingh.wordpress.com/
    It seems like he is a lead character artist working on Total War: Warhammer at the moment. So I think it's pretty safe to assume he's not an idiot.

    When you're an artist that has to work at a AAA studio on assets that need to conform to a number of constraints, I'd imagine in your free time it's quite liberating to forget all those, and just focus on pushing quality and not wasting time. I'm quite sure he'd be able to work a lot more efficiently resource-wise (and does so at his day-job), but that would come at a cost of time and at a cost of quality. So why should he do that on a portfolio piece? It would be a bad decision for an artist at his level. When you're starting out you'll want to demonstrate in your portfolio that you can be efficient, but he's beyond that I'd say.

    But portfolio piece usecase aside and speaking more general, there is a lot more to the whole thing than just wasted texture space. When you're working on such models in a studio, they sometimes get iterated a lot on. The artist will need to go back, change aspects of the design in the high-poly, change parts of the low-poly model, re-unwrap parts, re-do the texturing. If you start using fancy optimization techniques you're burning artist time on every iteration, for a minor performance gain that you might never need, on an asset that might not even ship in it's current state. That is like taking 100$ bills and lighting them on fire. A top notch freelance artist costs double to tripple digit amounts of dollar per hour. You don't want him wasting that time on tasks that give little benefit to the final result.

    One of those time-sinks would be "responsiveness" of the tools you work with. I've experimented with using Substance Painter for an atlased texture that has 4 x 4 different 3D models on one texture set, for improved batching. The idea is sound from a draw-call/batching perspective, but it multiplies the total texture operation time for doing stuff in SP2 by a factor of 16 for each model on the sheet you are working on. SP does have a function to work on low-res versions of the texture to mitigate that time-cost by making tweaks on e.g. a 256x256 texture and then later upscaling to 1024x1024, but some of the filters and effects are heavily reliant on the working resolution. So either you bite the bullet and work on the 16 times slower highres version or you waste time on redoing changes that looked wrong after up-resing the texture again. Working on several texture sets even for a single character, can (doesn't necessarily have to, but in some situations it can) save artist time during production.

    Saving artist time is saving money. Imho it's a lot more sensible to have the texture atlasing be done automatically as either an automated preprocessing on import, or at runtime. I've made some Dota 2 skins, for those you work on a single texture set per item (e.g. weapon, helmet, boots, backpack, chestplate, etc. each a single set of multiple textures and a single model, plus a detail texture that is shared accross all the parts belonging to the model), and those get atlassed and batched together at runtime. You need to stay a bit away from the edges of the UV space with every object, because otherwise the adjacent textures in the atlas can bleed onto the wrong parts of the model in lowres mimaps. I've seen it happen, that's why I'm sure they build texture atlases. Also Dota is optimized to run on rather low-end systems.

    The idea of re-using different tileable textures accross different assets can make sense, but it doesn't necessarily have to. It always depends. For one you can't get the same look out of a tiled texture as you could with a custom bake and texture (for things like edge damage, rust and dirt on hardsurface assets this is a huge deal). Second, you need to have a highres enough low-poly model to use tiled textures, because you no longer have the baked normal map to compensate for shading errors. If you want to use multiple different tilable materials on a single object you most likely will have more UV splits in your model, which drive up the vertex count, which make dynamic batching less likely to be possible in Unity and also (afaik) affect performance more than polycount does.

    Then imagine you buy a set of 64 items on the assetstore, that all are super hardcore pre-optimized to only use a single atlased 4k set of textures accross all of the items, and they even are lowpoly enough to be dynamically batched. Sounds good? Now imagine you only need 1 of those, ever. Now you have a tiny lowpoly object with a 4k texture, that only actually uses 1,5625% of the texture space it occupies in memory. Faaaantastic...

    Imagine such a set of 64 items wants to avoid that dilemma by instead providing 4 1k texture sets that each represent a different kind of material (e.g. wood, stone, metal, decals). Now if you use only 1 item of the set it occupies the same amount of texture memory, but looks a lot more highres and makes better use of the texturespace. But it now costs 4 draw calls for only that 1 item... Also a bad tradeoff.

    Honestly, I can see why a store bought set of 64 assets would have 64 individual materials and texture sets. If you go that route at least you could use some 3rd party texture atlassing solution to get some decent optimizations on the subset of assets that you actually use, even accross multiple bought asset sets. How cool would that be? Imho the real tragedy here is that Unity doesn't have such a feature out of the box. I'd be fine if the atlases had to be set up manually by creating "atlas groups" and assigning meshes and textures to those groups, if you want them atlassed. It'd not be perfect, but I could see it being very useful if you use it on the most common sets of assets, like all furniture, or rocks, or nature props, or building kits.

    The one point where I agree with you is, that due to the low barrier to entry and the promise of $$$, there most likely are TONS of assets on the assetstore that are just unreasonably wasteful with their resources, and don't even look good to compensate. That we can agree on :).

    If you want art that is tailored to your needs in every aspect, then you need to hire a professional who can do that for you. The assetstore is not the final solution to the art asset question, even though it loves to sell that dream to hopeful indie devs. Just my 2 cents.
     
    McMayhem, QFSW, theANMATOR2b and 14 others like this.
  7. Pix10

    Pix10

    Joined:
    Jul 21, 2012
    Posts:
    850
    I agree that there are a lot of art assets (not just in Asset Store - choose any) that are wasteful or simply badly composed. The reason isn't people being lazy, it's because there's a vast number of inexperienced artists trying to break into games (most of them describing themselves as experienced). My advice is check the package content and thumbnails (when available), and forums, if you're concerned before purchase. But it's always buyer beware. If you want control over what you're buying, contract the work out - it's the only way to be sure.

    Re the the example shown, @Martin_H nailed it in spades. This isn't the sort of thing you're going to download from Turbosquid or the Asset Store, it's source art...the sort of thing you put in your portfolio because it shows good planning, organizational skills and workflow practices. Nice example too.
     
    theANMATOR2b and Not_Sure like this.
  8. neginfinity

    neginfinity

    Joined:
    Jan 27, 2013
    Posts:
    13,566
    Depends on the system. I remember having fun with android app - an asset author put 2k/4k textures onto everything and set them ALL to RGBA mode. There were also metallic textures at least in 2k resolution, which was made of a single flat color, and it was also in RGBA mode. Nothing beats having 3x 2k RGBA texture on a tiny candy bar in android app.

    Performance will decrease with higher texture resolutions. Impact will be bigger if textures are not mip-mapped, if data is being read in a very random pattern (instead of accessing nearby texls), or if the data is screen-aligned (very large sprites).
     
    Kiwasi, Ony, Martin_H and 1 other person like this.
  9. dogzerx2

    dogzerx2

    Joined:
    Dec 27, 2009
    Posts:
    3,967
    I don't know man... you're talking about characters, not environment. I think it's an acceptable 'waste' for characters, characters surface is not that huge, compared to terrain.

    I mean if Medieval Total War doesn't use repeat wrap mode for characters textures to gain performance, no other game should do it.

     
    theANMATOR2b, Kiwasi, Kondor0 and 3 others like this.
  10. neoshaman

    neoshaman

    Joined:
    Feb 11, 2011
    Posts:
    6,493
    Also this model solve a problem not everyone is able to solve, fluffy afro hair, which one of the complex case of turning into polygon stuff that has no business being in polygon. I guarantee that any people who tried modeling is only seeing that in "holy sh*t, how did he did that?", it's a great portfolio piece because it show great and unique problem solving skills.
     
  11. hippocoder

    hippocoder

    Digital Ape

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    Tiling often requires splatting. See substance painter's new 3 texture pbs splat blending and so on. It's expensive. You'd need that to do tiling with a main character. So this "waste" is actually more efficient than tiling. Tiling also requires you split the model up, introduce more verts, break things like shadows and so on, there's a lot of reasons. The only saving here is memory.

    Right, so memory is an issue when we're moving to 4k and 8k, but let's not forget GPUs are scaling alongside resolutions, so this isn't such a big issue. Next up, a robust texture streaming solution nails any issues like this. If they can stream GTA5 into 256 mb (ps3) then they can stream anything.

    Unity would very much benefit from an extended texture streaming system. Tiling game characters is generally a bad idea. Tiling environment objects is generally a good idea.
     
    theANMATOR2b, Not_Sure, Pix10 and 5 others like this.
  12. imaginaryhuman

    imaginaryhuman

    Joined:
    Mar 21, 2010
    Posts:
    5,834
    I guess you have a point (OP) except that maybe the budget for the art quality or whatever was high enough that they were 'allowed' to have custom textures for every part of the model, so that it would look more organic and NOT show signs of repetition. Maybe its an artistic quality thing, or maybe their engine just performs fine regardless of the extra memory or bandwidth.
     
  13. BrUnO-XaVIeR

    BrUnO-XaVIeR

    Joined:
    Dec 6, 2010
    Posts:
    1,687
    Yes you are.
    Lighting/Shading algorithms.
     
    theANMATOR2b likes this.
  14. Aabel

    Aabel

    Joined:
    Nov 4, 2012
    Posts:
    193
    There is another aspect of waste in art. Spending incredible amounts of time/money/effort on art that will barely, rarely or never be seen. But that's a whole different topic.
     
    zombiegorilla likes this.
  15. djweinbaum

    djweinbaum

    Joined:
    Nov 3, 2013
    Posts:
    533
    I agree there are a lot of assets on the asset store made like characters with unique UVs, which is indeed wasteful and a terrible way to go about making 90% of environment props. The workflow for characters is an ocean apart from the workflow for environments. In the case of the particular character you showed I think 1:1 UVs is the right choice. Doing the jeans the way you described would be nightmarish. Once you have a seam texture, how do you put all the seams in the right place? Model strips of quads for every seam? The model will inevitably be much higher poly. On top of that, the shader will be more complex, or it will be a separate material with and add more draw calls. You're trading fill rate for texture memory, which is a bad trade most of the time because most games are GPU bound.

    In the case of your rock cliff face example, in my experience, most cliff faces are indeed authored this way. I've never seen a high fidelity game with a 1:1 texture for a cliff. Its always tiling texture with macro overlay, or vert splatting between tiling textures.
     
  16. zombiegorilla

    zombiegorilla

    Moderator

    Joined:
    May 8, 2012
    Posts:
    9,051
    Professionally we call it iteration or exploration. ;)

    There is a simple solution for this though. Make sure you game is successful enough, and then you sell copies of your new book, "The Art of ...". ;)
     
  17. theANMATOR2b

    theANMATOR2b

    Joined:
    Jul 12, 2014
    Posts:
    7,790
    Main characters and 'main' character artists are given liberty to make the best looking model/texture/animations they can. The characters will be on screen for the entire duration of the game, so it's important it looks as good as possible, better than an environment object that will be seen 5-10 times throughout the game.

    Planning for a model/texture as complex as the character provided, to be broken up for optimization purposes adds to the development time. Non destructive iteration on a complex character like that - isn't trivial and requires delicate workflow to stay to the plan. This slows the artist down and adds extra steps to his workflow, interrupting the creative 'flow'.

    If this was an environment piece that was in one level in a game with 10 levels - I'd probably agree, but with this being a main character - imo - optimization efforts should be drawn from everywhere else in the game before revisiting the character for optimizing, which also would inevitably reduce the visual quality of the character.
     
    dogzerx2, Kiwasi and Martin_H like this.