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.
- 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
- 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
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.
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 : )