Infinite Non-Repeating details in materials (UE4, valid for UE5)

Поделиться
HTML-код
  • Опубликовано: 9 ноя 2024

Комментарии • 35

  • @micah3209
    @micah3209 2 года назад +14

    This kind of content is so lacking in the tutorial space for Unreal Engine. Thank you so much for producing these, the quality is amazing and it's very informative. You deserve far more viewers and subscribers. Keep up the good work, many of us appreciate it!

  • @wombatbat6955
    @wombatbat6955 3 года назад +3

    I hope the algorithm catches up on you one day! Your videos are great!

  • @d2v3sclutch75
    @d2v3sclutch75 3 года назад +3

    Great job please continue revolutionising the way I make materials

  • @spacebob22
    @spacebob22 Год назад +5

    Very interesting!
    But please mention that the VectorNoise node does cost quite a bit. I would not want our padawans to think they can use it everywhere without a worry. Or maybe that would be a good video idea: "Understanding the cost of Instructions".
    I say this because I do have junior Techarts and aspiring Techarts in my team that watch this kind of video without the critical sense to understand that some nodes, in this case the VectorNoise node, are way more expensive than other nodes.

    • @robinj6997
      @robinj6997 3 месяца назад

      Padawan here. I was reading the Unreal documentation about Vector noise - cell noise, it says: "This Vector Noise function is extremely cheap to compute, so it is not necessary to bake it into a Texture for performance." I don't know if that cell noise is a exception to the other vector noise operations.
      I'm currently coding in godot, so the function doesn't exist. But I'm calling a random color per vector input. I can still randomize by changing the y-value. Maybe Unreal uses the same code:
      "shader_type spatial;
      uniform int ScatterGridSize = 10;
      float rand(vec2 grid) {
      return fract(sin(dot(grid, vec2(12.9898, 78.233))) * 43758.5453);
      }
      vec3 RandomScattering(vec2 uv, int row_and_column)
      {
      uv = trunc(uv * float(ScatterGridSize));
      float r = rand(uv + vec2(1.0, 0.0));
      float g = rand(uv + 1.0); // Randomize by changing the y value
      float b = rand(uv + vec2(0.0, 1.0));
      vec3 MyVector = vec3(r,g,b) ;
      // vec3 MyVector = (vec3(r,g,b) - 0.5)* 2.0;
      return MyVector;
      }
      varying vec2 uv_pos;
      void vertex() {
      uv_pos = UV;
      }
      void fragment() {
      ALBEDO = RandomScattering(uv_pos, ScatterGridSize);
      }"
      edit: I still haven't reached the end of the video, I'm fixing bugs hehe

  • @alfonsoquintanajimenez83
    @alfonsoquintanajimenez83 3 года назад +3

    All your videos are really useful!, I hope your channel increases because you would help many more people. Greetings and thanks for this.

  • @ViktorartSnowtracked
    @ViktorartSnowtracked Год назад

    Omg! Serious cool stuff!

  • @deever92
    @deever92 3 года назад +2

    Wow!

  • @robinj6997
    @robinj6997 3 месяца назад

    Another banger, thank you. I managed to get it working in godot. For other people trying the same: turn off generate mipmaps on import. Sine and cos needs to be multiplied with 2.0 * PI.

  • @aukehuys2297
    @aukehuys2297 3 года назад +1

    Really appreciate your videos. Thanks! :)

    • @VisualTechArt
      @VisualTechArt  3 года назад

      Glad to be helpful :)

    • @aukehuys2297
      @aukehuys2297 3 года назад

      @@VisualTechArt I hope you'll find the time to make more nice tutorials. I really like the approach of focusing on more advanced stuff. When there is any possibility to support you (donation), I would be grateful to do so :)

    • @VisualTechArt
      @VisualTechArt  3 года назад +1

      @@aukehuys2297 Awesome, this makes me incredibly happy :) I have some long term plans, but for now I'll stick to keeping this an hobby :D

  • @timarenski8137
    @timarenski8137 3 года назад

    Big thanks for your effort, very informative and interesting :0

  • @ethanwasme4307
    @ethanwasme4307 2 года назад

    Never seen thid before, dang awesome!

    • @VisualTechArt
      @VisualTechArt  2 года назад

      It's how most of the procedural texture generation softwares randomizes placement of elements :)

  • @SuperStrangeStudios
    @SuperStrangeStudios Год назад

    This is great! Is there a way to also world align the result? I would love to have all the randomisation but also projected in world space. Thanks!

  • @Alluvion69
    @Alluvion69 Год назад

    Can this be made as a material function? Im not sure if thats how it works as im fairly scratching the surface, but i dont want my materials to repeat when i try to scale their tiling

  • @phalhappy8612
    @phalhappy8612 2 года назад

    Can you scatter 3D object for example grasses depends on texture mask?

    • @VisualTechArt
      @VisualTechArt  2 года назад +1

      Not on meshes and from the shader, if that's what you mean. The landscape is set up to do that though

  • @0805slawek
    @0805slawek 2 года назад

    Existe some simple trick to make smooth transition from foliage grass to landscape material? without see edge where grass foliage disappear and grass far away look realistic? I try virtual texture but close look wierd

    • @VisualTechArt
      @VisualTechArt  2 года назад +2

      My advice is to match as best you can the GBuffers! If you tune up your scene in a way that in the Normal buffer, Roughness buffer, Base Color buffer etc you don't see the transition, your final scene won't have it :D

  • @tbunreall
    @tbunreall 2 года назад

    how do you even get to the point where you memorize stuff like this lol

    • @VisualTechArt
      @VisualTechArt  2 года назад +2

      No. Every time you have to figure that out again ahahahah it happened few times that I had to follow my own tutorials too!
      The very important thing is understand the concepts behind stuff, so you're able to figure it out every time... Or being very good at remembering where to find the resources you need to follow :D

    • @tbunreall
      @tbunreall 2 года назад +1

      @@VisualTechArt Ya the "understanding" part is hard. Shaders are a whole new world to me, so it looks like you're just subtracting, dividing, multiplying with no rhyme or reason, when coding I can follow logical steps. It'll just take some time I guess