Instead of tweaking it for that lighting condition its more like, I have this gold, and I want it to be slightly more yellow in this instance, or I want to use a map to change the tint slightly over the surface. Also imagine a layer is paint, you could have a map drive the color of that paint.
What would you say are the advantages/disadvantages of that, versus creating a new "core material" which was, eg, a slightly more yellow gold? That way wherever that 'slightly more yellow gold' was used, it could always be updated from a centralised location, which would then propagate through every instance of it being used - rather than having many instances of a single 'core material' being per-instance-edited in various different ways?
I think this is more of a workflow question than a tech question in retrospect
Yeah it's really a balance and probably a decision made per-team. On one hand you make a simple tweak when you use it but you're overriding some base value, or you have a huge library that is too specific. I imagine the ideal is somewhere in the middle.
... it more in changing approach from current crafting method to wise way of production, with higher quantity and quality content with smaller dev teams, in more predictable time, with simpler iterating of content and ability modify lots of things fast and simple
to spend more time on gameplay, ai, animation, physics, storry, awsomeness...
Not much I dare to say. You will just need to create separate material for each layer (water, land, clouds) and blend them togather. In all setup should be easier, at least if want more realistic results.
They're using Strauss most likely, it's the only paper in the public domain that even takes that into consideration, outside of artist not putting anything into the Diffuse slot.
I think its time we make a new thread on PBR and use a lot of the information & links found in this thread to start it off. This is a topic we'll want to apply to our jobs as a whole, and not just how it applies to Unreal Engine.
If someone wants to start that, I can make sure the community knows it exists. It's an important topic we'll all want to be versed in.
I think its time we make a new thread on PBR and use a lot of the information & links found in this thread to start it off. This is a topic we'll want to apply to our jobs as a whole, and not just how it applies to Unreal Engine.
If someone wants to start that, I can make sure the community knows it exists. It's an important topic we'll all want to be versed in.
Quoted for muthafuckin troof! I would love that as PBR seems to be the next big thing for us.
I think its time we make a new thread on PBR and use a lot of the information & links found in this thread to start it off. This is a topic we'll want to apply to our jobs as a whole, and not just how it applies to Unreal Engine.
If someone wants to start that, I can make sure the community knows it exists. It's an important topic we'll all want to be versed in.
I believe in the technical talk forums there was a thread started about PBR in general. Lots of good info in there to migrate over to the official PBR thread we start. Here's the link
Hey guys! I've been searching the internet for more UE4 info recently and found this two very interesting videos. Unfortunately there's no any subtitles for both videos (one is in Japanese and the other one in Korean), but still I think it's very interesting as they show a lot of in-engine demos. Enjoy
Feels like watching myself doing a substance presentation 2 years ago. Glad people are finally embracing the concept of shared materials and assets through an entire project and material compositing.
I don't see the layered shader thing being used on a lot of objects though, imagine you have very complex shaders with detail maps and everything for each material, and you have 6 different materials on a character, the resulting shader is either extremely complex and heavy, or you bake down everything in the end to a single composited texture set at a given resolution, on which you will lose the very small details and runtime controls over the different parts.
Every other studio I'm aware of using that kind of technique ultimately bake down the result of the material blend.
I wonder why they didn't push the material definition a bit more in this demo, the environment reads well, but the characters mostly read as dusty plastic with bits of metal. Also there's a normal map artifact at 5:00 that makes me worried that they still aren't using a synced normal map tangent workflow.
I don't see the layered shader thing being used on a lot of objects though, imagine you have very complex shaders with detail maps and everything for each material, and you have 6 different materials on a character, the resulting shader is either extremely complex and heavy, or you bake down everything in the end to a single composited texture set at a given resolution, on which you will lose the very small details and runtime controls over the different parts.
Every other studio I'm aware of using that kind of technique ultimately bake down the result of the material blend.
Jerc, we used material layers on every asset in the Infiltrator demo, most environmental assets only had a couple layers and it still proved useful for them to have them. Also each layer itself is not complex, Most of them are a few tiling textures and some values, some are even solid colors for the base color.
One huge benefit of NOT baking these layers is you get really high resolution. Each layer has tiling textures so you're not limited to a baked resolution.
we use a hybrid system, we can have many layers of shaders, some with tiling some without. the layers that are not flagged as tiled get baked down to one layer, the ones that tile do not.
So layered shaders are basically being used as expanded detail normal maps with some material definition, nice.
It's more than that, a layer uses the same material editor you use to make any other materials, so it's not just detail maps it's a whole texture set of like cloth or metal, for an environment asset you could have tiling concrete wall texture with normal, etc, then a layer on top of that of some metal details.
To be clear the reason it's more than detail maps(as game artists would describe them in the past) is all of the color, roughness, normal and everything comes from the layers.
we use a hybrid system, we can have many layers of shaders, some with tiling some without. the layers that are not flagged as tiled get baked down to one layer, the ones that tile do not.
Sounds cool, it's definitely useful to have non-tiling information for some surfaces, like a persons face.
So can Unreal or any of these engines also generates some of the masks at runtime? Like a dynamic ambient occlusion or grime mask? I am imagining passing the lightmap into your material so that when you place your assets in your level, moss and grime will automatically collect in the dark recesses. Or maybe even a 3d noise function intersecting the mesh so that you can make, for example, a dynamic camouflage pattern on a gun? Would that be practical or too demanding for a realtime layer/shader?
Jerc, we used material layers on every asset in the Infiltrator demo, most environmental assets only had a couple layers and it still proved useful for them to have them. Also each layer itself is not complex, Most of them are a few tiling textures and some values, some are even solid colors for the base color.
One huge benefit of NOT baking these layers is you get really high resolution. Each layer has tiling textures so you're not limited to a baked resolution.
Interesting, does it decrease the performances at all? I would imagine you would have one draw call per material on the object instead of only one for the whole thing with a baked material or does it work in the end as one single material ?
Interesting, does it decrease the performances at all? I would imagine you would have one draw call per material on the object instead of only one for the whole thing with a baked material?
maybe but remember this has nothing to do with material id's, since it is a mask doing the work.
it would increase the instruction count a lot, with all the lerping between each set of textures for each material.
maybe but remember this has nothing to do with material id's, since it is a mask doing the work.
it would increase the instruction count a lot, with all the lerping between each set of textures for each material.
Oh I see. Yeah that makes sense. So you could have 256 layers in just 1 channel really.
this doesnt usually work that well because of mipmapping and interpolating values. if you have something that blends in at say 127, well it'll have a soft transition on the edge whiich starts blending in other values.
this doesnt usually work that well because of mipmapping and interpolating values. if you have something that blends in at say 127, well it'll have a soft transition on the edge which starts blending in other values.
im sure he meant that just as a example, was just trying to state it's not limited to 4 materials, but can use colour values. To get around the problem of mipmapping could possible use ranges of colour which limites you to maybe only a few masks out of one channel but is better than just one.
Zac: We used xNormal to bake the normal maps on that character, I've noticed that artifact before when using xNormal. other programs would not do the same thing. I'm not sure why or how its caused during the bake, but creates a crazy pyramid gradient effect on surfaces.
It could probably be done but you will have to blend all your channels one by one and end up with quite a big shader graph, while in UE4 you can blend the full materials at once.
It could probably be done but you will have to blend all your channels one by one and end up with quite a big shader graph, while in UE4 you can blend the full materials at once.
maybe implement all the sub materials as material functions, it could do the job in a some what neat matter.
Jerc, we used material layers on every asset in the Infiltrator demo, most environmental assets only had a couple layers and it still proved useful for them to have them. Also each layer itself is not complex, Most of them are a few tiling textures and some values, some are even solid colors for the base color.
One huge benefit of NOT baking these layers is you get really high resolution. Each layer has tiling textures so you're not limited to a baked resolution.
Well, but Mask resolution is still limiting factor.
Replies
I think this is more of a workflow question than a tech question in retrospect
Is it just a refined landscape system?
to spend more time on gameplay, ai, animation, physics, storry, awsomeness...
http://content.gpwiki.org/index.php/D3DBook:%28Lighting%29_Strauss
If someone wants to start that, I can make sure the community knows it exists. It's an important topic we'll all want to be versed in.
http://www.makinggames.de/index.php/magazin/2320_unreal_engine_4__creating_the_infiltrator_demo
Quoted for muthafuckin troof! I would love that as PBR seems to be the next big thing for us.
Agreed
I believe in the technical talk forums there was a thread started about PBR in general. Lots of good info in there to migrate over to the official PBR thread we start. Here's the link
edit: also I've merged in that PBR thread from tech talk as well, thanks artquest.
Epic Games Japan presentation:
http://www.ustream.tv/channel/gtmf-session4/theater
Korean presentation:
[ame="http://www.youtube.com/watch?v=E6DC85HO_Xw"]Making MMORPG with Unreal 4 Engine?[/ame]
The functionality of the buttons and menus look very slick as does the foliage. God I hope to get my hands on this before Christmas!:thumbup:
[ame="http://www.youtube.com/watch?v=R7WNcUotwSQ"]Inside Unreal - Character Aesthetics - YouTube[/ame]
I don't see the layered shader thing being used on a lot of objects though, imagine you have very complex shaders with detail maps and everything for each material, and you have 6 different materials on a character, the resulting shader is either extremely complex and heavy, or you bake down everything in the end to a single composited texture set at a given resolution, on which you will lose the very small details and runtime controls over the different parts.
Every other studio I'm aware of using that kind of technique ultimately bake down the result of the material blend.
nope i was talking about the artifacts on the chestplate, that there is defiantly un synced tangents
Jerc, we used material layers on every asset in the Infiltrator demo, most environmental assets only had a couple layers and it still proved useful for them to have them. Also each layer itself is not complex, Most of them are a few tiling textures and some values, some are even solid colors for the base color.
One huge benefit of NOT baking these layers is you get really high resolution. Each layer has tiling textures so you're not limited to a baked resolution.
So layered shaders are basically being used as expanded detail normal maps with some material definition, nice.
will that and a massive workflow improvement, that lets people work in a less linear fashion as well.
It's more than that, a layer uses the same material editor you use to make any other materials, so it's not just detail maps it's a whole texture set of like cloth or metal, for an environment asset you could have tiling concrete wall texture with normal, etc, then a layer on top of that of some metal details.
To be clear the reason it's more than detail maps(as game artists would describe them in the past) is all of the color, roughness, normal and everything comes from the layers.
Sounds cool, it's definitely useful to have non-tiling information for some surfaces, like a persons face.
So can Unreal or any of these engines also generates some of the masks at runtime? Like a dynamic ambient occlusion or grime mask? I am imagining passing the lightmap into your material so that when you place your assets in your level, moss and grime will automatically collect in the dark recesses. Or maybe even a 3d noise function intersecting the mesh so that you can make, for example, a dynamic camouflage pattern on a gun? Would that be practical or too demanding for a realtime layer/shader?
But you would still have 256 different values per channel, unless your using <8 bit channels.
im sure it is using the colour and not just the channel, this is even pretty simple to do in udk also, just use a if node.
maybe but remember this has nothing to do with material id's, since it is a mask doing the work.
it would increase the instruction count a lot, with all the lerping between each set of textures for each material.
this doesnt usually work that well because of mipmapping and interpolating values. if you have something that blends in at say 127, well it'll have a soft transition on the edge whiich starts blending in other values.
im sure he meant that just as a example, was just trying to state it's not limited to 4 materials, but can use colour values. To get around the problem of mipmapping could possible use ranges of colour which limites you to maybe only a few masks out of one channel but is better than just one.
Good eye!
maybe implement all the sub materials as material functions, it could do the job in a some what neat matter.
it can, but it's expensive as fuck. i've got a prototype of it working now, but i have no idea how to optimise it further.