Parallax Occlusion Mapping in Blender // Tutorial

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

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

  • @EdKidgell
    @EdKidgell 8 месяцев назад +349

    So. I open blender up, delete the default cube......then what?

    • @sicfxmusic
      @sicfxmusic 8 месяцев назад +60

      Then delete default light and then default camera. Finally, delete Blender. Start again.

    • @Harry-bp2dl
      @Harry-bp2dl 8 месяцев назад +21

      Then you add a new cube.

    • @jay.p3g
      @jay.p3g 8 месяцев назад +3

      Simple, he can’t make anymore videos because well….you deleted him :(

    • @HeadFlyyy
      @HeadFlyyy 8 месяцев назад

      then you rewatch the whole tutorial again step by step

    • @brunocastro4558
      @brunocastro4558 8 месяцев назад

      @@sicfxmusic 🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣

  • @Ghc902
    @Ghc902 8 месяцев назад +453

    he's just using blender to teach you linear algebra

    • @DefaultCube
      @DefaultCube  8 месяцев назад +92

      dont tell them

    • @monarchblack3004
      @monarchblack3004 8 месяцев назад +20

      @@DefaultCube You better knock that shit off..!

    • @vextormull
      @vextormull 8 месяцев назад +6

      It's working!

    • @IcoreZero
      @IcoreZero 8 месяцев назад +8

      DAMNIT ALGEBRA you fooled me once again

    • @jaym2112
      @jaym2112 7 месяцев назад

      Couldn’t understand it less than my linear algebra class taught by the nuttiest Ukrainian to ever enter the US. I still don’t know what an eigen value is. Oh, and 20 years of engineering later… I never needed to.

  • @Geszichta
    @Geszichta 8 месяцев назад +46

    GOAT of blender still on the block

    • @peaklander1
      @peaklander1 8 месяцев назад

      "get it...? BLOCK?"

  • @conradfalloff991
    @conradfalloff991 8 месяцев назад +83

    9:05 and _this_ is why I want Repeat Zones in the Shader Editor

    • @samfellner
      @samfellner 8 месяцев назад

      Im not smart enough to figure out to fix this repetition problem myself, how would you actually do it, without adding all those step nodes manually? This parallax effect is so mindblowing i really want to incorporate it in my work

    • @Denomote
      @Denomote 8 месяцев назад +5

      ​@@samfellner honestly you're better off just using actual displacement instead of doing all this lol
      this is only useful if you're really serious about cutting down render times

    • @jmalmsten
      @jmalmsten 8 месяцев назад +1

      To replicate this with displacement mapping I guess I'd need one triangle per pixel. That scales reaaaasaally fast. A 1K*1K texture would need a million triangles. Multiplying that if the texture repeats.
      Yeah, sure I probably wouldn't need 1 triangle per pixel in most cases. But even outside of games, realtime backgrounds on volume stages and stuff like that, I would love a more user friendly approach to occlusion mapping, collapsed to a single node. Would save on so much effort. :)

    • @Venous_fx
      @Venous_fx 7 месяцев назад +1

      @@Denomote displacement can really eat up your vram/ram usage and destroy render times. This is really useful. Im thinking theres probably a way to implement using osl, that way you can just use a for loop.

    • @tobiashagstrom4168
      @tobiashagstrom4168 6 месяцев назад

      Think how useful that could be, you could set it so it used the view distance to determine the number of "layers" for the parallax, I be that sort of dynamism could be great for optimization. I already use view distance to scale the amount of detail in procedural material, which I at least *think* increases performance.

  • @someloser7991
    @someloser7991 8 месяцев назад +48

    Extra tip: use a white noise texture instead of the discrete depth checks - simplifies the number of nodes and gets rid of the stepping, at the cost of looking a bit noisier.

    • @True-VFX
      @True-VFX 8 месяцев назад +11

      Classic “dithering”. Just bear in mind for anyone that does this, its NOT a blur method.
      Dithering can mess up displacement and height map outputs.

    • @004307ec
      @004307ec 7 месяцев назад +1

      😮 I remember this trick in making good looking refraction.

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

      Couldn't you improve that further with a gradient texture?

  • @darrennew8211
    @darrennew8211 8 месяцев назад +62

    I finally understand how parallax occlusion mapping works.

  • @iam_abdullah2
    @iam_abdullah2 8 месяцев назад +48

    Thanks for motivation. I was planning to delete blender. Now I did it.

  • @NekoSamaIru
    @NekoSamaIru 8 месяцев назад +4

    I wanna cry. I understood nothing!! But, I really wanna use parallax occlusion, because my PC isn't strong enough for displacement maps!
    This was still a very detailed tutorial, so I will probably get it after watching it a few times. It's easier to understand things when I have no choice but to understand them to complete a project.

  • @sebastiangudino9377
    @sebastiangudino9377 4 месяца назад +5

    This is something i ALWAYS wanted. In real time rendering engines you can have "Per Pixel Displacement Mapping". But in blender for you to actually see the displacement you need to subdivide the heck out of your mesh, since displacement works "Per Vertex". I always found that silly and ineffficient, so this technique is AMAZING for when subdividing a plane ad infinitum is just not ideal

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

      Well you can just enable adaptive subdivision which is per - pixel

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

      @Concodroid That still creates geometry tho, this genuinely does not. You get real depth with no added geometry, which is great for large scenes. For example, this is how videogames make the interior of windows in large cities

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

      @@sebastiangudino9377 No I know, it's just that this approach has limitations too. Glancing angles suffer from this technique. This does best when you're looking top-down at a flat plane; adaptive subdivision works best with something like landscapes

    • @nikoheino3927
      @nikoheino3927 5 часов назад +1

      ​@@Concodroid well you can actually adjust the steps at runtime when viewing from such angles. not sure about blender, but atleast unity and unreal allow you to do that. basically you take the angle at which a surface is being looked at, and do some math to scale the amount of steps accordingly.

  • @Limefox-qw8ks
    @Limefox-qw8ks Месяц назад

    Thank you so much I’ve been trying to find out how to do this forever!!!

  • @sobreaver
    @sobreaver 8 месяцев назад +3

    WHOOAAA !!!
    But seriously, great tutorial ! Relatively deep subject but well explained, even though we might have to take a few steps back a few times to figure things out correctly, you gave us a precise and concise explanation. I just watch a video on the colour perception of jumping spiders and all to say, it is quite a wonder the things we can manage to do with the information we can manage to perceive :)

  • @1234againatmodeling
    @1234againatmodeling 2 месяца назад

    After I plugged in the geometry incoming to vector, I went no further. That was pretty cool looking just doing that. Thanks as always for teaching and I will try to finish once I watch it again and again.

  • @cyborgmetropolis7652
    @cyborgmetropolis7652 7 месяцев назад +1

    A couple years ago i followed a similar tutorial showing how to make fake windows with rooms behind them. I ended up with a project to build the rooms (with wall decorations, lighting, etc.), which put out a node set, and a shader template to modify with the node set.

  • @hotkeypixel
    @hotkeypixel 7 месяцев назад

    First time I saw Parallax mapping was in F.E.A.R. The decals on damaged walls. It was one of the coolest things to see because it was so much detail for something that use to be a black dot.

  • @danialsoozani
    @danialsoozani 8 месяцев назад +2

    BEST Parallax Occlusion Tutorial ever!

  • @to.bonnet
    @to.bonnet 8 месяцев назад

    Men that's just so much you give us. Thanks a lot, have to rewatch it several times to fully get it i think

  • @dazecm
    @dazecm 8 месяцев назад

    Great explanation for something I considered sorcery when I saw it used in 3D.

  • @ariandesign3981
    @ariandesign3981 8 месяцев назад

    Wow, amazing stuff! Thanks a lot for sharing it! A big ciao from Italy and Long life to Blender! :)

  • @beetleback8131
    @beetleback8131 2 месяца назад

    Would love to see your take on shell texturing, been messing around with ways to do it in geometry nodes.

  • @InfinitySiam
    @InfinitySiam 8 месяцев назад

    oh finally a great quality tutorial! I am joking you are the best.

  • @Mr-dk1dh
    @Mr-dk1dh 8 месяцев назад

    This guy is the best blender youtuber

  • @ProjectHelisexuality
    @ProjectHelisexuality 8 месяцев назад

    I totally got everything covered here!

  • @CloudColumncat
    @CloudColumncat 8 месяцев назад

    It made my head hurt but it was well worth it, the longest thing for me here was the 7 hours I invested in Zbrush to create that texture lol

  • @umarcga7823
    @umarcga7823 4 месяца назад

    Man I was looking for these tutorial and I am also looking for a lot of other tutorial by you on geometer nodes. Like how to randomize hair thickness

  • @bUildYT
    @bUildYT 8 месяцев назад +1

    damnn thats like octane ggs dude!

  • @vectorhunter4659
    @vectorhunter4659 8 месяцев назад

    this method has some limitations but can work for some cases is enough, thanks for sharing

  • @Noble5Consultants
    @Noble5Consultants 8 месяцев назад +2

    I was waiting for this video

  • @gifdapif
    @gifdapif 8 месяцев назад

    Once again, blow my mind

  • @DJ_Narcan
    @DJ_Narcan 8 месяцев назад

    Thanks for posting this! That forum is a wealth of knowledge

  • @PaulBrunt
    @PaulBrunt 8 месяцев назад +26

    Doesn't that break when you rotate the plain? you need to transform the incoming vector into texture space. ie take the dot product on the incoming vector with normal, tangent and binormal. Although I'm sure you know that, I'm guessing there is a part 2 🙂Be warned the technique doesn't work on curved surfaces anymore, blender clamps the normal so you can't have be pointing into the plane surface, because is messes up eevee next. That caused me such a headache trying to figure out what was wrong!

    • @DefaultCube
      @DefaultCube  8 месяцев назад +15

      yep, just multiply by that matrix - the one i linked in description has that

  • @akolyadin
    @akolyadin 8 месяцев назад

    First thing popping to mind: convert the height map into something akin to 3d SDF, which will optimise the amount of steps needed for each fragment as well as accuracy.

  • @_framehold
    @_framehold 8 месяцев назад +2

    'the man, the myth, the legend, the mathematical wizard'

  • @GUMMY_MKII
    @GUMMY_MKII 8 месяцев назад

    Amazing man, I crave node shenanigans

  • @tiavstudio
    @tiavstudio 8 месяцев назад +1

    Your ability to teach is phenomenal. Thank you for being an inspiration.

  • @JasonKey3D
    @JasonKey3D 8 месяцев назад

    nice explanation, thanks 🙏

  • @bhuvaneshwaranm5798
    @bhuvaneshwaranm5798 8 месяцев назад

    I really want fragment shader kinda setup in blender. So then I can for loop through all the iteration easily.

  • @janvandertoorn
    @janvandertoorn 8 месяцев назад

    Must say this is quite genius! amazing thnx

  • @chinonsopromise4962
    @chinonsopromise4962 7 месяцев назад +2

    I only understood the skillshare ad😢😢

  • @sarodesh
    @sarodesh 8 месяцев назад

    Bro you're a genius

  • @fjfixkdnhc
    @fjfixkdnhc 7 месяцев назад

    This is nice, thank you

  • @AyushBakshi
    @AyushBakshi 8 месяцев назад

    This madlad got 'i can remap your life' kind of energy

  • @bennyweimer2345
    @bennyweimer2345 8 месяцев назад

    I have tried to do this well so many times in blender

  • @004307ec
    @004307ec 7 месяцев назад

    ❤nice tutorial!

  • @vladimirlavrentyev9206
    @vladimirlavrentyev9206 4 месяца назад +1

    Hard to tell whether the guy in the video is John Snow from GOT or Pedro Pascal from the Mandalorean

  • @Gr13fM4ch1n3
    @Gr13fM4ch1n3 8 месяцев назад +3

    I like how my brain turned off for every single thing except the skillshare ad.

  • @astedroid
    @astedroid 8 месяцев назад

    This is the equivalent to "Yeah, Im a visual learner" in math class wthen learning about vectors

  • @nicholaskuebelbeck7184
    @nicholaskuebelbeck7184 7 месяцев назад

    So Enjoyable

  • @mrmunkee
    @mrmunkee 7 месяцев назад +1

    Forgot to set normal and roughness to non color instead of sRGB (I assume you know to do that but just forgot in the moment). Normal maps and roughness maps are not displayed correctly when set as sRGB so the rocks at the end look a bit weird. Cool video though, I wish blender just had POM support by default like most game engines where you just plug in a height map.

  • @GANXY
    @GANXY 8 месяцев назад

    Very cool technique!

  • @drokolesko12
    @drokolesko12 8 месяцев назад

    Awesome as always, man!

  • @thecwd8919
    @thecwd8919 7 месяцев назад

    I wonder if you could do a binary search instead of buckets
    I dont know blender well so I cant say, but it would help mitigate the blockiness

  • @gamingx16071
    @gamingx16071 8 месяцев назад

    I literally discovered this one week ago (not quite what I discovered now that I realise, but still similar)

  • @theneonbop
    @theneonbop 8 месяцев назад

    have you seen anisotropic cone step mapping? I would be surprised if its possible to make in nodes but it is supposed to often be both faster and higher quality. It uses scaled cones centered on each pixel instead of vertical layers, and requires a preprocessing step.
    There's also nvidia's relaxed cone step mapping which looks similar except it makes the cones intersect the geometry and adds a binary search at the end.

  • @martinconstable5911
    @martinconstable5911 8 месяцев назад

    You are a god who walks among us.

  • @Danger_N00dle
    @Danger_N00dle 8 месяцев назад +1

    Doing stuff in steps like this seems weird.
    I think we need the node equivalent of Calculus.

  • @BonkBonkad
    @BonkBonkad 8 месяцев назад

    Finally you upgraded the tutorial..

  • @TheVigore
    @TheVigore 8 месяцев назад

    It looks kinda wonderful, but I have serious concerns about how much longer the render will become with a setup like that. If only it was a sort of - low level processor instruction node...

  • @betwixedxen7648
    @betwixedxen7648 8 месяцев назад

    We really need the ability to loop like geometry nodes in n shader nodes, that and pass a texture parameter into a node group
    Bravo

  • @Neo2266.
    @Neo2266. 4 месяца назад +1

    Neat

  • @givowo
    @givowo 8 месяцев назад

    Man a loop would be nice in nodes

  • @tusher23
    @tusher23 8 месяцев назад

    😅 One breathe at a time, Thanks a lot saviour!! 🎉

  • @bonecoseoutrascoisas-leiri1131
    @bonecoseoutrascoisas-leiri1131 8 месяцев назад

    great! Thank you!

  • @hanzi1801
    @hanzi1801 8 месяцев назад +2

    okay so, whats the actual use? saves performace?

  • @digital0785
    @digital0785 8 месяцев назад

    big heart for jordy

  • @elchampion4658
    @elchampion4658 7 месяцев назад

    instead of doing the "drill check" wouldn't a binary search be better, so start at 0.5 then go half the way in the direction that it hints?

  • @Shellnanigans
    @Shellnanigans 8 месяцев назад +1

    thank you!

  • @anshbhilare9565
    @anshbhilare9565 6 месяцев назад

    Only if there was a way to get pixel depth offset too, it would be perfect

  • @_BeKind
    @_BeKind 8 месяцев назад

    Is there a way of blurring the edges of an image texture into eachother to make a short fake seemless texture with nodes? Might be a cool experiment

  • @NotJustCreative
    @NotJustCreative Месяц назад

    I'm late for this party. Is there a way to remove those fringes or whatever it is called that makes it look like it's sliced?

  • @MateHomolya
    @MateHomolya 8 месяцев назад

    You could say this is like a ray marching algorithm but with Blender geometry nodes

  • @anthonyzornig
    @anthonyzornig 8 месяцев назад

    Thx for sharing!

  • @wsg1231
    @wsg1231 8 месяцев назад

    funny for me it's heavier to use displacement texture as for using this method Is it just because displacement uses experimental subdev?

  • @deloeste33
    @deloeste33 8 месяцев назад

    I'm following the steps until 6:52 when suddenly appeared a group called Depth, and I'm not sure how that was created. Help!

  • @quanke0801
    @quanke0801 8 месяцев назад

    Doing loops in blender node editor is a nightmare. We have osl script node available but then lose the ability to run on GPU 😅

  • @worry74147
    @worry74147 8 месяцев назад

    Thank you very much :D

  • @FerGalicia
    @FerGalicia 8 месяцев назад

    Bravo sir!

  • @SwaggyProductions18
    @SwaggyProductions18 8 месяцев назад

    Hey, I saw that your Blender speed while making animations is very quick and has good quality. What laptop or PC do you use?

  • @PCgmesforever
    @PCgmesforever 8 месяцев назад

    Really cool. It got me wondering tho. Could we get rid of the "layered" effect somehow ? Like calculating what the normal should be in-between based on previous plans next layer ?

    • @edwardevans1498
      @edwardevans1498 8 месяцев назад +2

      that's what parallax occlusion mapping does, it's also a difference between POM and Steep parallax mapping, I'm not sure if he implemented this

  • @autonk6217
    @autonk6217 8 месяцев назад

    omg omg omg omg tysm tysm tysm tysm

  • @TheTurt1e9
    @TheTurt1e9 8 месяцев назад

    I’ve spent some time trying to use this technique to represent windows of a building similar to the ones in the Spider-Man games. Any ideas pointers you’d be able to share?

  • @jmalmsten
    @jmalmsten 8 месяцев назад

    Looks great... Now... Is there a plugin that gives me that with a single node? 😅
    I mean, if that node tree works for any plane. Then it should be collapsible for ease of use and minimizing any risks of user error?
    Also. Doing that operation 20 times makes me wonder, is there no way to do for-loops in blender?

  • @tobiashagstrom4168
    @tobiashagstrom4168 6 месяцев назад

    There is a lot of talk about Z-axis coordinates here, does that mean this only works this way on surfaces that are flat horizontal?

  • @joshualegallais513
    @joshualegallais513 8 месяцев назад

    That was amazing

  • @conrad6071
    @conrad6071 8 месяцев назад

    we really need loop nodes in blender shader editor

    • @MrMoon-hy6pn
      @MrMoon-hy6pn 8 месяцев назад

      Also a way to supply a texture for a node group without having to duplicate and faff around inside if it has a texture dependency. I think a sampling node would be super handy, basically it would act like the current texture node but allow a user to input any texture to a socket. Splitting the job of the texture node in two. It would enable a more user friendly interface, and allow for advanced coordinate manipulation. I doubt it’ll happen but I can dream.
      I also want a proper way to get per light information into a material for better npr shaders. Shader to rgb works but it’s limited and pretty clunky. That’s a whole nother can of worms though.

  • @coder0xff
    @coder0xff 8 месяцев назад

    Ray marching shader next?

  • @huseyinpehlivan6072
    @huseyinpehlivan6072 8 месяцев назад

    Okey thats nice but how can we writing this data to depth buffer

  • @epicjonny155
    @epicjonny155 6 месяцев назад

    can you try to release a blend file of the node?

  • @MirceaKitsune
    @MirceaKitsune 8 месяцев назад

    I use Blender for ages and never checked if this is possible. Granted the setup is too complex for something I'd use normally: Would be great if this was builtin!

  • @thomas7726
    @thomas7726 5 месяцев назад

    😮 Why use bump or normal map insted this parallax?

  • @onjofilms
    @onjofilms 8 месяцев назад

    For those that want to listen to this normal speed, change to .75 playback.

  • @SirWrender
    @SirWrender 8 месяцев назад +1

    So let me see if I'm understanding this correctly, cuz the difference between parallax mapping and displacement mapping is confusing.
    Traditional displacement mapping actually displaces the geometry. I'm not sure about Cycles/Eevee, but in Octane Render it's displacing the surface at the render level rather than actually displacing the polygons themselves. That's how you can have high quality displacement with a low poly model. I've always seen this as a great way to get height detail without overloading a scene.
    It seems parallax mapping seems to imitate displacement mapping without actually displacing anything. Kind of like how bump/normal maps create the illusion of surface detail, but when you look at the edges of the model, it's still smooth and flat. It seems this parallax method would similarly break down when you're looking along the tangent of a surface. I'd imagine it's less computationally expensive though, so it'd render way faster. Interesting. Nice tutorial!

  • @vagneralmada7804
    @vagneralmada7804 8 месяцев назад

    In 8:36 he did not connect the 0.8, he jumped from .6 to 1 in the comparations

  • @iKaGe01
    @iKaGe01 8 месяцев назад

    I understand why it works but no way could I figure out why you would so it the way you do it and with which nodes etc on my own haha

  • @lovergun4360
    @lovergun4360 7 месяцев назад

    uhh.. im sorry i cant understand the what is 'depth' group node?? how make that?

  • @infectioussneeze9099
    @infectioussneeze9099 8 месяцев назад

    so you've achieved POM, now how about PDO with shadows so it interacts with other objects and not look flat uppon intersection?

    • @edwardevans1498
      @edwardevans1498 8 месяцев назад

      self shadows should be possible but I don't think you can have correct shadows from other objects without depth offset

  • @kelajuan_
    @kelajuan_ 8 месяцев назад

    How to add more than one POM texture in a blend file, since multiple materials share the same height map group?

  • @6amsunset_
    @6amsunset_ 8 месяцев назад +2

    i got whiplash at 9:04

  • @josiahgil
    @josiahgil 4 месяца назад

    does anyone know if the ray portal node can be used to offset a texture's pixels like in ue5 pixel depth offset?

  • @sameeruddin
    @sameeruddin 8 месяцев назад

    excellent stuff as ususal

  • @Redfrog1011
    @Redfrog1011 Месяц назад

    something is wrong with this implementation i think? it seems to change too drastically when camera view angle changes?