Some of my OpenGL based Node additions to Mari such as Noises, Adjustment Layers etc. 

MARI Extension Pack only:

The following tools are now only available as part of MARI EXTENSION PACK and no longer as single downloads:

Adjustment Layers

The Histogram Scan Node is very similar in behavior to a Mari Contrast Node but lets you work with values you are familiar with from Allegorithmic's Substance Designer.

The setRange Adjustment is a value remapping tool similar to Maya's setRange Hypershade Node.

It is in behavior similar to a Levels Adjustment and is useful for example to set correct displacement heights etc.

The Grade+ Node is based on Mari's default Grade Node with a few modifcations to get it more in line with Nuke's Grade Node.

Posterize  Filter will reduce the number of incoming colors + values to an amount specified by the user.

The Threshold Adjustment is used to clip any value to either black or white based on a midpoint set via the Threshold Slider and a tolerance.

The Vibrance Adjustment increases saturation on colors. Other than a regular Saturation Filter it works based on a curve - saturating colors with lower saturation first before moving on to higher saturated colors. This helps unifying overall saturation without value clipping.

The SV Lookup (short for 'Saturation/Value' ) Adjustment Node  allows you to change Saturation and Value of Colors along curves, effectively remapping the Saturation and Value separately.

Computation is done in Hue/Saturation/Value instead of the usual Red/Green/Blue.

The Color Temperature Adjustment Node lets you adjust the color of the underlying layers by multiplying them by the color of a blackbody at user chosen temperature. This aims to give you a similar look and feel to a color temperature adjustment found in tools such as lightroom or camera raw.

Color Range to Mask  is a powerful color selection & grading tool.

It allows for up to 8 colors to be sampled (4 additive / 4 subtractive) complete with auto-selection enhancements and grading of selected colors

The Edge from Normal Map Adjustment Layer will detect curvature & edges from layers below the adjustment, such as a tangent space normal map.

Sometimes it is important to work in a fixed value range.

Illegal Value Warning gives you a visual warning for color values outside a defined min/max range similar to what some more professional monitors offer.

The RGB to HSV and HSV to RGB Adjustment Nodes allow you to convert your image data from and to HSV Space (Hue Saturation Value).

The RGB to HSL and HSL to RGB Adjustment Nodes allow you to convert your image data from and to HSL Space (Hue Saturation Lightness).

Allows you to convert your Tangent Space Normal Map into Mari's Normal Space so it can be used with a variety of standard Mari Nodes in the Nodegraph that offer a Normal Handle.

basic nodes

During Texturing you will find you will constantly require a solid black, white or grey layer - as a base for masks, for displacements etc.

These nodes consist of three handy preset constants to make creating a solid layer easier than having to create a color node each time and manually setting it.

The Normal Color Node will generate a neutral Tangent Space Color in linear (0.214,0.214,1.0) or (0.5,0.5,1.0) sRGB Colorspace

The Float Node allows you to set a value to be output.

For convenience different types of Inputs (Textfield, Spinbox, 0-1 Slider, 0-10 Slider, 0-100 Slider, 0-1000 Slider) are available.

Geometry Nodes

Axis Mask lets you easily mask an object based on world or user-defined directions.

Backface Mask will try to create a mask based on opposite normals.

The Custom Surface Normal Node is a variation of Mari's default 'Surface Normal' Node.

Howeverit has added options to change the normal orientation.

The Polysurface Curvature Node will detect your models curvature and output a mask

Selection Fill will fill your current selection with the color specified in the node.

Your current selection is determined by Mari's Selection Mode, such as Object, Patches or Faces:

environment nodes

Texture Scatter 2D is a complex texture bombing node, working in UV Space.

It is capable of generating seamless textures up to 32k resolution on any regular plane with full UV coverage.

Axis Projection is similar to a Triplanar projection but gives more control over projection orientation by isolating the positive & negative part of each axis.

In addition it allows you to rotate all axis globally for cases where your object is not perfectly aligned in X, Y and Z.

Cylindrical Projection will project your image using cylindrical texture coordinates to avoid seams and ugly blending on objects such as wheels, trees, barrels etc.

