Announcement

Collapse
No announcement yet.

Material Layering Feedback for 4.19

Collapse
This is a sticky topic.
X
X
  • Filter
  • Time
  • Show
Clear All
new posts

    Material Layering Feedback for 4.19

    We're excited to announce that we've added support for Material Layers in Unreal Engine 4.19 as an experimental feature. Below is some basic documentation to get you started using the feature. Also, if you have any feedback regarding the use of Material Layering, please post in this thread.

    Thank you!


    To enable this feature, navigate to the Project Settings > Rendering > Experimental and set Support Material Layers true.




    Material Layering is a new way to combine materials in a stack, which builds out the correct material graph without needing to build the node graph by hand. There are two new asset types that we use to do this:
    • Material Layer
    • Material Layer Blends
    Functionally, these behave similarly to Material Functions. These new asset types also enable you to create child instances, which you could not do with Material Functions.

    Material Layer assets have a default input node which pipes base Material Attributes in from the Material. Material Layer Blend assets have two default input nodes which enable you to access the Material Attributes from layers above and below.




    Once you have created a Material Layer and Material Layer Blend asset, you can combine them using a Material Attributes Layers node in a Material. With the node selected, you can add layers and set the assets that each layer and blend should from the node Details panel.



    When editing a Material Instance with a parent Material that contains a Material Attribute Layers node, the Material Instance Editor also contains a Layer Parameters tab. Here, you can change the assets used for any of the existing Layers or Blends that have been set. Use the Add (+) button to add additional Layers to the stack as needed. You can also see the parameters contained in each of the Material Layer and Material Layer Blends and override their values individually by entering a new one.





    Passing Parameters to Layers

    There are three main methods at present to do this, most of which apply to Blends and Layers.
    1. Create a parameter within the layer which behaves similarly to existing Materials and Material Functions.

      Parameters added within the layer graphs will be unique to that layer and editable within the layer's section. Even if multiple copies of the same layer are added, each will have its own copy of that parameter to control.
    2. Use the Input pin to the Material Attribute Layers stack.

      This takes another Material Attributes as input which will be piped into every layer added. For example, we could pass a base normal map for the mesh as an input, like so:



      Then within our example Material Layer, we get the Input and blend in:



      Each layer can optionally use or ignore the base stack material attributes input. Currently, this method is not accessible within a blend graph.




    Last edited by Tim Hobson; 02-26-2018, 12:06 PM.
    Tim Hobson | Learning Resources | Epic Games
    UE4 Documentation
    Wiki Troubleshooting Guides: Lighting | Swarm Agent | Destructibles |
    _____________________________________________
    Follow me on Twitter @TimHobsonUE4 | My Personal Website
    Photons Be Free: Mini-Tutorials and other Curiosities

    #2
    uhmm interesting!
    as it's not yet explained anywhere yet, I have to ask: what's the difference between this new system and the old Layered Materials thing?
    Help me back! follow me on Twitter
    Developer of Elium - Prison Escape

    Comment


      #3
      I think the key part is "without needing to build the node graph by hand". This allows you to keep each material layer as a separate material asset instead of making a jumbo mateial graph.

      Comment


        #4
        So, in the example in that document, if you wanted to change the copper portions of the rocket to something with animated flames (because then it will go faster) - you would need to make a new material. If you had a Material Attribute Layers stack that blended together a Rocket_Body layer and a Rocket_Details layer with the mask, you could change Rocket_Details to any Material Layer you wanted (AnimatedFlames, Psychedelic, or Copper) without needing different master materials.

        Does that help clarify a bit?

        Comment


          #5
          I gave material layering system a spin in 4.19 and overall I don't expect any significant benefit from it. At least not within a scope of projects currently within my reach.
          Firstly, changing existing uber shader in a more or less developed project to work with new material layering seems a bit on the painful side and definitely not worth the effort.
          Secondly, With the way I'm building master mats, I could hardly find few occasions where matlayer system would be more convenient, than existing set of material functions.
          Thirdly... well, there is no thirdly.

          I see potential for the system only only in two directions. First being fresh projects made from scratch, where all the planning was done with the system in mind.
          Second being a usage case where all asset texturing is done exclusively in the engine, potentially involving baking blended mat attributes into textures.

          That is my impression so far.

          Comment


            #6
            so it sounds like hassle-free upgrade to Layered Materials

            I see potential for the system only only in two directions. First being fresh projects made from scratch, where all the planning was done with the system in mind.
            Second being a usage case where all asset texturing is done exclusively in the engine, potentially involving baking blended mat attributes into textures.
            either of your 2 directions drive me to the same conclusion I had before with Layered Materials: I can't think of it as something for production due to the shader complexity derived from it
            Help me back! follow me on Twitter
            Developer of Elium - Prison Escape

            Comment


              #7
              Great!

              This will reduce mastermaterial pipelines a lot and make freedome for designer/artists who will be not restricted to handmade mastermaterials anymore

              Btw a question.

              Maybe this feature later will allow us layered physical material too? ^^

              Comment


                #8
                Sounds Interesting.

                What is the performance of this kind of Materials setup compared to make one big graph ?

                Comment


                  #9
                  I assume this designed for/around the Paragon character material workflow?

                  https://youtu.be/nVes6OUyzdw?t=178

                  Comment


                    #10
                    This is SWEET

                    Comment


                      #11
                      This is a cool feature, definitely needed. We could have a good degree of modularity with functions already, but with this things will become more natural. I hope this will leave the experimental status in 4.20.

                      Comment


                        #12
                        Please make sure it going to work on Android devices. They have many limits in the mats. I hope it will work well there first.

                        Comment


                          #13
                          ....Is there any noticeable performance improvements over the traditional material layering...? otherwise it's really hard to justify the use of material layering here and there, regardless of how it's done.
                          Artstation
                          Join the support channel
                          Gumroad Store

                          Comment


                            #14
                            What controls can we expect to have when working with a Dynamic Material Instance inside of a Blueprint? So far I haven't been able to find anything that isn't changing the standard material parameters.

                            Comment


                              #15
                              Maximum-Dev I don't expect any, seems just like a workflow QOL thing
                              this would really benefit from Dynamic Branching
                              Help me back! follow me on Twitter
                              Developer of Elium - Prison Escape

                              Comment

                              Working...
                              X