"The first 500 people to use my link will get a 1 month free trial of Skillshare" skl.sh/defaultcube05241 the original that i like ➟ blenderartists.org/t/parallax... ❤️ ➟ / cg_matter 🌐 ➟ www.cgmatter.com
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.
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
@@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
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. :)
@@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.
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.
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.
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!
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.
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 :)
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.
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.
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.
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.
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...
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!
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?
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!
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.
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 ?
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?