Home Quixel Megascans

Answered: Questionable albedo on certain textures

loggie24
polycounter lvl 3
Offline / Send Message
loggie24 polycounter lvl 3
Hey. I'v been downloading some grass textures and i'm somewhat bummed about the albedo. It looks as if it the "deep" parts have been high-passed to death, almost to the point of there being a flat color with a tint of curvature. I tested it out in Marmoset and found that while it didn't look as bad it didn't look correct (or as in the preview). I'm guessing it's something you guys are doing in regards to AO removal. 

Here are a few samples.





Link to the ones featured (i have tested two more and they have the same "problem").

https://megascans.se/assets/pftpn0
https://megascans.se/assets/pkhg40

Last one isn't so bad but mostly because of the small details hiding everything. I might be crazy but would like to get some kind of clarification on this.

Cheers!

Replies

  • Synaesthesia
    Options
    Offline / Send Message
    Synaesthesia polycounter
    What results are you getting from your renderer? Could you show me your Toolbag setup? Are you using the cavity and AO maps as well?
  • loggie24
    Options
    Offline / Send Message
    loggie24 polycounter lvl 3
    2 and 4 are from Toolbag. I don't use cavity or AO, using GGX reflection. I guess you guys were using the full package in the preview renders. I'm using the basic game maps (displacement, normals, gloss, albedo and spec).
  • Maximum-Dev
    Options
    Offline / Send Message
    I ended up multiplying the AO on Albedo for some grass textures before importing in UE4 for our game. We do not use AO maps for ground materials, the engine doesn't create good enough AO from the normals either so... that was the best option for us.
  • Synaesthesia
    Options
    Offline / Send Message
    Synaesthesia polycounter
    I'd consider AO to be a basic game map as well. You'll absolutely need it to make a difference in the end-result, especially in an engine like UE4 where you can get away with channel packing the AO into the blue channel essentially for free. Since Marmoset reads channel-packed textures, you can load roughness, cavity, and AO from a single texture and still come out ahead.

    @Maximum-Dev - I actually wire in my AO map with a parameter to control the strength of it on the fly - it's nice being able to adjust it without needing to edit it and reimport the entire texture.
  • loggie24
    Options
    Offline / Send Message
    loggie24 polycounter lvl 3
    Isn't that breaking the laws of PBR? Not to mention that not every engine supports AO maps such as CRYENGINE. You guys might as well have shipped the albedo with AO multiplied by default, because after talking to multiple people we all agreed that this is not how a albedo map is supposed to look, and using it as it is will give you strange results.
  • Synaesthesia
    Options
    Offline / Send Message
    Synaesthesia polycounter
    I'm not so much concerned with "laws" as I am with end results. The "laws" are more like guidelines. If you know how they function, you can bend the laws to get the results you want. My understanding of PBR is that the albedo generated from Megascans assets is actually very accurate - the lack of shadow information (which is added via shaders, not via albedo) is precisely the workflow you probably want for a lot of different applications. If the engine you're working with doesn't support AO maps, then you'll need to premultiply it before importing your albedo maps.

    Try using the AO and cavity map in Toolbag's shader setup, I think you'll see a big difference!
  • Maximum-Dev
    Options
    Offline / Send Message
    I'm not so much concerned with "laws" as I am with end results. The "laws" are more like guidelines. If you know how they function, you can bend the laws to get the results you want. My understanding of PBR is that the albedo generated from Megascans assets is actually very accurate - the lack of shadow information (which is added via shaders, not via albedo) is precisely the workflow you probably want for a lot of different applications. If the engine you're working with doesn't support AO maps, then you'll need to premultiply it before importing your albedo maps.

    Try using the AO and cavity map in Toolbag's shader setup, I think you'll see a big difference!
     
    I think what loggie24 is trying to say is that when you supply the material with an AO map then you get all those nice little shadows on the material and it looks the way it's supposed to look like only when the material is in the shadows. As soon as the material is directly lit in a game engine the AO map doesn't have any effect anymore and the look of that material without the AO is not like what it looks like in reality at all.

    The issue originates from the fact that in real life you still do have AO when a surface such as grassy ground is directly lit by the sunlight and that's because of the 3D volumes the surface has as opposed to game engines where there's about 2 Tris per meter on landscape.



    If AO map is supplied in the material:

    How it looks if covered in shadow:

    How it looks when directly lit:


    If AO map is supplied in material and also multiplied on Albedo:

    How it looks if covered in shadow:

    How it looks when directly lit:


    If AO map only multiplied on Albedo:

    How it looks if covered in shadow:

    How it looks when directly lit:



    How it looks in reality when directly lit:

    ^ That is why people still tend to bake AO to albedo for some particular surfaces such as grass.

    I personally don't respect the PBR rules equally for all surface types, because it's a set of one way rules. These rules tell us the relationship surfaces have with light in reality and we should follow them to reconstruct that reality in the fake 3D space but the missing factor is that in the fake 3D space we do not have as much geometry on a surface as there is in reality. i.e model a 1x1m grass surface made up of a few million triangles and then in game engine you'd have this perfect scenario:

    If AO map is supplied in the material only:

    How it looks if covered in shadow:

    How it looks when directly lit:


    But everything is different when you move from a grass surface to something like a painted metal surface. Grass in reality has lots of volume to it but in game engine the surface is flat => Bend the PBR rules if achieving realistic result is the goal here. Painted metal surface in reality is flat and in game engine the surface is also flat=> Stick to the PBR rules as much as possible.

    Edit: Added more info to the comparisons.
  • loggie24
    Options
    Offline / Send Message
    loggie24 polycounter lvl 3
    I think @Maximum-Dev summed it up well. In a nutshell i react on the fact that the map you supply is not game friendly, and considering this is largely tailored towards games it doesn't make much sense. But it's not a big deal in the end, i just wanted to point it out.
  • Synaesthesia
    Options
    Offline / Send Message
    Synaesthesia polycounter
    It would be a case-by-case basis then. Premultiply AO on materials that need it based on the engine you're using.
  • radiancef0rge
    Options
    Offline / Send Message
    radiancef0rge ngon master
    AO in most engines is interpolated based on direct lighting. In UE4 AO does not affect materials in direct lighting, Im not familiar enough with other engines but this is a pretty standard approach. That being said ambient occlusion in general is a fake phenomena we apply to allow materials to have small frequency specific shadowing, SSAO, Material AO, Cavity Map etc do not exist in real life. What you're usually seeing is some form of soft shadowing.

    Personally, I don't actually have a problem with premultiplied AO. I prefer that AO is not interpolated to 0 in direct light however, typically Ill request the engine only interpolates SSAO to quarter strength or something like that. That way materials can be authored devoid of lighting and SSAO can kick in to help those shadowed areas based on the normal map. Its a more systemic way to achieve the look you are looking for.  This grass is an excellent example of where I would take no issue with. Bricks are another example of this. 

    That being said, there are lots of people who disagree with me on this situation and your pipeline may not support something this. (IE your TAs or graphics programmers may say they don't support this workflow?). Its important to note that this should be evaluated on a case by case basis, where and when this material is used and it must be checked in all lighting conditions you would expect the asset to be in. It may look okay in direct light, but make sure to check the material in shadow like above to make sure it doesn't become too dark. Premultipled AO should really only be used for micro detail on texture flats that are volumetric in nature. Weapons, clothing, hardsurface props etc are examples of something I would not expect to have highly prevalent premultiplied shadow information.

    Finally, I also recommend that AO is always separated out in your PSD, substance etc so its easily disabled when someone wants to tweak or audit materials.

    Edit: wow this thread is old whoops
  • Maximum-Dev
    Options
    Offline / Send Message
    AO in most engines is interpolated based on direct lighting. In UE4 AO does not affect materials in direct lighting, Im not familiar enough with other engines but this is a pretty standard approach. That being said ambient occlusion in general is a fake phenomena we apply to allow materials to have small frequency specific shadowing, SSAO, Material AO, Cavity Map etc do not exist in real life. What you're usually seeing is some form of soft shadowing.

    Personally, I don't actually have a problem with premultiplied AO. I prefer that AO is not interpolated to 0 in direct light however, typically Ill request the engine only interpolates SSAO to quarter strength or something like that. That way materials can be authored devoid of lighting and SSAO can kick in to help those shadowed areas based on the normal map. Its a more systemic way to achieve the look you are looking for.  This grass is an excellent example of where I would take no issue with. Bricks are another example of this. 

    That being said, there are lots of people who disagree with me on this situation and your pipeline may not support something this. (IE your TAs or graphics programmers may say they don't support this workflow?). Its important to note that this should be evaluated on a case by case basis, where and when this material is used and it must be checked in all lighting conditions you would expect the asset to be in. It may look okay in direct light, but make sure to check the material in shadow like above to make sure it doesn't become too dark. Premultipled AO should really only be used for micro detail on texture flats that are volumetric in nature. Weapons, clothing, hardsurface props etc are examples of something I would not expect to have highly prevalent premultiplied shadow information.

    Finally, I also recommend that AO is always separated out in your PSD, substance etc so its easily disabled when someone wants to tweak or audit materials.

    Edit: wow this thread is old whoops
    The thread isn't that old honestly. And I'm happy to hear your opinions on it.
    A while ago when PBR was new-ish I was being sort of bashed for still multiplying AO on Albedo for some surfaces. But as time goes it seems to get more common. The UE4 document is also suggesting to multiply the fine shadow details on Albedo itself which is clearly saying we got off to a bad start with the whole explanation of removing "all" the shadow information from the Albedo.
  • ActionDawg
    Options
    Offline / Send Message
    ActionDawg greentooth
    Hi, since you linked me. :)

    I also think it's totally valid to add some shadowing info into the Albedo for things with a volume that cant be captured with a 2D material. I'd agree on it being something you'd want to test well in different lighting conditions and on avoiding reducing the Albedo to 0 in direct light.

    IMO bending the rules is warranted as long as you have a solid reason to do so. Grass is a really good example because even in direct light it should realistically occlude. With that intuition as a physical basis it makes sense to introduce AO into your Albedo and Specular maps.
Sign In or Register to comment.