This BSDF is so simple but utterly insane. I don't think the guy who casually dropped that into the code out of nowhere was quite aware of how much this allows us to do.
Hi, author here :) I was aware that this is very powerful, as it is such a basic building block, but I have no idea what people will use it for. The original motivation was getting passes through a refraction for VFX, and I definitely thought about fancy perspective shifts like black-hole effects and lens simulations that should be possible with this. I did not anticipate the sort-of-parallax thing though.
@@david_for_you_ Hey, I can tell you, that I'll use it for architectural vizualisations. This is perfect for showing more realistic large scale buildings. Thank you so much.
@@hugoschumann1854 just curious, im using blender for archi work as well, what do you mean by this? you can already get orthographic representations with cameras although that was the first thing i thought of when i saw the video too
This is so so so useful: - This could be used for NPR lighting, portal from the complex geometry to a simpler mesh lit by it's own lights elsewhere in the scene out of view - TV screens without the need for packing video frames into a texture or post-render compositing - Fake deformation like the sphere in the video could be used to do that Inception effect of the city bending on itself without actually deforming tons of geometry for real - Cheaper character rig deformation by having low poly rigged geometry portal to a static high poly character
9:48 To save everyone from the whole having-to-use-drivers-to-undo-object-rotations-business, you can just use Texture's Coordinate's Normal output instead of Geometry's.
That's the main difference between them, Texture Coordinate's is object-space, a.k.a. it's invariant to object transforms, while Geometry's is world-space, so it changes as the object rotates.
wait a minute. you could literally plug in a height map into the vector math node you use to define the perspective. if you invert it, it will act as if the camera is looking "down" a different heights based on the displacement/height map.
I wonder how something like this is going to impact the performance of a game. Instead of the usual parallax to use a similar technique and point to an actual 3D interior hidden somewhere under the map then apply this to multiple windows.
@@Kiwi-Araga for Path Tracing it's kinda straight forward, just involving an extra transparency path, but for Raster Rendering, I'm pretty sure this would involve either duplicating geometry, or having multiple cameras which separately render out the image. There are definitely reasons why this isn't normally done in that setting.
This is some Doctor Strange business. If Render Textures are flat projections of what a camera sees onto a plane or a polygon(s) of a model, then Ray Portal BSDF is like turning a plane or a polygon into its own camera and/or window. This is insane. We live in an era where this stuff exists.
@@Kiwi-Araga That's how Spider-Man 2 works on PS5, you have rooms in every building, and through those rooms you can see other rooms. They have NPC's moving around in them too. Of course things fall apart when you move around corners and the same room from two angles is two different rooms, but it's still incredibly effective. Spider-Man and Miles Morales had simpler parallax based system, but Spider-Man 2's solution is far more impressive. As for performance, it's able to do that with hundreds of instances at 60fps with ray-traced shadows and reflections on the glass. It's insane! Digital Foundry did a tech breakdown/discussion with one of the game's developers and although they don't show BTS, with a working knowledge of stuff like this, you can get the jist.
This would make it easier to animate 3D televisions without having to do separate rendering, saving hours... days... potentially weeks of rendering and post processing!
finally it's possible to render a novel vantage point in the scene to a plane! You can make CCTV survelliance, portals and non-euclidian space illusions in a single render!
16:00 You aren't multiplying by matrix here, you're multiplying by it's transpose. Direct multiplication is v.x * m.xvec + v.y * m.yvec + v.z * m.zvec, not the dot products.
This is amazing. My question is how much does it help performance? Say I use it ith a building to replicate a 3d office on every single window of the building. Would it just process the one office and all the window polygons or would it also process the "new" offices that you can see with this node?
This is great for so many things. The first thing I thought of was I wonder how this compares to the parallax method (like what you were building) for things like faux 3D rooms in windows, like you see in video games and stuff. With this version, you could create 5 or so rooms that you keep somewhere out of view, and make copies of this node tree that's mapped to look into each room, and put those texture on the windows. You might also want to make copies for each direction the windows face, because then it'll capture the sun lamp coming through the windows as well. This way you'd get nice, accurate lighting and real depth in the rooms, but it's essentially instancing and only calculating the lighting once and multiplying that for each window. Would be interesting to see the difference in quality vs performance. Also, being able to have actual portal and stuff is fantastic.
I actually made an addon for architecture that depends on classic parallax techniques with some spice , this trick will be insane if you can hide viewlayers for example and drive the rooms with geonode and create fake interiors but in realistic lighting all across the town for example !!! , holy spagetti it will be insane 😀
In LightWave you can use a sphere (or any geometry witha UV map) and project outwards to make an HDR map, can you use this for that? It was a very useful feature
That Incoming to Tangent space converter is quite nice and exactly what I was looking for. So I got a plane which is basically always looking down no matter how I move and rotate it. I just cannot figure out for the life of me how to rotate this view so that the plane is always looking to the left or always looking to the right, no matter how I move and rotate it. I tried it with Vector Rotate etc. but it mostly gives only distorted results.
@@A000803323 Yes, actually I have. I have created a Geometry Nodes setup where you can choose if you want the portal to reference a different object for the portal's "viewing orientation" or if you want to manually enter values. The resulting location and rotation will then be used in the portal material. But it is a bit too complex to explain it here, and unfortunately I cannot post pictures or links in the comments.
bro, this update gives the possibility for a robot being able to display anything AND I MEAN ANYTHING for its face eyes and just easily swap to something else, video, objects ANYTHING
HOLY HELL, I almost jumped up when I saw the moving preview of this video. I was like "I NEED THIS" Edit: I have so much ideas, this unlocked so much things for my adhd brain
I'm just getting into Blender (literally just made my first donut the other day), but this seems like it'd be a really simple (cheap) way to do a fake water simulation, yeah? Something like applying an animated wave distortion to the Ray Portal BSDF (or the plane's geometry) and caustics to the original geometry? It'd probably never offer the same realism as an actual water sim, but it seems like it'd do well for smaller, calmer bodies of water viewed from limited directions
This allows for crazy fast sprite generation, if you consider the cube+negative normal example. If that cube then was unwrapped to look like a sprite sheet, you could render all angles of a given srpite, at once. And if you used something like a n-sided cylinder, you end up with even more angles, at once. Kinda wild
OHHHH I'VE GOT IDEAS... 4:17 this just made me think not only could this be good for mapping images, windows or portals. it can also be a good way to create a TV effect where you have a monitor and have it display another part of the scene basically doing 2 things at once. (I don't believe in current versions for this to be possible however this Ray portal node will change SOOOO much)
I've been waiting for something like this for so long, genuinely awesome- Especially since it'll allow for SUPER realistic black hole visualizations (stacked planes w/ some """velocity""" data baked into the texture itself)
This is HUGE. Thanks a lot for the video. I've wanted to use this for so long but I didn't want to buy some add-on or get a PhD in Blender Nodes to get this effect.
wait... Did blender just achieved nDisplays from Unreal, but in Blender? This has a HUGE meaning for projection mapping and mapping shows if that s the case!
I started playing w/this a bit wondering if a ray portal could see another ray portal, and unless I'm doing it wrong, it appears not. 🙁 EDIT: OK, I may have got it to work.... still playing.
Here's my question, can we use an object as that camera, in geometry nodes with attributes? [Skull asks the leading question as to imply that he wants a tutorial on that]
It is really differend from parallax mapping anyway. You can't use this portal nodes for materials because image in the portal isnot affected by lights around the portal
Can't we use this to make some sort of simulated camera inside blender? Then maybe use it to broadcast something else on a tv? better yet save said camera to use for all kinds of portal things? an empty as the center point, a plane as the end of the camera, and moving the plane would change the POV? Maybe probably?
You don't need to use vector rotate + drivers, instead use the vector transform node, to transform from world space to object space. Edit: Or as another comment said, use the normal from texture coordinates instead of geometry, which is in local space.
I spent hours trying to fake this effect with the sky/environmental shaders. Since the old portal method with layers and composite tricks was lacking. But this is exactly what i needed.
I imagine this would make possible virtual cameras like we have in raster engines, where you can place a camera anyewhere in the scene and display what that camera sees on a surface, say a TV screen?
A GDC presentation on Quaternions dropped this week which helped me get an understanding of what/how/why they are useful. As you created your tangent space equation my brain woke up when you used the dot produce of each… I wanted to ask is the dot product -1 to 1 serving as your “weight” here?
in general these just line up with x,y,z components of new vector (all normalized so ya, -1 to 1) - but in general dot product is just the sum of the products
this new node hurts my head, Math was not my thing at school and still is not, im trying to work out a simple way to do this, it seems to be very heavy maths
How are you able to track the location of the object you are viewing (e.g. Suzanne), if the object is moving. Position always points at 0,0,0 unless you modify it with something like an add node, so if you move Suzanne she disappears from the viewing zone of the portal. Using geometry nodes store the location as an attribute and plugging that attribute into the vector add node in the shader window doesn't seem to work.
What a coincidence... I'm currently enjoying and at the same time finding it confusing to play with the parallax effect in Blender, and then this video came out.
Could you theoretically create building windows with this, perhaps linking to a geonode based interior off to the side? I wonder how the performance would do rendering that many instances.