UC4: Best looking gameplay? *SPOILS*

Status
Not open for further replies.
What is "substance" @Clukos you mention?
https://www.allegorithmic.com/

Specifically for ND, they have many guides on how they used the tool for various purposes


Also, according to allegorithmic here: https://www.allegorithmic.com/blog/texturing-uncharted-4-gdc-video-sessions-part-2
...a lot of the textures in Uncharted 4 are procedural!

As a researcher in the field of computer science (a long time ago), I could spend hours trying to convince anyone with enough stamina that noise functions were the secret sauce to any life in computer graphics, and that noise-based, procedural texturing was a wonderful way to produce textures.

Despite being on the receiving end of some strong disbelief (“procedural is ugly!”), I keep believing this, and I even recently wrote a chapter in Springer’s Encyclopedia of Computer Graphics and Games about procedural texturing. My bold statement: we have now entered a new age for procedural texturing.

Uncharted 4, if anything, is one more big, beautiful, undeniable clue supporting my claim :)

So today I feel more comfortable than ever saying: Procedural is Beautiful!
 
Last edited:
So I guess it is procedural (pre-computed) in the sense the closer you get to these objects, the more detail with different layers or shaders they automatically reveal or something?

Or it's more complicated than this, what is the TLDR version XD
 
Procedural because the textures are created (as static textures) using mathematical formulas and code through the Allegorithmic tools. The pebbles aren't photos and aren't hand drawn, but are calculated.
 
The Substance apps (Painter and Designer) are designed to integrate pretty well into modern game asset pipelines (and also work reasonably well with CG animation / VFX stuff). I'm still not familiar enough with the software, but here are some things I've found remarkable.

Most assets begin as a high poly model or Zbrush sculpt which defines the forms and shapes. Substance then generates a lot of different 'procedural' maps, which are based on this geometry; I'm not sure about all, but here are some examples:
- Edge map: areas of the model where the surface normal changes sharply - this can guide the intensity of wear and tear, as parts that stick out tend to get more abuse
- Cavity map: sort of an inverse to the edge map, marking the crevices and such (kinda similar to AO) - this can guide the accumulation of dirt, moss etc.
- I think there's a map that's based on the vertical orientation of the surfaces - this can guide stuff like the way corrosion from rain etc. flows downwards, or maybe how sunlight fades out the colors
- Normal maps are usually generated by the artist and not Substance, and they're probably also an important element of the Edge and Cavity maps
- Material ID maps, where the artist paints on the Zbrush sculpt in some bright, easy to separate colors which are usually a combination of the RGB components (so primary, secondary etc) - these can be associated with various PBR materials automatically

Edit: looking at their site, some of the map names they're listing are Curvature, Thickness, Position - I guess it's easy to see how these are really helpful in generating proper results.

Then there are a lot of different types of the 'classic' procedural noise maps which an artist can use to create various patterns with.

The actual workflow is that each generated map, procedural noise, and usually some tiled bitmap textures, are each represented as a node in the shading network. Each can be used as actual textures, masks to blend between the textures, and they can all be plugged into the various channels (diffuse, specular etc) of the PBR shaders.
At the starting phase of a project, the artists will build a library of these shaders, stuff like various kinds of metal with various levels and types of wear and tear, or leather, or wood, and so on.

Then, these shader templates can be thrown onto all the objects coming out of the modeling/sculpting departments. The various maps generated from the model will create texture details that are driven by the object itself, instead of generic templates - so they're look a lot more correct and believable. The material ID masks will also help to deal with more complex objects which increases productivity a lot.

And of course it's always possible to have an artist do a manual pass on any procedural or generated maps, even the noises, to fine tune the final results for hero assets.
Substance will then generate the final set of maps using the templates, procedural maps and hand painted stuff; and because the shading network and all components are still all there, it's also very fast and easy to iterate on any or all of the components to polish or tweak the results.
Also, Substance has presets to generate output that fits the requirements of most modern offline renderers - which is the part we're most interested in ;)

I'd also like to add that all of the above stuff is not really that new, almost everyone working in 3D asset creation has used some of the principles listed above. The big step forward was to combine all the approaches into a powerful app with great ease of use and automation.

So basically, Substance is a procedural texture creation tool; but a great part of that procedural stuff is heavily based and actually generated from the individual models, thus it will always generate textures with a much more unique and realistic look.
 
Last edited:
In the early days of Allegorithmic, IIRC, they were tooting the procedural creation as a real-time function. I recall the trailer demo showing a caravan ageing in realtime. At least I think (and assumed at the time) it was realtime rather than just blending between a bunch of precomputed shaders. But it could be just that I suppose precomputing the various ages and blending between. I understand Substance is an offline shader tool but didn't know if Algorithmic also provided a realtime option yet.
 
It's probably also a lot more about there being very little need for a realtime function. Sure, there's stuff like mud getting splashed on the jeep in UC4, and then getting washed off by water - but those simple cases can be handled a lot better by engine and game specific code. But of course Substance or something like that would be pretty handy for generating the texture data used by the mud shaders.
 
