Jump to content

PBR workflow


photo

  

25 members have voted

  1. 1. What PBR workflow do you want?

    • Metalness
      22
    • Specularity
      0
    • Keep both
      3


Recommended Posts

We need to figure out what to do with the PBR worklow: at the moment UNIGINE 2.0 supports both metalness and specular. Some objects still have legacy specular shading only. It would be obviously easier to keep only one from the development speed stand of point. So both workflows have pros and cons:

 

Specular

Pros:

  • Easier to migrate old projects to

Cons:

  • Larger texture sizes (+2 more channels)

 

Metalness

Pros:

  • Standard de-facto for new rendering software / engines
  • More compact textures (less disk space occupied, less VRAM required)
  • Prevents artist from making physically-incorrect materials
  • Slightly better performance

Cons:

  • More work when migrating old content
  • Some objects still support only specular shading

Keeping both workflows means slower progress on visual features + some technical limitations.

 

We are leaning towards transition to pure metalness workflow through 2.1-2.3 versions. Please let us know your opinion on that.

Link to comment

Currently we have cca 15 000 textures, which makes cca 6000 materials (99% mesh base). We have no problem to switch to completly new workflow (everything new we are already doing PBR), but legacy shaders should stay there (at least for mesh base). Switching whole project to PBR can take one year of serious work (instead of project progress). And loosing updates of unigine until migration is done (stay on the last version with legacy shaders) is also not good idea.

Link to comment
  • 2 weeks later...

As we do not have a large amount of assets built up, a conversion would be acceptable for us. So my vote would be for the technical best solution when it's complete.

 

But as demostenes already stated, for others a conversion might be insurmountable if needed in too short a time frame.

Link to comment

Metallic workflow is fine but it needs a few different parameters to really be production-ready IMO. It needs a better way to express specular occlusion, whether it's an H-basis directional occlusion map baked in AmbientMapper or a Marmoset Toolbag-style view independent one-channel cavity map that also occludes direct specularity. (Cavity map could maybe go in A of metallic texture to ensure that DXT5 quality without too much added cost.) A big problem that artists who are new to PBR tend to have is large areas of undetailed, unrealistic metal that just doesn't quite look right (see Dragon Age Inquisition for a great example) and having access to good, temporally stable tools to create specular occlusion can go a long way towards combating this problem even for relatively low-skill or time-limited artists.

 

One possibility that might be worth considering if you're running out of gbuffer space is rendering virtual texture UVs instead of your more usual geometry data. This makes overdraw really, really cheap for opaque materials and allows you to use more BRDF parameters than you would ordinarily be able to. Take a look at the middle of this presentation if you've not seen it yet.

Link to comment

Sure! This is a monkey head with an unlit specular occlusion texture baked with Turtle in Maya.

 

cDVmX3b.png

 

And, this is a monkey head with ambient occlusion baked in Blender.

 

0brUqzW.png

 

You can see the difference between the Turtle reflection occlusion bake and the Blender AO bake. The Turtle bake tends to concentrate the occlusion in the corners more.

 

If you uncheck "Orthogonal Reflections" in the Turtle bake properties in Maya you get a more accurate reflection occlusion bake that takes the view direction into account. Probably it traces cones from the camera to the object then scatters them in a glossy way according to the cone angle the user sets. This is pretty close to the result that I'd like Unigine to be able to get.

 

IGcSh3F.png

 

As you can see it's quite different from the ambient occlusion bake. If I now use this image to occlude the reflections in Toolbag this is the result I get.

 

iSVXoUk.png

 

Compared to the result that's occluded with the AO map, which is what I'd get in Unigine:

 

tyNeY99.png

 

And just for posterity, here's the completely unoccluded result.

 

Yjb1wfQ.png

 

Screenspace reflections can help a bit with the problem, but they almost always have problems with temporal stability and availability of information on the screen, so I prefer to not use them most of the time. The problem that I have with Turtle baked reflection occlusion is that it's too view dependent. That is, you have to rebake for every view of the mesh. For games this is obviously not workable but it can somewhat improve rendering speed within Maya for animations.

 

jAv7mb1.png

 

Obviously no good!

 

The way that The Order: 1886 solved this is by baking unique-UV directional occlusion lightmaps with an Optix baker. Looking up the occlusion in a glossy way gives pretty convincing specular occlusion. You can scan Crafting Victorian London: The Environment Art and Lighting Pipelines of The Order: 1886 for more details (starting at slide 144.) I don't think that baking as aggressively as they do is always a good idea but the reflection occlusion strategy using skinned capsules and baked H-basis maps is a good idea in most cases and can be used for most games.

 

For more details about the H-basis you can read this paper which has some good details about the underlying math.

 

I bet I get the baking tool to bake these lightmaps and Unigine to render them if you give me source code access. If the company is interested in hiring me as a contractor to implement this stuff, let me know and maybe we can work something out.

 

Cavity maps are kind of a separate thing and probably way easier to implement into your renderer. They occlude specularity from both dynamic lights and cubemaps and make it way easier to represent stuff with small cracks and corners in them. I believe that Unigine is currently using AO to occlude both specularity from cubemaps and the ambient cube-- here's what that looks like in Toolbag on a hard surface model.

 

b2vJjIu.png

 

If you use a cavity map for the specular occlusion and use AO only for occluding the ambient cube this is the result:

 

6lUyuQZ.png

 

It looks a little better, the threads especially. I think it doesn't pay off quite as much as H-basis occlusion maps would but it's still an important option to have, especially for stuff like characters' teeth that can look pretty funky otherwise. Usually you can get a similar result to the cavity map with a secondary specular map, which is what Unreal and Frostbite are both using for their metallic workflows.

Link to comment

Hi Spencer!

 

Thank you for such detailed feedback :)

 

We multiply reflection on Ambient Occlusion texture. Using separate Specular Occlusion texture too expensive for performance, and the result is almost the same with simple AO map. You can use AO map as diffuse AO and specular AO at the same time:
post-1179-0-32197300-1445941210_thumb.jpg

Link to comment
  • 3 weeks later...
  • 6 months later...

Starting with 2.3 release, the internal workflow is metalness.

Decals will be working with metalness only.

 

There will be a conversion tool for textures (however, there will be some conversion error).

 

It is recommended to create your assets according to metalness workflow from now on.

Link to comment
×
×
  • Create New...