Super Parallax Addon

Super Parallax - Blender Market

Super Parallax is an addon that allows you to make parallax materials in Cycles & Eevee. The aim is to save time and resources by using parallax shaders instead of subdivisions & displacement.

It works by ‘distorting’ regular texture coordinates to give the illusion of 3D displacement. It also renders the respective silhouettes around objects which creates much more convincing results.

To use it you simply use the parallax vector socket as texture coordinates and control the material transparency with the parallax mask socket.

Main Features

  • Renders silhouettes
  • Works on curved surfaces
  • Linear + binary search algorithm (no banding artefacts)
  • Arbitrary quality/step count
  • Built in mapping (scale, position, rotation)
  • Works from any view angle, not just the camera angle, such as a reflection in Cycles

Limitations

Expand
  • The large node networks take a little longer to compile for Eevee
  • Each object requires its own parallax node unique to its geometry
  • Edges in UV unwrap can produce silhouettes which is useful, but also produce unwanted silhouettes if you haven’t considered how the mesh is unwrapped.

How it Works

Expand

The algorithm is based on several papers and my own experience in graphics. I won’t go into too much detail for obvious reasons : )

Like other parallax shaders, it works by raymarching over the displacement map in tangent space. The ‘quality’ number refers to the number of steps used in raymarching. I went with a linear & binary search algorithm to pin point an accurate intersection on the heightmap. This is because in Blender you can’t terminate the computation of steps once you’ve reached an intersection using linear search (mainly in Cycles); so by using binary search after the intersection, we utilise the left over steps to refine this result.

To render silhouettes the raymarching algorithm considers the curvature of the geometry to determine how the surface bends relative to the view point. This is why the parallax nodes currently have to be unique to each object. The node then determines whether the shaded point should be masked out or not.

Future Plans

Expand

This is my first Blender addon so I’m expecting to find and fix some bugs.

That aside, I’d like to add different methods of parallax mapping: I’m working on a vertex quadric method that should allow a single parallax node to work on any object and produce better edges. Simple, flat parallax mapping with no silhouettes or curvature may also be useful so I may add this in the future.

As far as I’m aware this is the only parallax solution supporting curved surfaces, silhouettes & linear + binary search - so I’m hoping you’ll find it useful!

Feel free to ask questions, report issues or make suggestions : )

9 Likes

i would like to know your thoughts guys about this addon, is this really better than using 3d displacement with an unnecessary heavy polycount, that eats your memory, and render times?..

3 Likes

I’d like to know more about it too. It sounds interesting.

1 Like

There is some free parallax mapping node setup that exists. Better try them before to see the effect in action.
Note: as it s not a real geometry distortion, you ll not be able to constraint objects on surface or other tricks with geometry.
I ve got one example shader on my computer. But actually not in front of it. I ll post it later if you dont find a version before.
At least, I’m not sure that composting masks or layers are out putted correctly.

2 Likes

This look interesting. C4D have option for parallax bump, results vary from case to case. But there is one important thing, silhouette is not changed, although surface look displaced edge are flat, which is clearly visible if you apply this on plane. Super Parallax on the other hand look like “displace” edges.
This can be really savior in some cases. Hope that see this in Blender one day as native bump node.

… I’m curios how Super Parallax react with AO / contact shadows.

1 Like

Parallax mapping which produces shilouettes too is not a new idea. It has more than ten (or maybe even fifteen years) that is around. But it has been remained mostly in papers, in an experimental condition. It has not been used largely. I still am wondering why it is not incorporated as a usual shading choice in most 3D apps.

3 Likes

Maybe because big developers are slow to implement new ideas. Usually they wait until someone implement stuff in his product, then others follow. Also they have “long term development strategy”, simply inertia do not allow them to react fast. Some studios maybe make his in house solutions, but this stuff usually are not publicly available.
Blender on other hand have… limitless number of developers :slightly_smiling_face: without strict develop strategy which limit people to research, think different, try new approach. He, he, maybe Blender wake up big companies, which these days more invest in marketing and other $&@YT#!!! departments than in research and development. Big companies bleed users/customers in big numbers every day.

