No More Texture Repetition! Cell Bombing in Unreal Engine Materials

Поділитися
Вставка
  • Опубліковано 15 січ 2025

КОМЕНТАРІ • 114

  • @inwardocean
    @inwardocean Місяць тому +11

    Very timely! With displacement work so well for nanite, AND quixel ORD channels having displacement, I'm doing all kinds of heavily displaced materials. This is a super-useful (and pretty quick) technique for breaking up repetition at distance while keeping crazy detail up close. Thanks again!

    • @HojDee
      @HojDee  Місяць тому +1

      @@inwardocean glad to help :)

    • @mia_bentzen
      @mia_bentzen Місяць тому +1

      Be careful of doing this too much, as it will start to affect performance

  • @MrYuzuro
    @MrYuzuro Місяць тому +1

    Bro this is incredible. You have no idea for how long i have been trying to find this.

    • @HojDee
      @HojDee  Місяць тому

      glad I could help

  • @galravid-tal8517
    @galravid-tal8517 Місяць тому +1

    Thank you so much for making this video!
    Your content is great and the way you explain things is so understandable.

    • @HojDee
      @HojDee  Місяць тому +1

      @@galravid-tal8517 glad you liked it :)

  • @rileyb3d
    @rileyb3d Місяць тому +2

    Fantastic work! Recommending your channel to my discord.

    • @HojDee
      @HojDee  Місяць тому

      @@rileyb3d thanks man! I appreciate it :)

  • @YazdaniPlays
    @YazdaniPlays Місяць тому +1

    You are absolutely killing it bruh, I learned a lot from you

    • @HojDee
      @HojDee  Місяць тому

      glad to hear that man :)

  • @morty4423
    @morty4423 Місяць тому +1

    best tutorial by far
    thank you.

    • @HojDee
      @HojDee  Місяць тому

      glad you liked it :)

  • @alltradesjack6594
    @alltradesjack6594 Місяць тому

    Excellent bit of knowledge. Thanks a lot for sharing it!

    • @HojDee
      @HojDee  Місяць тому

      @@alltradesjack6594 glad you liked it man :)

  • @loganasaurusrex8246
    @loganasaurusrex8246 Місяць тому

    FINALLY! I’ve been trying to do something like this for AGES!

    • @HojDee
      @HojDee  Місяць тому

      @@loganasaurusrex8246 glad I could help :)

  • @John_atCTS
    @John_atCTS Місяць тому +2

    Awesome!! IMO, definitely one of the BEST Texture Bombing methods I've seen so far!
    Question: Based on your experience, I would be interested in knowing which Texture Bombing Method (say the 5 most common?) works best with which types of Textures.
    For example, I think I read that Cell Bombing works best with granular-type textures (fine stone, dirt, cement, etc??.) and others work best for more defined textures (Ground Twigs/Leaves textures), etc.
    Thanks again for the video!

    • @HojDee
      @HojDee  Місяць тому +1

      I use cell bombing for any organic texture. rock, grass, ground with twigs, or anything.
      But in case of textures that have pattern, like brick or tiled wood, the bombing methods don't work correctly.

    • @John_atCTS
      @John_atCTS Місяць тому +1

      @@HojDee - thanks. Would be nice if Epic eventually makes it a built-in Node!

  • @boriskourt
    @boriskourt Місяць тому

    Thanks! This is a great explanation. Looking forward to de-tile my landscapes :)

    • @HojDee
      @HojDee  Місяць тому

      glad it helped :)

  • @tomasgomez9925
    @tomasgomez9925 Місяць тому

    Awesome! Will keep it when I create a new environment :)

    • @HojDee
      @HojDee  Місяць тому +1

      great :)

  • @-kris5923
    @-kris5923 22 дні тому

    Very helpful!!
    thx

    • @HojDee
      @HojDee  22 дні тому

      @@-kris5923 glad to hear that kris :)

  • @LexFomin
    @LexFomin Місяць тому +1

    Very cool, I use similar techniq in redshift. Thank you!

    • @HojDee
      @HojDee  Місяць тому

      @@LexFomin you're welcome :)
      Yeah, it's math stuff. It can be done in any engine I think

    • @dimaananyev5336
      @dimaananyev5336 Місяць тому

      Алексей, привет! Прикольно встретить здесь своего приятеля. Такого рода инструменты есть много где , в короне например, но для анриала урок весьма полезный.

  • @TvCinemaCraft
    @TvCinemaCraft Місяць тому

    thank you a big geek, i love you

    • @HojDee
      @HojDee  28 днів тому

      @@TvCinemaCraft glad you liked it man :)

  • @juanmilanese
    @juanmilanese Місяць тому

    quality tutorial man...

  • @youngsiks5434
    @youngsiks5434 Місяць тому +1

    Thank you for posting the video! I have a question.
    Is there a way to reduce Texture Repetition for textures with patterns (e.g. bricks or tiled wood)?
    If there is, I would like to ask if you can make a video!

    • @HojDee
      @HojDee  Місяць тому +1

      patterned textures are a bit tricky. I'll make a video when I find a solid solution

    • @anthonymerle310
      @anthonymerle310 24 дні тому

      The simplest and quickest method would be using some sort of macro variation solution. For example you can blend a texture over a brick wall at different scales. Something like that uses multiple texture samples though. You can achieve a similar result by using a texture that has finer shapes and just scaling it larger. You just have to be careful with how large you scale it as to not make it a blob 😂
      Another great method for things that have a pattern is using a mask that breaks the surface up into sections. This technique has been commonly used on wood floors. So imagine you had a 6x6 meter brick wall texture. Create a mask of that texture that has been tiled at least once, if not twice. Then randomly select different bricks to mask by each channel. The final result is a packed texture that selects 3 groups (4 if you use the alpha) that can be used to shift the colors. Since the mask is scaled 2 or 3 times larger in order to be the same scale, you end up with a really nice break up over a large area. This is similar to an ID mask, but since it’s based on your tiling texture it has to be created manually. Substance Design uses techniques like this to create things like brick walls, but if you’re using much more organic image based or photogrammetry based textures then you’ll need to create it manually.
      Of course you can always combine methods. For example with these two you could actually blend a macro type texture with the random brick selection mask so that you only needed a single texture to accomplish both. Sacrifices normally have to be made to combine techniques though.
      There are many techniques for things like this. Everything has pros and cons and it just depends on your needs. A lot of the neat solutions like this are sort of “tricks of the trade” things that can be nearly impossible to find online.
      For example, imagine a beach that needs textured. Extremely complex surface and has very little to cover it. You can capture screen shots of beaches from drone images. Then create a composition using them in photoshop that fits the exact beach area in your map. So you would take a top down screenshot of the map, aligning your beach composition to its location. This is a super high level approach that tackles multiple problems at the same time. For example, it not only looks very real because it has details and patterns captured from real life, but it solves distance scale macro variation. Then the details can be broken up to create masks that can be packed into a texture. Then that can be used to place different types of sand. Combine this with a traditional macro texturing solution and a technique like the one shown in this video and you can create something that’s a true cut above. Combine this with techniques such as displacement, decals and scattering content using pcg…with the same masks…and you have essentially reached the pinnacle of texturing a beach. 🤣
      I sort of went on a tangent here, but hopefully this helps someone 🙂

    • @youngsiks5434
      @youngsiks5434 24 дні тому

      @@anthonymerle310
      First of all, thank you for your reply!
      Other than the first solution you mentioned, the vertex painting technique,
      I haven't had the chance to try the others yet, so I'll need to look for videos or blog posts to help me understand them better.

    • @anthonymerle310
      @anthonymerle310 24 дні тому

      @@youngsiks5434Glad I can help! I pretty much never respond to comments. No idea what compelled me this time. Vertex painting is a good solution sometimes. It depends though. For example, the granularity of your painting mask is dependent on how many vertices the model has. It can be a nice way to save on texture memory since you can store 4 masks into the mesh itself. One caveat is in order to have good blending using a height map might be needed. Not always though. For example you could use one of the channels for one of the textures and multiply by a constant or run through a power node or cheap contrast.
      Using vertex painting requires you to actually paint it in a believable way, although it does give really good control. However, painting a front house facade vs the side of a 6 story building vs a few city blocks def makes a difference. For example, aside from time, the more content it is or the larger the mesh surface has to be the more geometry you might need. I think you’ll also find that manually painting something that feels random is pretty hard. Vertex painting gives you basic masks that only provide what you paint. Using an actual texture allows you to create a lot of potential variations. Of course you can always use a combination of the techniques. The textures in your materials are what will dictate performance, for the most part though. Storing vertex colors is pretty cheap.
      I don’t think I’ve seen anyone use vertex painting for subtle variations to remove tiling. I’ve pretty much only seen it used to combine different surfaces.
      One idea you could try is using a macro texture for a brick wall….captured from a real brick wall. Just remove defining details. Then blend it with a brick texture. As you distance yourself from it maybe decrease contrast of the main base color texture, allowing the macro to mostly take over. To take it one step further you could do a high pass filter over the original to extract the most important details. Then with that information and the original texture you could create a distance blend version of it. So in the end you would have your original base color, the distance blend version and then the macro created from an actual wall image. I know I keep using a wall as the example, but the same applies to any surface.

    • @youngsiks5434
      @youngsiks5434 23 дні тому

      @@anthonymerle310
      Ah! I'm still a student, so I'm not very familiar with the various techniques within the engine, but thank you for sharing this information!
      I'll look into distance blending and study more about it!
      Thank you once again for taking the time to respond!

  • @aadarshgupta6800
    @aadarshgupta6800 28 днів тому

    nice tutorial, do u have link for that voronoi texture in png format? i am trying toimplement it in other game engine

    • @HojDee
      @HojDee  28 днів тому +1

      @@aadarshgupta6800 not really. The unreal file is on my website. You can get it.

    • @aadarshgupta6800
      @aadarshgupta6800 28 днів тому

      @HojDee but as i mentioned i wanna try this technique in another rendering engine and the voro texture is in unreal format

    • @HojDee
      @HojDee  28 днів тому +1

      @@aadarshgupta6800 message me in discord. I'll export it and send it to you when I get home

    • @aadarshgupta6800
      @aadarshgupta6800 28 днів тому

      @@HojDee Thanks alot!😄

  • @ArchViz_PaXu
    @ArchViz_PaXu Місяць тому

    Hi, Thanks for tut, I have problem when use displacement appear both texture cell , how to only make displacement for main texture?

    • @HojDee
      @HojDee  Місяць тому

      I didn't exactly understand the question, but I think what you're talking about. If you increase the displacement magnitude, some areas may look bad, especially in the black areas of the alpha channel of the cell texture. I hide it by decreasing the displacement magnitude.

  • @Grigga
    @Grigga Місяць тому

    is there a way with simpler nodes to make random rotation? its to heavy the way you show it...

    • @HojDee
      @HojDee  Місяць тому

      you can skip the rotation. or add a switch to turn it on or off. it works great with just the offset and the scale. or even just the offset

  • @samonogram2631
    @samonogram2631 Місяць тому +1

    what's the difference with using texture variation nodes?

    • @carlosrivadulla8903
      @carlosrivadulla8903 Місяць тому +1

      I was about to ask the same. That node does the trick

    • @DamienRamirez
      @DamienRamirez Місяць тому +3

      In short: very little, the Texture Variation uses noise instead of cell & it blends the "visible lines" based on height rather than the same texture alone. The cost is similar but the result is cell can give more variation (without looking as broken). There is a little more to it, but that's the basics.

    • @HojDee
      @HojDee  Місяць тому +1

      @@DamienRamirez thanks for the explanation

  • @Mikefiser
    @Mikefiser Місяць тому

    Any notes on the performance? I noticed it samples the texture at least twice as much but I would be interested in the precise calculations and performance hits on a big terrain. It also needs to sample that voronoi texture but that doesnt have to have a huge resolution, right?

    • @HojDee
      @HojDee  Місяць тому +1

      The most important thing is the increasing sample count, I think. I haven't gone deep into the exact performance calculations though. When using with landscape material, I'd use it only on layers where the repetition is really obvious and can't be hidden by foliage and stuff.

  • @alimirza-g4g
    @alimirza-g4g Місяць тому

    I have a problem when I choose the modeling option, there are no tools

    • @HojDee
      @HojDee  Місяць тому

      maybe the plugin is not enabled

  • @ilyachernobrov
    @ilyachernobrov Місяць тому

    Thanks a lot!

    • @HojDee
      @HojDee  Місяць тому

      @@ilyachernobrov you're welcome man :)

  • @KaiserKaddu
    @KaiserKaddu Місяць тому

    I cant find the voronoi texture in the files...

    • @HojDee
      @HojDee  Місяць тому

      there was some issue with the file. I've fixed it. download the textures file

  • @전민영-p1q
    @전민영-p1q Місяць тому

    Thanks!!!

    • @HojDee
      @HojDee  Місяць тому

      you're welcome man :)

  • @johanparada
    @johanparada День тому

    I guess my question is how to apply it to a landscape material node

    • @HojDee
      @HojDee  День тому

      @@johanparada you don't have to apply it to a landscape material node. You should apply it to each texture in the material. And it's the same as in the video.

  • @omniplay.balkan
    @omniplay.balkan Місяць тому

    Does this have some impact on the performance?

    • @thutmosisSeven
      @thutmosisSeven Місяць тому

      Yes, a bit, because of the indirect texture call that may invalidate the texture cache.

    • @HojDee
      @HojDee  Місяць тому +2

      and also the increasing sampler count. the impact is not that much. but you gotta watch out for it. especially if developing for mobile

    • @omniplay.balkan
      @omniplay.balkan Місяць тому

      @@thutmosisSeven Thanks for the info!

    • @omniplay.balkan
      @omniplay.balkan Місяць тому

      @@HojDee Appreciate it!

  • @gone41674
    @gone41674 Місяць тому

    Does it work for an infinite world size? For example, if you set Size - Main Texture to 0.01, would it still avoid repetition?

    • @gone41674
      @gone41674 Місяць тому

      You add an offset from the Voronoi texture, which has a fixed size, so I think it would repeat if the map is larger than the area covered by the Voronoi texture.

    • @HojDee
      @HojDee  Місяць тому

      @@gone41674 the voronoi texture is also tiling. so it can go on forever. just make sure the relation between the texture size and the cell size is reasonable. like I mentioned in the considerations section of the video

    • @gone41674
      @gone41674 Місяць тому

      @@HojDee Yes, I’m aware that the Voronoi texture is tiled, which is the problem. Tiling causes repetition, since the UV offset is read from the Voronoi texture, the final texture will also repeat. This repetition will occur if the world size exceeds the coverage of the Voronoi texture.

    • @HojDee
      @HojDee  Місяць тому

      @@gone41674 because of the random offset, rotation, and scale, it can't be seen. At the beginning of the video I showcase an example, the Voronoi texture has tile 10 times. I don't see any repetition there

  • @samwinchester3201
    @samwinchester3201 2 дні тому

    i cant register on your site

    • @HojDee
      @HojDee  2 дні тому

      @@samwinchester3201 please check your spams for the verification email.

  • @arefrazavi6884
    @arefrazavi6884 Місяць тому

    good job

  • @indigochoiart
    @indigochoiart Місяць тому

    Is there any way to download or buy your cell bombing MF file?

    • @HojDee
      @HojDee  Місяць тому +1

      @@indigochoiart I've put it on my patreon. The link is in the description

    • @HojDee
      @HojDee  Місяць тому +1

      @@indigochoiart it's also available in the epic's city sample project, if you have it.

    • @indigochoiart
      @indigochoiart Місяць тому

      @@HojDee thanks for the good work

    • @HojDee
      @HojDee  Місяць тому

      @@indigochoiart glad to help :)

  • @rahulk8489
    @rahulk8489 19 днів тому

    UNABLE TO RECEVIE YOUR VERFICATION EMAIL FOR YOUR WEBSITE

    • @HojDee
      @HojDee  18 днів тому

      the site is having temporary issues. you can get it from my discord channel. in the assets section

  • @Archviz_hosseini
    @Archviz_hosseini Місяць тому

    god bless youuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu 😭

    • @HojDee
      @HojDee  Місяць тому

      thanks man

  • @tomastoegel4973
    @tomastoegel4973 Місяць тому

    Ok, definitelly the way but should be as one material like a "plugin" with all parametres in it. I wait for something similar in 3DS max.

    • @HojDee
      @HojDee  Місяць тому

      @@tomastoegel4973 in the end, I made it a material function. It can be used in any material inside unreal engine.
      For 3ds max, the principles are the same I guess. If you're familiar with its material system you should be able to create it

  • @MarkEntingh
    @MarkEntingh Місяць тому

    I think the most important question is, how expensive is this method on the GPU?

    • @HojDee
      @HojDee  Місяць тому

      it increases the texture sample count. makes it twice. so that's the real bottleneck, I think. it's not optimized in that sense

  • @simonb1009
    @simonb1009 Місяць тому

    What is difference between cell bombing and texture bombing?

    • @HojDee
      @HojDee  Місяць тому +1

      @@simonb1009 the method is different. cell bombing is cheaper and works better in my opinion

    • @HojDee
      @HojDee  Місяць тому +1

      @@simonb1009 watch this video to learn more about texture bombing
      ua-cam.com/video/SfJY3e-3wwY/v-deo.htmlsi=v9Vs-QccW6OJlX7l

  • @kovalevtimofei85
    @kovalevtimofei85 Місяць тому

    Hi! can t find cell texture. Can you give direct link? thanks

    • @HojDee
      @HojDee  Місяць тому

      hi! get it here: www.hojdee.com/courses-details/free-downloads
      and here's the tutorial on how to get it, if you run into any issues: ua-cam.com/video/8yRxmuY9If4/v-deo.htmlsi=770df6CkfG-jx-Cj

    • @Cyberex
      @Cyberex Місяць тому

      Yeap, me neither, can you provide the link for your website ?

    • @HojDee
      @HojDee  Місяць тому

      @@Cyberex there was some issue with the file. I've fixed it. download the textures file

  • @SirRebonack
    @SirRebonack Місяць тому

    6:27 Why divide? Multiplication could be used to achieve the same result but with much cheaper instruction cost. Divide should be avoided where it's possible.

    • @HojDee
      @HojDee  Місяць тому

      @@SirRebonack multiply is cheaper, you're correct. But with modern hardware, the difference is not that significant. If you wanna make it really optimized though, you should go with multiply for sure.

    • @nikoheino3927
      @nikoheino3927 Місяць тому

      not sure how its handled here, but atleast in most programming languages, the compiler optimized most divisions into multiplications.

    • @SirRebonack
      @SirRebonack Місяць тому +1

      @@nikoheino3927 The shader compiler cannot optimize this division because it is based on dynamic data (sampled texture). Division is fine to use on parameter values, which are able to be optimized. Division is significantly more expensive than multiplication.

    • @nikoheino3927
      @nikoheino3927 Місяць тому

      @@SirRebonack oh okay, good to know.

  • @VeganApps
    @VeganApps Місяць тому

    TextureVariation node is also useful... oO

    • @HojDee
      @HojDee  Місяць тому

      yeah. I'll make a video about it in the future

  • @alexCompany
    @alexCompany 14 днів тому

    it's useless if you use normal

    • @HojDee
      @HojDee  14 днів тому

      @@alexCompany not really

  • @anotherreality7951
    @anotherreality7951 Місяць тому

    I think going through all the material is very time consuming. epic should make auto texture edit plugin.

    • @HojDee
      @HojDee  Місяць тому +1

      @@anotherreality7951 you could just make it once and reuse it anywhere you want

  • @1_cutter_169
    @1_cutter_169 19 днів тому

    Hi, when i try to sign up on your web site it just wount send me the verification link to the mail (gmail), also your discord links are expired(on profile and in descriptions too).

    • @HojDee
      @HojDee  18 днів тому

      the site is having temporary issues. you can get it from my discord channel. in the assets section.
      I checked the discord link in the description of this video. it works