Footprints on sand, mud etc. are all pom

uncharted4_athiefsend2xlyq.jpg
uncharted4_athiefsend6qzwj.jpg

One example of geometry deformation (not pom): http://webm.land/media/N4tM.webm

Edit: Also, dolphins following the boat in chapter 12: http://webm.land/media/VvKi.webm :D
 
Last edited:
In the early days of Allegorithmic, IIRC, they were tooting the procedural creation as a real-time function. I recall the trailer demo showing a caravan ageing in realtime. At least I think (and assumed at the time) it was realtime rather than just blending between a bunch of precomputed shaders. But it could be just that I suppose precomputing the various ages and blending between. I understand Substance is an offline shader tool but didn't know if Algorithmic also provided a realtime option yet.

I doubt we'll see liberal use of realtime procedural evaluation for textures in games anytime soon. I've spent a significant amount of time developing procedurals for artists at various companies and one of the big problems (aside from coming up with something that looks good) is filtering them. There is no discrete MIP mapping algorithm for evaluating procedurals and thus you have to filter it yourself -- either analytically or with some distance to camera function (that never worked quite well) or getting the area of a triangle and passing that through your procedural function. Combining them becomes even more costly but is almost required to get something reasonably good-looking. Most of our artists just bake down the noise functions from Mari into actual maps. However, there are those rare cases where developing the look for huge wide open areas such as the dirt on the starship enterprise or a desert landscape (like in road runner) requires using full procedural evaluations to save artists having to paint it and pushing the schedule back. I plan on experimenting with realtime evaluation of procedural noises whenever I can find some time. I'd love to see some of the more complex noise functions (i.e. Flow, Multifractal, or cell noise) implemented on the GPU to see how much it actually costs in terms of ms.
 
That's very cool, thanks for explanations!

This must be an ideal kind of solution with graphics/texture resolution demands being so high now. It would take forever I assume to create it all individually :p
 
Doing these real time procedural textures in virtual texture space like how sebbbi's trial's engine does its decals, solves the mip-mapping and filtering problem. You build the texture for the biggest resolution required at the time, and downsample it to build the mip-chain. When actually drawing the surface all you got is a single "baked" map, only its baked at run-time.
I think there is great potential in that aproach, and at least some dev has got to be doing something of that sort.
 
If you hop on the boat after swimming characters leave wet footprints on the boat that dry over time, have reflective properties and change the look of the wooden surface (the shader)
uncharted4_athiefsendb5l6a.jpg

Some more foliage because why not
uncharted4_athiefsendbuyq6.jpg

All mud seems to be pom in the game, which seems to be using extensively unlike what we thought originally (baking seems to have derped on that rock on the far right here)
uncharted4_athiefsend97bqw.jpg
uncharted4_athiefsend93b54.jpg

Nice shading in this scene on the chandelier and other wooden surfaces, dimly lit scenes like this one are usually hard to sell. Also SSR from the wooden table
uncharted4_athiefsendjyx4l.jpg

One area where the game is not using pom and has actual geometry unexpectedly
uncharted4_athiefsend11lci.jpg
uncharted4_athiefsend2gxpc.jpg

As to why that is, i have no idea.

Volumetric shadows from terrain, the boat, Nate here and also very nice shading on the water, one of the very best I've seen in a game: http://webm.land/media/UBV1.webm
 
Doing these real time procedural textures in virtual texture space like how sebbbi's trial's engine does its decals, solves the mip-mapping and filtering problem. You build the texture for the biggest resolution required at the time, and downsample it to build the mip-chain. When actually drawing the surface all you got is a single "baked" map, only its baked at run-time.
I think there is great potential in that aproach, and at least some dev has got to be doing something of that sort.
I'd consider that a hybrid solution. True procedural texturing would compute per pixel on the GPU in shaders. That's probably highly unrealistic for anything but the simplest of textures though! Your idea seems more reasonable.
 
I really like those dim lighting settings as well with light peeking in one area, they use this kind of scene/lighting a lot in the game, especially in exploring areas, and they look fantastic imo.
 
Time to compare GameCube James Bond to PS4 Nathan Drake :D

27377296485_9ebeedcbea_o_d.png

27377299685_c461275f16_o_d.png

27101532300_aa7e5321e9_o_d.png

Diminishing returns is real?!
Dolphin emulation, I think 3x resolution with anti-aliasing)

In all seriousness though, I miss this time of many middle-end/middle-tier double-A game projects, not necessarily movie licensed. The production quality on these kinds of games is now completely missing since game developments costs have skyrocketed so much and now big publishers focus on fewer, most profitable IPs... oh well.

But yea, reason I post... I think Naughty Dog could make the best James Bond game ever. It's already the best Indiana Jones videogame anyway, I'm sure they could do James Bond 007 much justice in third-person too :D

Anyway, I think 6th gen games hold up quite well today especially on emulators ^^
 
Last edited:
Status
Not open for further replies.
Back
Top