The Image Node or Layer can be used to load an Image in the Layerstack or Nodegraph.

It is a stripped down version of a Mari 'Tiled' Node without the UV Transformation options

that the 'Tiled' Node offers and is thereby a faster node in itself.

It can be used together with the 'Manifold UV' Node in the Nodegraph to turn it into a full 'Tiled' Node again.

The World Space Radial Gradient Node will create a 3d radial gradient in around a defined point in your scene.


A manifold is a node to transform coordinates such as Position + Normal resulting in a change of scale, translation or rotation.

All Extension Pack Procedurals have a 'Manifold' connection in the Nodegraph to attach this to, standard Mari Nodes if they are supported usually have a 'Position' Input that is compatible

Manifold 3D by default uses your objects Position Data as a coordinate system but the coordinate system can be changed by mapping the '3D Coordinates' Connection in the Nodegraph.

Manifold UV is used to change scale, offset and rotation of 2D Coordinates (UV Coordinates).

All Extension Pack Procedurals have a 'Manifold' connection in the Nodegraph to attach this to.

Standard Mari Nodes if supported have a 'UV' connection that is compatible, although Nodes with

a 'Position' Input work as well.

When attaching a Manifold UV node to another node, the target node will be evaluated in UV Space instead of its default Space. The behavior is the same as checking the 'UV Space' Checkbox in a Extension Pack Procedural but the Manifold UV Node can be used to modify multiple Nodes at once.

layering nodes

The Mix Node provides simple linear interpolation functionality for two values via a mix value.

The two values can be set in the Node properties or input via graph connections.

The Transition Node provides a simple toolset to the Nodegraph to add detail into the transition of mask edges.

The Mask from Curvature Node is an Image processing Node designed to create edge wear effects.

The Input Switch will switch between 4 Inputs based on a step value provided by the 'Case Selection' Connection

The Simple Input Switch lets you toggle between two inputs via a checkbox.

This is useful for setting up and exposing attributes to gizmos that need to disable certain parts of a node network (turn damage on/off etc.)


FBM+ is a different implementation of Fractal Brownian Motion with an algorithm taken from the book Advanced Renderman for closer conformity with Renderman based pipelines

Multi FBM is a freely configurable multiFractal. It consists of 3 different Noises - a main FBM ('Base') and 2 secondary ones ('Handle A' , 'Handle B') that can be used to drive any attribute from the 'Base' Noise.

Vector FBM ('Vector Fractal Brownian Motion') is similar to FBM+ but with an additional directional component, giving more organic results.

Spotify is a versatile MultiFractal for applications in terrain and weathering.

Voronoi Popcorn is a cellular based procedural that runs through a fractalization process, meaning that there two different stages to the procedural: Generating a Voronoi/Cellular, then using the result as a base value in a regular noise routine.

It is very useful to create cracks and the procedural is optimized for displacement and bump usage.

Legacy Noises are duplicates of noises & procedurals that ship with MARI but have been modified and extended with more control options such as Transform (Scale,Offset, Rotate), optional noise creation in UV Space etc.

The pack includes the Noise Nodes: Cloud, Squiggle,Turbulence,Perlin & Cellular.

material regions & Shaders

Material Regions are a system to layer Materials on top of each other (Dust over Rust over Metal etc.) while providing a logical grouping in the Nodegraph.

Other than a Layered Shader a Material Region does not compute any shading. It is layering the effectsof each channel (diffuse, spec, bump etc.) from the current region over the effects of each channel from the previous region. In the end a material region chain outputs each combined channel into a channel for export.

Nodes to convert map types from one common PBR shader workflow to another.

Unreal Advanced is a BRDF Shader closely resembling Unreal Engine's BRDF in look and handling.

This allows for full material development for Unreal Engine inside of Mari with as close as possible results to what you will see in-engine.

The Unreal Advanced Shader is a progression from the Unreal Shader included in Mari Indie 2.6v5 with additional features such as

  • Warnings when painting illegal values that would break physically based shading
  • Sliders for Values (will be overwritten when corresponding slot is mapped)
  • Emissive Color
  • Flat+Basic Lighting Modes will return BaseColor instead of black when metallic is 1