Intro to Materials: Material Instancing | 08 | v4.0 Tutorial Series | Unreal Engine

แชร์
ฝัง
  • เผยแพร่เมื่อ 26 ก.ย. 2024
  • This video overviews and demonstrates Material instancing, allowing you to copy and customize an existing Material.
    A link to the wiki for further notes is available here -
    wiki.unrealeng...
    (00:05) - Material Instancing Defined
    (01:57) - Instances and Parameters
    (04:34) - Scalar and Texture Parameters
    (08:56) - Creating a Parent Material Instance
    (15:05) - Editing Parameter Groups

ความคิดเห็น • 84

  • @GaryParkin
    @GaryParkin 4 ปีที่แล้ว +25

    6 years old and we're still learning from this. I'd say you left a legacy :)

    • @folayfila
      @folayfila 3 ปีที่แล้ว +3

      Indeed, Zack is the best.

    • @DrN0VA.
      @DrN0VA. ปีที่แล้ว

      8...

  • @nad1901
    @nad1901 4 ปีที่แล้ว +1

    This is the best channel I could find that gets to the point that everyone wishes to know WHY we choose these nodes. Thank you so much. keep up the good work. Subscribe!

  • @cheesyfingersmellyman
    @cheesyfingersmellyman 6 ปีที่แล้ว +9

    Metallic Z is my second favorite metal band, right next to MyRoughness

    • @GaryParkin
      @GaryParkin 4 ปีที่แล้ว

      Unnecessary Roughness

  • @jasonquesenberry1451
    @jasonquesenberry1451 10 ปีที่แล้ว +36

    Wouldn't it be ironic if there were no cover band named "Metallic Z" but there was a really terrible one called "Custom Metallic?"

  • @Magoo277
    @Magoo277 6 หลายเดือนก่อน

    "Which is probably a really bad cover band" got me. Love the humor.

  • @ArlindoOliveira81
    @ArlindoOliveira81 9 ปีที่แล้ว +4

    Wow Thanks a lot! You're an awesome teacher!!!

  • @jodycarlosborrageiro9588
    @jodycarlosborrageiro9588 9 ปีที่แล้ว +18

    LOL, @ 1:04 "For Instance" - Pun Intended?

  • @DamienDesign
    @DamienDesign 7 ปีที่แล้ว +3

    you got a good voice for tutorial

  • @aurelianobuendia24
    @aurelianobuendia24 4 ปีที่แล้ว +2

    awsome tutorial by the way. The only one that i found clearfull about material instances.
    Im looking for changin the color of instances materials by blueprint, like I have an array of cubes and i want each to have a different material but all my objects seem to have the same material

  • @DavesChaoticBrain
    @DavesChaoticBrain 2 ปีที่แล้ว +1

    Hmmmm....My Unreal installation, 4.26, doesn't have the Base Metal textures...I hope this series gets updated! It's been great till now!

  • @iami0
    @iami0 4 ปีที่แล้ว

    very useful and easy to understand tutorial, love you guys !

  • @dannyroman2584
    @dannyroman2584 4 ปีที่แล้ว +1

    Does this guy have his personal Unreal tutorials Channel?. I can't find his name. He is a great teacher.

  • @simplyscented2138
    @simplyscented2138 10 ปีที่แล้ว +5

    this might be a stupid question but if you can overwrite all of these different nodes with instancing, can you not just make one full adjustable parent and use that for every material in your scene? then only one material would be compiled right?

    • @ZaneErickson
      @ZaneErickson 9 ปีที่แล้ว +2

      While i'm sure you could if you really wanted to, with today's hardware it would be best to have parents for many different types, and then make instances for everything of those types. It will save you a lot of time in the long run making all the materials, and shouldn't make a noticeable performance hit. For example, you would want to have a parent for metals, grass, rocks, water, etc. And then every time you want a variation of them, make an instance and tweak it a bit. A lot faster than making everything a parameter and trying to remember or copy down almost all the parameters just to change one little thing.

  • @alessandrosantini6718
    @alessandrosantini6718 7 ปีที่แล้ว +2

    Hi! Thanks again for these tutorials. You said material instances are actually free from compiling. What does this imply? Would the instances give more work to the machine once the game is packaged and installed? Precisely I'm talking about mobile devices packaging.

  • @IronBlaze1000
    @IronBlaze1000 ปีที่แล้ว

    This was so useful, thank you so much!

  • @js100serch
    @js100serch 5 ปีที่แล้ว

    I hate when a Tutorial narrator makes you do something and immediately after he I tells you: "but we are not going to do that, so let's delete this and do this other thing". Goddammit dude!! go the point!.

  • @Beckmech
    @Beckmech 10 ปีที่แล้ว

    This is awesome. So user friendly!

  • @Kiyamlol
    @Kiyamlol 9 ปีที่แล้ว +30

    when you typed aluminum i was like gasp :O
    and then you put aluminium then i was like oh ok :)

    • @Kiyamlol
      @Kiyamlol 9 ปีที่แล้ว +3

      lol XD

    • @OmegaPhattyAcid
      @OmegaPhattyAcid 5 ปีที่แล้ว

      I know I was holding my breath, pls say it pls say it lol

  • @shebbe
    @shebbe 10 ปีที่แล้ว +5

    You say instancing is free, but when compiling, how does the instancing works when a seperate custom texture or other map is loaded? And what would be the pros and cons on using instances or constant based materials? When should you use what?

    • @MicheleItaloDAmato
      @MicheleItaloDAmato 10 ปีที่แล้ว

      that was the most important sentence of the video

    • @Shrooblord
      @Shrooblord 10 ปีที่แล้ว

      I'm replying here because it's the exact question that sprung to my mind and I'd like to be notified if/when reply comes. Thanks!

    • @awilliams1701
      @awilliams1701 10 ปีที่แล้ว +2

      He said the compiling was free. If you have to adjust your parent for any reason, the children are updated automatically. That is the advantage. Also notice how when editing the parent, any changes take 2 or 3 seconds to get the results. The instances get instant results. While I suspect that instances are cheaper than copying the same material over and over again, I also know that once you change the texture, that is still going to cost you in the memory department.

    • @tommybazar
      @tommybazar 6 ปีที่แล้ว

      Instancing is free only in compile time. Because only the parent is compiled into HLSL shader code. Then according to the parameters in the Instance, there are different values passed to SetParamaters() call on the compiled shader, when rendering the object with the given material instance. So it's using the same code to render different instances, just the values in the SetParameters() call change between the objects.

  • @sslaxx
    @sslaxx 10 ปีที่แล้ว

    Damn, that is nice. Can't wait for the devtools to come to Linux!

  • @Freelancerk1bbles
    @Freelancerk1bbles 9 ปีที่แล้ว +3

    I'm going to make a band called Metallic Z. Then I can come back here and be all like "I'm offended, but because I'm totally metal I'll take it out on you by covering some songs".

    • @timsonss
      @timsonss 4 ปีที่แล้ว

      Hows your progress mate

  • @titaniccor6502
    @titaniccor6502 3 ปีที่แล้ว

    Great explanation, thanks!

  • @K-Studio
    @K-Studio 4 ปีที่แล้ว

    THE BEST TEACHER!!!

  • @Barcode6321
    @Barcode6321 3 ปีที่แล้ว

    Excellent

  • @JotoheKian
    @JotoheKian 4 ปีที่แล้ว

    Awesome. Thank you!

  • @VeloFX
    @VeloFX 8 ปีที่แล้ว +1

    So if i create on multifunctional Shader i could make just intances and change the values! :D

  • @LukiGames0
    @LukiGames0 10 ปีที่แล้ว

    It is possible to change the value of the material instance using the blueprint? For example, for pressing the button changes before a predetermined value.

  • @chuckleplant
    @chuckleplant 10 ปีที่แล้ว

    Very nice set!

  • @mariuszlisowski9218
    @mariuszlisowski9218 7 ปีที่แล้ว +2

    It's a little bit worrying for me that the video has been posted 3 years ago and I'm just starting to understand the basics of it. Isn't that too late?
    btw if all teachers had your attitude towards educating people this world would be so much greater!

  • @ManuelCastillo-us2ed
    @ManuelCastillo-us2ed 8 ปีที่แล้ว

    Pretty cool way of creating shaders, i wonder why Autodesk didn't make something like that

  • @gregfalconio6822
    @gregfalconio6822 10 ปีที่แล้ว +5

    @7:25 "really a terrible cover band" hahhaha

  • @Kiadaw77
    @Kiadaw77 10 ปีที่แล้ว

    What happen if you wanted the choice of Metallic to be from a texture, or scalar value (default), is there a way to do so in instancing?

  • @xtra_cold2445
    @xtra_cold2445 4 ปีที่แล้ว

    what if you only have (element0) and not a (element1) would you just put the instance in and not the parent

  • @SofiaKinn
    @SofiaKinn 3 ปีที่แล้ว

    thank you!

  • @Horsoniq
    @Horsoniq 10 ปีที่แล้ว +2

    So performance wise, is it ok to be using a lot of Instanced Materials in-game?

    • @neitherdoi5790
      @neitherdoi5790 8 ปีที่แล้ว +1

      +Benjiko99 I don't think there is any difference in performance from normal materials.
      it seems to me that reduce "compile time" that has nothing to do with run time.
      to be honest I don't even think that those are istance, he is just extending an object. but the istances should be the one that he placed on the static mesh itself.

    • @tommybazar
      @tommybazar 6 ปีที่แล้ว +1

      There might be a very slight performance benefit, as I think UE4 renders objects that use the same shader together. All your instances use the same shader code, so the renderer doesn't have to switch shaders for those objects, it only has to call SetParameters() with new values between draw calls.
      I.E - 2 cubes with 2 materials
      1) Get shader for cube 1
      2) Set shader parameters for cube 1
      3) Render cube 1
      4) Get Shader for cube 2
      5) Set shader parameters for cube 2
      6) Render cube 2
      2 cubes with instances
      1) Get shader for cubes
      2) Set shader parameters for cube 1
      3) Render cube 1
      4) Set shader parameters for cube 2
      5) Render cube 2

  • @astrod0866
    @astrod0866 ปีที่แล้ว

    So I made the inst and I closed those tabs by mistake
    How do I reopen them ?

  • @tennicktenstyl
    @tennicktenstyl 7 ปีที่แล้ว

    But at 12:15 it's a totally different material. How it's more beneficial than just another one? and why don't parent materials are created that way by default?

  • @aovchenkov
    @aovchenkov 4 ปีที่แล้ว

    Thank you for Aluminium :)

  • @Kiadaw77
    @Kiadaw77 10 ปีที่แล้ว +1

    Also how can we made U Tiling & V titling of UV coordinate as parameters, to control the texture size and space?

    • @_wagnerdesouza
      @_wagnerdesouza 9 ปีที่แล้ว

      Create a Append node combining two ScalarParameter(U and V).
      Connect the Append in UVs of the texture.

    • @srajanratti8093
      @srajanratti8093 9 ปีที่แล้ว

      Yup you can.Create u and v scalar Parameter then append and multiply the result with texture coordinates .Plug the final result into your texture :)

  • @duyhieunguyen6229
    @duyhieunguyen6229 2 ปีที่แล้ว

    Can you let me know the name of software which you drawing?

  • @RodrigoIsaas
    @RodrigoIsaas 3 ปีที่แล้ว

    Does anybody know how to use the Ambient Oclussion map and adjust it's intensity??

  • @jacksutherland105
    @jacksutherland105 4 ปีที่แล้ว

    Does anyone know how to add a node to adjust the scale for UV tiling and have it instanced?

  • @putnik2354
    @putnik2354 4 ปีที่แล้ว

    Cool!

  • @mersonkrazyTV
    @mersonkrazyTV 4 ปีที่แล้ว

    1000th like boiiiiiiiiiiiiiiii
    but good video too!

  • @BeardedWrenchh
    @BeardedWrenchh 10 ปีที่แล้ว

    great tutorial, still curious what the draft sketching type application is at 0:30 unless its just photoshop? just looks really nice

    • @cosmotect
      @cosmotect 8 ปีที่แล้ว

      +AntiD2 It is photoshop)

    • @cosmotect
      @cosmotect 8 ปีที่แล้ว

      ***** no problem :)

    • @ming1au455
      @ming1au455 6 ปีที่แล้ว

      Its photoshop

  • @ravikiran7777
    @ravikiran7777 6 ปีที่แล้ว

    thank you

  • @danielr.l.mccullough600
    @danielr.l.mccullough600 7 ปีที่แล้ว +1

    I suggest a change to UE4: Spell "COLOUR" Correctly

    • @___Zack___
      @___Zack___ 5 ปีที่แล้ว

      They do.

    • @JohnSmith-rn3vl
      @JohnSmith-rn3vl 4 ปีที่แล้ว

      The pipes can call all they like, resistance is futile. C++, Java, Python, PHP, Javascript all use "color". As a Brit I have thrown in the towel and just spell it as color now ;D

  • @pyrotechnick420
    @pyrotechnick420 6 ปีที่แล้ว

    I've heard that some game developers will make one massive master instancing material and then use instances of that to create all the textures in their game in an effort to conserve resources. Is this accurate?

  • @alodelore9597
    @alodelore9597 9 ปีที่แล้ว

    What is this good for?
    What is the difference between this and just copying a material?
    With a copy you can just do the same things, can't you?
    Only difference I can tell so far, is that it uses less data (space? like megabytes or what?). How is it using less?

    • @jodycarlosborrageiro9588
      @jodycarlosborrageiro9588 9 ปีที่แล้ว

      That's exactly it, less data is better!! it normally doesn't make a big difference on a small scene but combine 10 small scenes into one level and then one level into a 25 level game and you have serious performance issues...

    • @dahZeee
      @dahZeee 9 ปีที่แล้ว +1

      Jody Carlos Borrageiro Less data usage does not necessarily mean better performance. What I'd like to know is how much of a performance hit it would be if you instanced all of your materials from a single parent versus having separate materials for each.
      I do understand that having parent-child material relationships is a good way to organize materials that are only slightly different from each other, for example different color metals that are basically the same metal otherwise, but for materials as different as the two used in the video from a single parent, how is this better than having a separate brick and copper material?
      If neither of them are compiled, then I can only assume that they are generated off the parent during runtime. Isn't that a performance loss if you do that to all of your materials? Isn't it generally better to use more memory space and have faster performance versus using less memory space and taking a performance hit?

  • @AnimalsonTour
    @AnimalsonTour 5 ปีที่แล้ว

    How do you get the bleuprint editor on top?

  • @doomframe9878
    @doomframe9878 6 ปีที่แล้ว

    is this like inheritance when multiple child inherit from the parents

  • @Gensokian
    @Gensokian 7 ปีที่แล้ว

    So you say that a developer from a certain other competiting engine is developing their own shader as a Parent and then sets the (in the other engine) material as a child.... interesting.

  • @neo-uf7re
    @neo-uf7re 10 ปีที่แล้ว

    good but where we should try all that without UDK4 ??!!

    • @FoodOfTheGods666
      @FoodOfTheGods666 10 ปีที่แล้ว

      You can buy it already and get an early but unpolished copy for a subscription fee.

    • @neo-uf7re
      @neo-uf7re 10 ปีที่แล้ว

      FoodOfTheGods
      Yes I got their email about it, It is great and I really hope development of UE4 go faster along with documentation and tutorials.

    • @Shrooblord
      @Shrooblord 10 ปีที่แล้ว

      neo Not sure if you noticed, but it's available today!

  • @el_loote
    @el_loote 6 หลายเดือนก่อน

    9y later this is still one of the best Tuts on this matter. But no scaling... :-/ Well, here comes the perfect addendum (only 8y old!): th-cam.com/video/X4aXXm8km3w/w-d-xo.html. Material Instance Scaling: Possible!

  • @highlightbestcarry131
    @highlightbestcarry131 5 ปีที่แล้ว

    hello, I have something I don't understand, can you answer it?

  • @goutons
    @goutons 10 ปีที่แล้ว

    1st