3 Likes

Thanks for showing interest, I’ve made a thread for it here. Happy to answer any questions : )

2 Likes

hey metin do you want to merge this topic with the another created by the author and remove this one perhaps?

1 Like

Sure, done. :slightly_smiling_face:

1 Like

It won’t affect Cycles AO as it’s not real geometry however a you can use an AO texture and combine it with the Cycles AO.
It doesn’t support self shadowing yet, but normal maps (with parallax) provide convincing results most of the time.
Since there are silhouettes, object shadows in Cycles will actually show the correct displaced outline since the silhouetting works in the shadow calculations.

Yeah this is true @Fatesailor, the technique used in Super Parallax has not been implemented in any other commercial product as far as I’m aware, there was just a paper on it. I’m pretty sure there’s a presentation for UE4 showcasing POM for curved faces & silhouettes, but the geometry had to be a primitive, like a cylinder or sphere. I think some game engines (CryEngine maybe?) use quadric based parallax mapping, which is I’m looking to implement in Super Parallax. Quadrics don’t describe surface curvature as well as my current method but will store surface info as vertex colours instead of in textures, which will be useful.

1 Like

@skuax I’ve tried this one, it’s the best free one in my opinion. The main difference is that it won’t produce silhouettes on curved faces. Due to its fixed low sampling count it won’t pick up the details on high-res displacement maps. I also noticed it suffers from banding artefacts as it’s just a linear + interpolation search. Also don’t think you can map it (scale, position etc).

Quick development/roadmap update: I’m working on another significant update for Super Parallax which will have a new improved parallax method based on local quadric fitting.

The main improvement will be that parallax materials can be shared between mesh objects, which is a big step towards to making this production suitable. It will also have a much lower memory footprint on regular meshes since there are only 4x 32-bit floats per vertex in the mesh. This vertex data will also interpolate with the subdivision-surface modifier, so it should fit into modelling workflows nicely.

Additionally, the UI is getting an overhaul (see preview below). It fits into Blender’s interface more coherently and will offer the use of multiple parallax methods. The texture based parallax method will still be available and perhaps I’ll add a planar parallax method for visually insignificant objects.

I’m also adding the functionality to edit the parallax iterations after creating a parallax node instead of only at creation. I’m also going to reduce the clutter created with node groups as I am aware this can be quite frustrating.

Currently I’m about half way to the new release; I have a basic quadric fitter in place (which I have visualised on Suzanne below) and I have began work on the actual parallax node that will use this data.
image

I can’t really put an accurate release date on this, but I’m fairly confident something will happen before March.

Thanks for showing interest and let me know your thoughts :slight_smile:

4 Likes

Sneak peak at the new parallax shader. :sunglasses: Default sphere with no subdivisions, all the displacement is done in the shader.
sp_quadric_wip

Silhouette method needs refining, however the displacement quality is much better than the previous shader - not to mention it’s much faster and uses less memory.

8 Likes

This was something much needed in Blender!

2 Likes

New version is almost ready, just finishing the docs and setting up some new graphics.

The number of iterations in parallax nodes is now adjustable dynamically and so detail is essentially limited to the texture resolution, which would be very expensive with micro-polygons.

Couldn’t help but share one of the renders done with the parallax shader. This is the default sphere with no sub-divisions, just smooth shading and a parallax node driving a set of photo-scanned textures from TextureHaven:

9 Likes

I’ve been playing around with Substance Designer, and I’m always disappointed how flat my textures end up looking comparatively when I port them from there into Blender.

So I decided to read up on parallax mapping in Eevee. Found this thread. Thought the screenshots looked cool, so I decided to take a chance, and bought it off Blender Market.

After glancing through the instructions, and playing with it for 5 minutes, it now ranks up there among my most favorite addons ever. My textures now look the way I want them to, and that’s awesome.

2 Likes